langchain.agents.self_ask_with_search.base.create_self_ask_with_search_agent

langchain.agents.self_ask_with_search.base.create_self_ask_with_search_agent(llm: BaseLanguageModel, tools: Sequence[BaseTool], prompt: BasePromptTemplate) Runnable[源代码]

创建一个使用自我询问和搜索提示的智能代理。

参数
  • llm (BaseLanguageModel) – 作为代理使用的LLM。

  • tools (序列]BaseTool]) – 工具列表。应该只有一个长度,相应的工具名称为《中间答案》

  • prompt (BasePromptTemplate) – 要使用的提示,必须包含输入键 agent_scratchpad,它将包含代理操作和工具的输出。

返回值

表示智能代理的可执行序列。它接受与传递的提示相同的所有输入变量。作为输出返回一个代理动作或代理完成。

返回类型

可执行对象

示例

from langchain import hub
from langchain_community.chat_models import ChatAnthropic
from langchain.agents import (
    AgentExecutor, create_self_ask_with_search_agent
)

prompt = hub.pull("hwchase17/self-ask-with-search")
model = ChatAnthropic(model="claude-3-haiku-20240307")
tools = [...]  # Should just be one tool with name `Intermediate Answer`

agent = create_self_ask_with_search_agent(model, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools)

agent_executor.invoke({"input": "hi"})

提示

提示必须包含输入键 agent_scratchpad,它将

包含作为字符串的代理动作和工具输出。

以下是一个示例

from langchain_core.prompts import PromptTemplate

template = '''Question: Who lived longer, Muhammad Ali or Alan Turing?
Are follow up questions needed here: Yes.
Follow up: How old was Muhammad Ali when he died?
Intermediate answer: Muhammad Ali was 74 years old when he died.
Follow up: How old was Alan Turing when he died?
Intermediate answer: Alan Turing was 41 years old when he died.
So the final answer is: Muhammad Ali

Question: When was the founder of craigslist born?
Are follow up questions needed here: Yes.
Follow up: Who was the founder of craigslist?
Intermediate answer: Craigslist was founded by Craig Newmark.
Follow up: When was Craig Newmark born?
Intermediate answer: Craig Newmark was born on December 6, 1952.
So the final answer is: December 6, 1952

Question: Who was the maternal grandfather of George Washington?
Are follow up questions needed here: Yes.
Follow up: Who was the mother of George Washington?
Intermediate answer: The mother of George Washington was Mary Ball Washington.
Follow up: Who was the father of Mary Ball Washington?
Intermediate answer: The father of Mary Ball Washington was Joseph Ball.
So the final answer is: Joseph Ball

Question: Are both the directors of Jaws and Casino Royale from the same country?
Are follow up questions needed here: Yes.
Follow up: Who is the director of Jaws?
Intermediate answer: The director of Jaws is Steven Spielberg.
Follow up: Where is Steven Spielberg from?
Intermediate answer: The United States.
Follow up: Who is the director of Casino Royale?
Intermediate answer: The director of Casino Royale is Martin Campbell.
Follow up: Where is Martin Campbell from?
Intermediate answer: New Zealand.
So the final answer is: No

Question: {input}
Are followup questions needed here:{agent_scratchpad}'''

prompt = PromptTemplate.from_template(template)