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
Return type

Runnable

Examples using create_self_ask_with_search_agent