From 0210fc4a8043d8d1c1d3ddf2415df463ed809f3e Mon Sep 17 00:00:00 2001 From: Matt Lindsey Date: Tue, 12 Nov 2024 12:06:14 -0500 Subject: [PATCH] rename var --- README.md | 4 +-- examples/assistant_chat.rb | 2 +- lib/langchain/assistant.rb | 26 +++++++------- spec/langchain/assistant/assistant_spec.rb | 40 +++++++++++----------- 4 files changed, 36 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index ec2442890..75e434649 100644 --- a/README.md +++ b/README.md @@ -512,7 +512,7 @@ assistant.add_message_and_run!( messages = assistant.messages # Run the assistant with automatic tool execution -assistant.run(auto_tool_execution: true) +assistant.run(execute_tools: true) # If you want to stream the response, you can add a response handler assistant = Langchain::Assistant.new( @@ -524,7 +524,7 @@ assistant = Langchain::Assistant.new( # print(response_chunk.inspect) end assistant.add_message(content: "Hello") -assistant.run(auto_tool_execution: true) +assistant.run(execute_tools: true) ``` Note that streaming is not currently supported for all LLMs. diff --git a/examples/assistant_chat.rb b/examples/assistant_chat.rb index 681c687fd..dfce8a4ff 100644 --- a/examples/assistant_chat.rb +++ b/examples/assistant_chat.rb @@ -51,7 +51,7 @@ def prompt_for_message break end - assistant.add_message_and_run content: user_message, auto_tool_execution: true + assistant.add_message_and_run content: user_message, execute_tools: true puts assistant.messages.last.content end rescue Interrupt diff --git a/lib/langchain/assistant.rb b/lib/langchain/assistant.rb index 279a246ac..4ed5ef748 100644 --- a/lib/langchain/assistant.rb +++ b/lib/langchain/assistant.rb @@ -129,9 +129,9 @@ def add_messages(messages:) # Run the assistant # - # @param auto_tool_execution [Boolean] Whether or not to automatically run tools + # @param execute_tools [Boolean] Whether or not to automatically run tools # @return [Array] The messages - def run(auto_tool_execution: false) + def run(execute_tools: false) if messages.empty? Langchain.logger.warn("#{self.class} - No messages to process") @state = :completed @@ -139,7 +139,7 @@ def run(auto_tool_execution: false) end @state = :in_progress - @state = handle_state until run_finished?(auto_tool_execution) + @state = handle_state until run_finished?(execute_tools) messages end @@ -148,17 +148,17 @@ def run(auto_tool_execution: false) # # @return [Array] The messages def run! - run(auto_tool_execution: true) + run(execute_tools: true) end # Add a user message and run the assistant # # @param content [String] The content of the message - # @param auto_tool_execution [Boolean] Whether or not to automatically run tools + # @param execute_tools [Boolean] Whether or not to automatically run tools # @return [Array] The messages - def add_message_and_run(content: nil, image_url: nil, auto_tool_execution: false) + def add_message_and_run(content: nil, image_url: nil, execute_tools: false) add_message(content: content, image_url: image_url, role: "user") - run(auto_tool_execution: auto_tool_execution) + run(execute_tools: execute_tools) end # Add a user message and run the assistant with automatic tool execution @@ -166,7 +166,7 @@ def add_message_and_run(content: nil, image_url: nil, auto_tool_execution: false # @param content [String] The content of the message # @return [Array] The messages def add_message_and_run!(content: nil, image_url: nil) - add_message_and_run(content: content, image_url: image_url, auto_tool_execution: true) + add_message_and_run(content: content, image_url: image_url, execute_tools: true) end # Submit tool output @@ -233,12 +233,12 @@ def validate_tool_choice!(tool_choice) # Check if the run is finished # - # @param auto_tool_execution [Boolean] Whether or not to automatically run tools + # @param execute_tools [Boolean] Whether or not to automatically run tools # @return [Boolean] Whether the run is finished - def run_finished?(auto_tool_execution) + def run_finished?(execute_tools) finished_states = [:completed, :failed] - requires_manual_action = (@state == :requires_action) && !auto_tool_execution + requires_manual_action = (@state == :requires_action) && !execute_tools finished_states.include?(@state) || requires_manual_action end @@ -250,7 +250,7 @@ def handle_state when :in_progress process_latest_message when :requires_action - execute_tools + _execute_tools end end @@ -323,7 +323,7 @@ def set_state_for(response:) # Execute the tools based on the tool calls in the last message # # @return [Symbol] The next state - def execute_tools + def _execute_tools run_tools(messages.last.tool_calls) :in_progress rescue => e diff --git a/spec/langchain/assistant/assistant_spec.rb b/spec/langchain/assistant/assistant_spec.rb index fe291bd33..26e74c401 100644 --- a/spec/langchain/assistant/assistant_spec.rb +++ b/spec/langchain/assistant/assistant_spec.rb @@ -223,7 +223,7 @@ } end - context "when auto_tool_execution is false" do + context "when execute_tools is false" do before do allow(subject.llm).to receive(:chat) .with( @@ -241,14 +241,14 @@ end it "runs the assistant" do - subject.run(auto_tool_execution: false) + subject.run(execute_tools: false) expect(subject.messages.last.role).to eq("assistant") expect(subject.messages.last.tool_calls).to eq([raw_openai_response["choices"][0]["message"]["tool_calls"]][0]) end it "records the used tokens totals" do - subject.run(auto_tool_execution: false) + subject.run(execute_tools: false) expect(subject.total_tokens).to eq(109) expect(subject.total_prompt_tokens).to eq(91) @@ -256,7 +256,7 @@ end end - context "when auto_tool_execution is true" do + context "when execute_tools is true" do let(:raw_openai_response2) do { "id" => "chatcmpl-96P6eEMDDaiwzRIHJZAliYHQ8ov3q", @@ -299,7 +299,7 @@ end it "runs the assistant and automatically executes tool calls" do - subject.run(auto_tool_execution: true) + subject.run(execute_tools: true) expect(subject.messages[-2].role).to eq("tool") expect(subject.messages[-2].content).to eq("4.0") @@ -309,7 +309,7 @@ end it "records the used tokens totals" do - subject.run(auto_tool_execution: true) + subject.run(execute_tools: true) expect(subject.total_tokens).to eq(134) expect(subject.total_prompt_tokens).to eq(121) @@ -590,7 +590,7 @@ } end - context "when auto_tool_execution is false" do + context "when execute_tools is false" do before do allow(subject.llm).to receive(:chat) .with( @@ -607,14 +607,14 @@ end it "runs the assistant" do - subject.run(auto_tool_execution: false) + subject.run(execute_tools: false) expect(subject.messages.last.role).to eq("assistant") expect(subject.messages.last.tool_calls).to eq([raw_mistralai_response["choices"][0]["message"]["tool_calls"]][0]) end it "records the used tokens totals" do - subject.run(auto_tool_execution: false) + subject.run(execute_tools: false) expect(subject.total_tokens).to eq(109) expect(subject.total_prompt_tokens).to eq(91) @@ -622,7 +622,7 @@ end end - context "when auto_tool_execution is true" do + context "when execute_tools is true" do let(:raw_mistralai_response2) do { "id" => "chatcmpl-96P6eEMDDaiwzRIHJZAliYHQ8ov3q", @@ -664,7 +664,7 @@ end it "runs the assistant and automatically executes tool calls" do - subject.run(auto_tool_execution: true) + subject.run(execute_tools: true) expect(subject.messages[-2].role).to eq("tool") expect(subject.messages[-2].content).to eq("4.0") @@ -674,7 +674,7 @@ end it "records the used tokens totals" do - subject.run(auto_tool_execution: true) + subject.run(execute_tools: true) expect(subject.total_tokens).to eq(134) expect(subject.total_prompt_tokens).to eq(121) @@ -938,7 +938,7 @@ } end - context "when auto_tool_execution is false" do + context "when execute_tools is false" do before do allow(subject.llm).to receive(:chat) .with( @@ -952,14 +952,14 @@ it "runs the assistant" do subject.add_message(role: "user", content: "Please calculate 2+2") - subject.run(auto_tool_execution: false) + subject.run(execute_tools: false) expect(subject.messages.last.role).to eq("model") expect(subject.messages.last.tool_calls).to eq([raw_google_gemini_response["candidates"][0]["content"]["parts"]][0]) end end - context "when auto_tool_execution is true" do + context "when execute_tools is true" do let(:raw_google_gemini_response2) do { "candidates" => [ @@ -999,7 +999,7 @@ subject.add_message(role: "user", content: "Please calculate 2+2") subject.add_message(role: "model", tool_calls: raw_google_gemini_response["candidates"][0]["content"]["parts"]) - subject.run(auto_tool_execution: true) + subject.run(execute_tools: true) expect(subject.messages[-2].role).to eq("function") expect(subject.messages[-2].content).to eq("4.0") @@ -1146,7 +1146,7 @@ end end - context "when auto_tool_execution is false" do + context "when execute_tools is false" do before do allow(subject.llm).to receive(:chat) .with( @@ -1160,7 +1160,7 @@ it "runs the assistant" do subject.add_message(role: "user", content: "Please calculate 2+2") - subject.run(auto_tool_execution: false) + subject.run(execute_tools: false) expect(subject.messages.last.role).to eq("assistant") expect(subject.messages.last.tool_calls).to eq([raw_anthropic_response["content"].last]) @@ -1178,7 +1178,7 @@ end end - context "when auto_tool_execution is true" do + context "when execute_tools is true" do let(:raw_anthropic_response2) do { "role" => "assistant", @@ -1229,7 +1229,7 @@ tool_calls: [raw_anthropic_response["content"].last] ) - subject.run(auto_tool_execution: true) + subject.run(execute_tools: true) expect(subject.messages[-2].role).to eq("tool_result") expect(subject.messages[-2].content).to eq("4.0")