create_openai_tools_agent() — langchain Function Reference
Architecture documentation for the create_openai_tools_agent() function in base.py from the langchain codebase.
Entity Profile
Dependency Diagram
graph TD 20b7be0c_4eb7_3a49_9552_06e511b3965c["create_openai_tools_agent()"] 117d269f_041a_81c1_4599_9b3ce5564460["base.py"] 20b7be0c_4eb7_3a49_9552_06e511b3965c -->|defined in| 117d269f_041a_81c1_4599_9b3ce5564460 style 20b7be0c_4eb7_3a49_9552_06e511b3965c fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
libs/langchain/langchain_classic/agents/openai_tools/base.py lines 17–113
def create_openai_tools_agent(
llm: BaseLanguageModel,
tools: Sequence[BaseTool],
prompt: ChatPromptTemplate,
strict: bool | None = None, # noqa: FBT001
) -> Runnable:
"""Create an agent that uses OpenAI tools.
Args:
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 on the expected
input variables.
strict: Whether strict mode should be used for OpenAI tools.
Returns:
A Runnable sequence representing an agent. It takes as input all the same input
variables as the prompt passed in does. It returns as output either an
AgentAction or AgentFinish.
Raises:
ValueError: If the prompt is missing required variables.
Example:
```python
from langchain_classic import hub
from langchain_openai import ChatOpenAI
from langchain_classic.agents import (
AgentExecutor,
create_openai_tools_agent,
)
prompt = hub.pull("hwchase17/openai-tools-agent")
model = ChatOpenAI()
tools = ...
agent = create_openai_tools_agent(model, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)
agent_executor.invoke({"input": "hi"})
# Using with chat history
from langchain_core.messages import AIMessage, HumanMessage
agent_executor.invoke(
{
"input": "what's my name?",
"chat_history": [
HumanMessage(content="hi! my name is bob"),
AIMessage(content="Hello Bob! How can I assist you today?"),
],
}
)
```
Prompt:
The agent prompt must have an `agent_scratchpad` key that is a
`MessagesPlaceholder`. Intermediate agent actions and tool output
messages will be passed in here.
Here's an example:
```python
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
prompt = ChatPromptTemplate.from_messages(
[
("system", "You are a helpful assistant"),
MessagesPlaceholder("chat_history", optional=True),
("human", "{input}"),
MessagesPlaceholder("agent_scratchpad"),
]
)
```
"""
missing_vars = {"agent_scratchpad"}.difference(
prompt.input_variables + list(prompt.partial_variables),
)
if missing_vars:
msg = f"Prompt missing required variables: {missing_vars}"
Domain
Subdomains
Source
Frequently Asked Questions
What does create_openai_tools_agent() do?
create_openai_tools_agent() is a function in the langchain codebase, defined in libs/langchain/langchain_classic/agents/openai_tools/base.py.
Where is create_openai_tools_agent() defined?
create_openai_tools_agent() is defined in libs/langchain/langchain_classic/agents/openai_tools/base.py at line 17.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free