ReAct
本次演示展示了如何使用一个 agent 来实现 ReAct (opens in a new tab) 的逻辑。
from langchain import hub
from langchain.agents import AgentExecutor, create_react_agent
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_openai import OpenAI初始化工具
让我们加载一些要使用的工具。
tools = [TavilySearchResults(max_results=1)]创建 Agent
# 获取要使用的提示 - 您可以修改这个!
prompt = hub.pull("hwchase17/react")# 选择要使用的 LLM
llm = OpenAI()
# 构建 ReAct agent
agent = create_react_agent(llm, tools, prompt)运行 Agent
# 通过传入 agent 和 tools 来创建一个 agent executor
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)agent_executor.invoke({"input": "LangChain是什么?"})[1m > 进入新的 AgentExecutor 链...[0m
[32; 1m[1; 3m 我应该研究一下 LangChain 以了解更多信息。
动作: tavily_search_results_json
动作输入: "LangChain" [0m[36; 1m[1; 3m[{'url': 'https://www.ibm.com/topics/langchain', 'content': 'LangChain 主要是 Python 和 Javascript 的抽象库,用于表示常见的步骤和概念 LangChain 是一个用于开发使用大型语言模型的应用程序的开源编排框架 其他 LangChain 功能,如同名的链条。 LangChain 提供了超过 25 种不同的嵌入方法的集成,以及超过 50 种不同的向量存储方式 LangChain 是一种使用大型语言模型(LLM)构建应用程序的工具,如聊天机器人和虚拟代理。它简化了编程和与外部数据源和软件工作流程的集成过程。它支持 Python 和 Javascript 语言,并支持各种 LLM 提供商,包括 OpenAI、Google 和 IBM。'}] [0m[32; 1m[1; 3m 我应该阅读摘要并查看 LangChain 的不同功能和集成。
动作: tavily_search_results_json
动作输入: "LangChain 的功能和集成" [0m[36; 1m[1; 3m[{'url': 'https://www.ibm.com/topics/langchain', 'content': "LangChain 提供了超过 25 种不同的嵌入方法的集成,以及超过 50 种不同的向量存储方式 LangChain 是一个用于开发使用大型语言模型的应用程序的开源编排框架 其他 LangChain 功能,如同名的链条。 LangChain 主要是 Python 和 Javascript 的抽象库,用于表示常见的步骤和概念由 Harrison Chase 于 2022 年 10 月推出,《LangChain》在 2023 年 6 月成为 Github 上增长最快的开源项目。 在接下来的一个月,随着 OpenAI 的 ChatGPT 的重大推出,LangChain 在促进生成 AI 的普及方面发挥了重要作用。"}] [0m[32; 1m[1; 3m 我应该注意 LangChain 的发布日期和受欢迎程度。
动作: tavily_search_results_json
动作输入: "LangChain 的发布日期和受欢迎程度" [0m[36; 1m[1; 3m[{'url': 'https://www.ibm.com/topics/langchain', 'content': "LangChain 是一个用于开发使用大型语言模型的应用程序的开源编排框架 其他 LangChain 功能,如同名的链条。 LangChain 提供了超过 25 种不同的嵌入方法的集成,以及超过 50 种不同的向量存储方式 LangChain 主要是 Python 和 Javascript 的抽象库,用于表示常见的步骤和概念由 Harrison Chase 于 2022 年 10 月推出,《LangChain》在 2023 年 6 月成为 Github 上增长最快的开源项目。 在接下来的一个月,随着 OpenAI 的 ChatGPT 的重大推出,LangChain 在促进生成 AI 的普及方面发挥了重要作用。"}] [0m[32; 1m[1; 3m 我现在知道最终的答案了。
最终答案: LangChain 是一个使用大型语言模型(LLMs)构建应用程序的开源编排框架,例如聊天机器人和虚拟代理。它是由 Harrison Chase 于 2022 年 10 月推出的,2023 年 6 月,在 Github 上是增长最快的开源项目。[0m
[1m > 完成链。[0m
{'input': 'LangChain 是什么?',
'output': 'LangChain 是一个使用大型语言模型(LLMs)构建应用程序的开源编排框架,例如聊天机器人和虚拟代理。它是由 Harrison Chase 于 2022 年 10 月推出的,2023 年 6 月,在 Github 上是增长最快的开源项目。'}使用聊天历史
在使用聊天历史时,我们需要一个能考虑到这一点的提示。
# 获取要使用的提示 - 您可以修改这个!
prompt = hub.pull("hwchase17/react-chat")# 构建 ReAct agent
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)from langchain_core.messages import AIMessage, HumanMessage
agent_executor.invoke(
{
"input": "我的名字是什么?如果需要,请使用工具,否则用最终答案作出回应",
# 注意,聊天历史是一个字符串,因为这个提示是针对 LLMs 而不是聊天模型的
"chat_history": "Human: 你好!我的名字是Bob\nAI: 你好Bob!很高兴认识你",
}
)[1m > 进入新的 AgentExecutor 链...[0m
[32; 1m[1; 3m 思考: 我是否需要使用工具?不需要
最终答案: 你的名字是 Bob。[0m
[1m > 完成链。[0m {'input': '我的名字是什么?如果需要,请使用工具,否则用最终答案作出回应',
'chat_history': 'Human: 你好!我的名字是Bob\nAI: 你好Bob!很高兴认识你',
'output': '你的名字是Bob。'}