核心模块(Modules)
代理(Agents)
代理类型(AgentTypes)
React(React)

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是什么?"})
> 进入新的AgentExecutor链...
 我应该研究一下LangChain以了解更多信息。
动作: tavily_search_results_json
动作输入: "LangChain"[{'url': 'https://www.ibm.com/topics/langchain', 'content': 'LangChain主要是Python和Javascript的抽象库,用于表示常见的步骤和概念  LangChain是一个用于开发使用大型语言模型的应用程序的开源编排框架  其他LangChain功能,如同名的链条。  LangChain提供了超过25种不同的嵌入方法的集成,以及超过50种不同的向量存储方式LangChain是一种使用大型语言模型(LLM)构建应用程序的工具,如聊天机器人和虚拟代理。它简化了编程和与外部数据源和软件工作流程的集成过程。它支持Python和Javascript语言,并支持各种LLM提供商,包括OpenAI、Google和IBM。'}] 我应该阅读摘要并查看LangChain的不同功能和集成。
动作: tavily_search_results_json
动作输入: "LangChain的功能和集成"[{'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的普及方面发挥了重要作用。"}] 我应该注意LangChain的发布日期和受欢迎程度。
动作: tavily_search_results_json
动作输入: "LangChain的发布日期和受欢迎程度"[{'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的普及方面发挥了重要作用。"}] 我现在知道最终的答案了。
最终答案: LangChain是一个使用大型语言模型(LLMs)构建应用程序的开源编排框架,例如聊天机器人和虚拟代理。它是由Harrison Chase于2022年10月推出的,2023年6月,在Github上是增长最快的开源项目。

> 完成链。





{'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!很高兴认识你",
    }
)
> 进入新的AgentExecutor链...
思考: 我是否需要使用工具?不需要
最终答案: 你的名字是Bob。

> 完成链。
    {'input': '我的名字是什么?如果需要,请使用工具,否则用最终答案作出回应',
     'chat_history': 'Human: 你好!我的名字是Bob\nAI: 你好Bob!很高兴认识你',
     'output': '你的名字是Bob。'}
>>>>>>> main