6.langgraph创建agent代理并使用搜索工具
在这篇教程中,我们将学习如何使用 LangGraph 和 LangChain 构建一个具有记忆功能的智能对话代理。这个代理能够使用搜索工具来回答问题,并保持对话的连续性。
1.获取搜索工具的apikey
登录搜索工具网站: https://tavily.com/
,按提示生成api-key后有1000的免费调用额度。然后我们需要在python代码中设置环境变量 TAVILY_API_KEY
为获取到的api-key。
1 | os.environ["TAVILY_API_KEY"] = "tvly-*****" |
2.安装依赖
1 | pip install tavily-python langchain_community |
3. 依赖导入
首先,我们需要导入必要的组件:
1 | from langchain_openai import ChatOpenAI |
这些导入包括:
- ChatOpenAI:OpenAI的聊天模型接口
- TavilySearchResults:网络搜索工具
- HumanMessage:用于构建人类消息的类
- MemorySaver:用于保存对话历史的记忆组件
- create_react_agent:用于创建 ReAct 范式的代理
4. 组件配置
4.1 设置语言模型
1 | model = ChatOpenAI(model="gpt-4o-mini") |
我们使用 OpenAI 的 GPT-4 模型作为代理的大脑。这个模型将负责理解用户输入并决定如何使用工具。
4.2 配置记忆系统
1 | memory = MemorySaver() |
MemorySaver 组件允许代理记住之前的对话内容,这对于维持连贯的对话至关重要。
4.3 设置搜索工具
1 | search = TavilySearchResults(max_results=2) |
我们使用 Tavily 搜索工具,它能够:
- 执行网络搜索
- 返回最相关的前两个结果
- 帮助代理获取最新信息
5. 创建智能代理
1 | agent_executor = create_react_agent(model, tools, checkpointer=memory) |
create_react_agent 函数将所有组件组合成一个完整的代理系统:
- 使用指定的语言模型作为决策核心
- 集成搜索工具供代理使用
- 添加记忆系统来保存对话历史
6. 交互式对话实现
1 | config = {"configurable": {"thread_id": "abc123"}} |
这段代码实现了:
- 创建一个持续的对话循环
- 接收用户输入的问题
- 使用流式输出显示代理的思考和回答过程
- 通过 thread_id 跟踪对话上下文
7.使用说明
使用这个智能代理系统时:
- 代理会实时显示其思考过程
- 可以问任何问题,代理会根据需要使用搜索工具
- 代理会记住之前的对话内容,可以进行连续的对话
- 如果需要退出对话,可以使用 Ctrl+C 终止程序
8.示例
1 | 请输入问题:明天上海的天气如何? |
9.总结
通过这个教程,我们学习了如何:
- 使用 LangGraph 构建智能代理
- 集成大语言模型作为决策核心
- 添加实用工具扩展代理能力
- 实现记忆功能保持对话连续性
这个系统为构建更复杂的智能代理奠定了基础。你可以通过添加更多工具或自定义代理的行为来增强系统的功能。
10.完整代码
1 | from langchain_openai import ChatOpenAI |