From 4153c699111c9e89d6ccbc0b94f251dd47b0a9a3 Mon Sep 17 00:00:00 2001 From: hasan Date: Thu, 29 Feb 2024 17:56:37 +0600 Subject: [PATCH 1/3] Add optional output_parser param in create_react_agent --- libs/langchain/langchain/agents/react/agent.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libs/langchain/langchain/agents/react/agent.py b/libs/langchain/langchain/agents/react/agent.py index 93709fca65bbdd..a818a6608e74c3 100644 --- a/libs/langchain/langchain/agents/react/agent.py +++ b/libs/langchain/langchain/agents/react/agent.py @@ -1,19 +1,23 @@ from __future__ import annotations -from typing import Sequence +from typing import Optional, Sequence from langchain_core.language_models import BaseLanguageModel from langchain_core.prompts import BasePromptTemplate from langchain_core.runnables import Runnable, RunnablePassthrough from langchain_core.tools import BaseTool +from langchain.agents import AgentOutputParser from langchain.agents.format_scratchpad import format_log_to_str from langchain.agents.output_parsers import ReActSingleInputOutputParser from langchain.tools.render import render_text_description def create_react_agent( - llm: BaseLanguageModel, tools: Sequence[BaseTool], prompt: BasePromptTemplate + llm: BaseLanguageModel, + tools: Sequence[BaseTool], + prompt: BasePromptTemplate, + output_parser: Optional[AgentOutputParser] = None ) -> Runnable: """Create an agent that uses ReAct prompting. @@ -21,6 +25,7 @@ def create_react_agent( llm: LLM to use as the agent. tools: Tools this agent has access to. prompt: The prompt to use. See Prompt section below for more. + output_parser: AgentOutputParser for parse the LLM output. Returns: A Runnable sequence representing an agent. It takes as input all the same input @@ -101,12 +106,13 @@ def create_react_agent( tool_names=", ".join([t.name for t in tools]), ) llm_with_stop = llm.bind(stop=["\nObservation"]) + output_parser = output_parser or ReActSingleInputOutputParser() agent = ( RunnablePassthrough.assign( agent_scratchpad=lambda x: format_log_to_str(x["intermediate_steps"]), ) | prompt | llm_with_stop - | ReActSingleInputOutputParser() + | output_parser ) return agent From a7897c33a1e5f1d05d4562cc0a14bea56f35624a Mon Sep 17 00:00:00 2001 From: hasan Date: Thu, 29 Feb 2024 18:08:26 +0600 Subject: [PATCH 2/3] Format file to fix build error --- libs/langchain/langchain/agents/react/agent.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/langchain/langchain/agents/react/agent.py b/libs/langchain/langchain/agents/react/agent.py index a818a6608e74c3..c696e3803ff8c5 100644 --- a/libs/langchain/langchain/agents/react/agent.py +++ b/libs/langchain/langchain/agents/react/agent.py @@ -14,10 +14,10 @@ def create_react_agent( - llm: BaseLanguageModel, - tools: Sequence[BaseTool], - prompt: BasePromptTemplate, - output_parser: Optional[AgentOutputParser] = None + llm: BaseLanguageModel, + tools: Sequence[BaseTool], + prompt: BasePromptTemplate, + output_parser: Optional[AgentOutputParser] = None ) -> Runnable: """Create an agent that uses ReAct prompting. From fd2329cb1df1f9550479ca0ee57150895bfcb68d Mon Sep 17 00:00:00 2001 From: hasan Date: Thu, 29 Feb 2024 18:13:11 +0600 Subject: [PATCH 3/3] Format file to fix build error --- libs/langchain/langchain/agents/react/agent.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/langchain/langchain/agents/react/agent.py b/libs/langchain/langchain/agents/react/agent.py index c696e3803ff8c5..f1aa769dc40040 100644 --- a/libs/langchain/langchain/agents/react/agent.py +++ b/libs/langchain/langchain/agents/react/agent.py @@ -17,7 +17,7 @@ def create_react_agent( llm: BaseLanguageModel, tools: Sequence[BaseTool], prompt: BasePromptTemplate, - output_parser: Optional[AgentOutputParser] = None + output_parser: Optional[AgentOutputParser] = None, ) -> Runnable: """Create an agent that uses ReAct prompting.