create_openai_tools_agent#

langchain.agents.openai_tools.base.create_openai_tools_agent(llm: BaseLanguageModel, tools: Sequence[BaseTool], prompt: ChatPromptTemplate, strict: bool | None = None) Runnable[source]#

创建一个使用OpenAI工具的代理。

Parameters:
  • llm (BaseLanguageModel) – 用作代理的LLM。

  • tools (Sequence[BaseTool]) – 此代理可以访问的工具。

  • prompt (ChatPromptTemplate) – 要使用的提示。有关预期输入变量的更多信息,请参见下面的提示部分。

  • strict (bool | None)

Returns:

一个表示代理的可运行序列。它接收与传入提示相同的所有输入变量作为输入。它返回一个AgentAction或AgentFinish作为输出。

Raises:

ValueError – 如果提示缺少必需的变量。

Return type:

Runnable

示例

from langchain import hub
from langchain_community.chat_models import ChatOpenAI
from langchain.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?"),
        ],
    }
)

提示:

The agent prompt must have an agent_scratchpad key that is a

MessagesPlaceholder. 中间代理操作和工具输出消息将在此处传递。

这是一个例子:

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"),
    ]
)

使用 create_openai_tools_agent 的示例