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 [source]¶
创建一个使用自我询问和搜索提示的代理。
- 参数:
llm:用作代理的LLM。 tools:工具列表。应该只有一个工具,该工具的名称为`Intermediate Answer`。 prompt:要使用的提示,必须具有输入键`agent_scratchpad`,其中将包含代理操作和工具输出。
- 返回:
代表代理的可运行序列。它接受与传入的提示相同的所有输入变量。它返回一个AgentAction或AgentFinish。
示例:
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 = [...] # 应该只有一个名称为`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 = '''问题:谁活得更久,穆罕默德·阿里还是艾伦·图灵? 这里是否需要后续问题:是的。 后续问题:穆罕默德·阿里去世时多大年纪? 中间答案:穆罕默德·阿里去世时74岁。 后续问题:艾伦·图灵去世时多大年纪? 中间答案:艾伦·图灵去世时41岁。 因此最终答案是:穆罕默德·阿里 问题:craigslist的创始人是什么时候出生的? 这里是否需要后续问题:是的。 后续问题:craigslist的创始人是谁? 中间答案:craigslist的创始人是Craig Newmark。 后续问题:Craig Newmark是什么时候出生的? 中间答案:Craig Newmark于1952年12月6日出生。 因此最终答案是:1952年12月6日 问题:乔治·华盛顿的外祖父是谁? 这里是否需要后续问题:是的。 后续问题:乔治·华盛顿的母亲是谁? 中间答案:乔治·华盛顿的母亲是玛丽·波尔·华盛顿。 后续问题:玛丽·波尔·华盛顿的父亲是谁? 中间答案:玛丽·波尔·华盛顿的父亲是约瑟夫·波尔。 因此最终答案是:约瑟夫·波尔 问题:《大白鲨》和《皇家赌场》的导演都来自同一个国家吗? 这里是否需要后续问题:是的。 后续问题:《大白鲨》的导演是谁? 中间答案:《大白鲨》的导演是史蒂文·斯皮尔伯格。 后续问题:史蒂文·斯皮尔伯格来自哪里? 中间答案:美国。 后续问题:《皇家赌场》的导演是谁? 中间答案:《皇家赌场》的导演是马丁·坎贝尔。 后续问题:马丁·坎贝尔来自哪里? 中间答案:新西兰。 因此最终答案是:不是 问题:{input} 这里是否需要后续问题:{agent_scratchpad}''' prompt = PromptTemplate.from_template(template)
- Parameters
llm (BaseLanguageModel) –
tools (Sequence[BaseTool]) –
prompt (BasePromptTemplate) –
- Return type