diff --git a/libs/langchain/langchain/agents/json_chat/base.py b/libs/langchain/langchain/agents/json_chat/base.py index ce41f2d296..ecf4ce7f7c 100644 --- a/libs/langchain/langchain/agents/json_chat/base.py +++ b/libs/langchain/langchain/agents/json_chat/base.py @@ -155,7 +155,7 @@ def create_json_chat_agent( ) """ # noqa: E501 missing_vars = {"tools", "tool_names", "agent_scratchpad"}.difference( - prompt.input_variables + prompt.input_variables + list(prompt.partial_variables) ) if missing_vars: raise ValueError(f"Prompt missing required variables: {missing_vars}") diff --git a/libs/langchain/langchain/agents/openai_functions_agent/base.py b/libs/langchain/langchain/agents/openai_functions_agent/base.py index d96b924e29..3eed77bbe3 100644 --- a/libs/langchain/langchain/agents/openai_functions_agent/base.py +++ b/libs/langchain/langchain/agents/openai_functions_agent/base.py @@ -298,7 +298,9 @@ def create_openai_functions_agent( ] ) """ - if "agent_scratchpad" not in prompt.input_variables: + if "agent_scratchpad" not in ( + prompt.input_variables + list(prompt.partial_variables) + ): raise ValueError( "Prompt must have input variable `agent_scratchpad`, but wasn't found. " f"Found {prompt.input_variables} instead." diff --git a/libs/langchain/langchain/agents/openai_tools/base.py b/libs/langchain/langchain/agents/openai_tools/base.py index d251ffcaff..ff2eface92 100644 --- a/libs/langchain/langchain/agents/openai_tools/base.py +++ b/libs/langchain/langchain/agents/openai_tools/base.py @@ -78,7 +78,9 @@ def create_openai_tools_agent( ] ) """ - missing_vars = {"agent_scratchpad"}.difference(prompt.input_variables) + missing_vars = {"agent_scratchpad"}.difference( + prompt.input_variables + list(prompt.partial_variables) + ) if missing_vars: raise ValueError(f"Prompt missing required variables: {missing_vars}") diff --git a/libs/langchain/langchain/agents/react/agent.py b/libs/langchain/langchain/agents/react/agent.py index 531b4c74a0..032691ee3e 100644 --- a/libs/langchain/langchain/agents/react/agent.py +++ b/libs/langchain/langchain/agents/react/agent.py @@ -108,7 +108,7 @@ def create_react_agent( prompt = PromptTemplate.from_template(template) """ # noqa: E501 missing_vars = {"tools", "tool_names", "agent_scratchpad"}.difference( - prompt.input_variables + prompt.input_variables + list(prompt.partial_variables) ) if missing_vars: raise ValueError(f"Prompt missing required variables: {missing_vars}") diff --git a/libs/langchain/langchain/agents/self_ask_with_search/base.py b/libs/langchain/langchain/agents/self_ask_with_search/base.py index 26447f0239..bf7cf5ab77 100644 --- a/libs/langchain/langchain/agents/self_ask_with_search/base.py +++ b/libs/langchain/langchain/agents/self_ask_with_search/base.py @@ -173,7 +173,9 @@ def create_self_ask_with_search_agent( prompt = PromptTemplate.from_template(template) """ # noqa: E501 - missing_vars = {"agent_scratchpad"}.difference(prompt.input_variables) + missing_vars = {"agent_scratchpad"}.difference( + prompt.input_variables + list(prompt.partial_variables) + ) if missing_vars: raise ValueError(f"Prompt missing required variables: {missing_vars}") diff --git a/libs/langchain/langchain/agents/structured_chat/base.py b/libs/langchain/langchain/agents/structured_chat/base.py index 8eaf409490..be08419632 100644 --- a/libs/langchain/langchain/agents/structured_chat/base.py +++ b/libs/langchain/langchain/agents/structured_chat/base.py @@ -273,7 +273,7 @@ def create_structured_chat_agent( ) """ # noqa: E501 missing_vars = {"tools", "tool_names", "agent_scratchpad"}.difference( - prompt.input_variables + prompt.input_variables + list(prompt.partial_variables) ) if missing_vars: raise ValueError(f"Prompt missing required variables: {missing_vars}") diff --git a/libs/langchain/langchain/agents/tool_calling_agent/base.py b/libs/langchain/langchain/agents/tool_calling_agent/base.py index eb241716da..a25ba42724 100644 --- a/libs/langchain/langchain/agents/tool_calling_agent/base.py +++ b/libs/langchain/langchain/agents/tool_calling_agent/base.py @@ -33,14 +33,14 @@ def create_tool_calling_agent( from langchain.agents import AgentExecutor, create_tool_calling_agent, tool from langchain_anthropic import ChatAnthropic - from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder + from langchain_core.prompts import ChatPromptTemplate prompt = ChatPromptTemplate.from_messages( [ ("system", "You are a helpful assistant"), - MessagesPlaceholder("chat_history", optional=True), + ("placeholder", "{chat_history}", ("human", "{input}"), - MessagesPlaceholder("agent_scratchpad"), + ("placeholder", "{agent_scratchpad}"), ] ) model = ChatAnthropic(model="claude-3-opus-20240229") @@ -75,7 +75,9 @@ def create_tool_calling_agent( ``MessagesPlaceholder``. Intermediate agent actions and tool output messages will be passed in here. """ - missing_vars = {"agent_scratchpad"}.difference(prompt.input_variables) + missing_vars = {"agent_scratchpad"}.difference( + prompt.input_variables + list(prompt.partial_variables) + ) if missing_vars: raise ValueError(f"Prompt missing required variables: {missing_vars}") diff --git a/libs/langchain/langchain/agents/xml/base.py b/libs/langchain/langchain/agents/xml/base.py index 370c48ba02..b79721522e 100644 --- a/libs/langchain/langchain/agents/xml/base.py +++ b/libs/langchain/langchain/agents/xml/base.py @@ -203,7 +203,9 @@ def create_xml_agent( {agent_scratchpad}''' prompt = PromptTemplate.from_template(template) """ # noqa: E501 - missing_vars = {"tools", "agent_scratchpad"}.difference(prompt.input_variables) + missing_vars = {"tools", "agent_scratchpad"}.difference( + prompt.input_variables + list(prompt.partial_variables) + ) if missing_vars: raise ValueError(f"Prompt missing required variables: {missing_vars}")