password
查看人数
type
status
date
slug
summary
category
icon
tags
作者
状态
代码示例 先安装依赖,pip install langchain,langchain_openai
LangChain 工具调用智能体代码解析
这段代码展示了一个使用 LangChain 框架构建的智能体(Agent),它能够根据用户输入选择并调用适当的工具来完成任务。下面我将详细解释代码的各个部分:
1. 导入必要的库
os
: 操作系统接口
typing.Optional
: 类型注解,表示可选参数
ChatOpenAI
: LangChain 的 OpenAI 聊天模型封装
tool
: 装饰器,用于将函数转换为 LangChain 工具
ChatPromptTemplate
: 聊天提示模板
create_tool_calling_agent
和AgentExecutor
: 用于创建和执行智能体
2. 定义工具功能
网页搜索工具
@tool
装饰器将函数标记为 LangChain 工具
- 接收查询字符串和可选的最大结果数
- 目前是模拟实现,实际应用中可替换为真实搜索引擎 API
- 工具描述文档字符串很重要,LLM 会根据它决定是否使用该工具
数学计算器工具
- 接收数学表达式字符串
- 使用 Python 的
eval()
执行计算
- 包含错误处理,返回错误信息
3. 初始化大语言模型
- 创建
ChatOpenAI
实例
- 指定模型为 "gpt-4o-mini" (注意:这不是 OpenAI 官方模型名称)
- 提供 API 密钥和自定义 API 基础 URL
temperature=0
使输出更确定性
4. 创建工具列表
- 将定义的两个工具放入列表,供智能体使用
5. 构建提示模板
- 定义对话提示模板,包含三部分:
- 系统消息:设定智能体的角色和行为
- 用户输入:占位符
{input}
将被实际输入替换 - 代理草稿本:
{agent_scratchpad}
用于记录智能体的思考过程
6. 创建智能体和执行器
create_tool_calling_agent
: 创建能调用工具的智能体- 参数:LLM 实例、工具列表、提示模板
AgentExecutor
: 执行智能体的实际工作verbose=True
显示详细执行过程
7. 主程序交互循环
- 持续接收用户输入
- 调用
agent_executor.invoke()
处理输入
- 打印结果或错误信息
- 输入 "exit" 退出循环
工作流程总结
- 用户输入问题/请求
- 智能体分析输入,决定是否需要使用工具
- 如果需要工具,选择最合适的工具并生成调用参数
- 执行工具并获取结果
- 智能体整合工具结果生成最终回复
- 返回给用户
关键概念
- 工具(Tool): 封装特定功能的可调用对象,LLM 可以决定是否及如何调用
- 智能体(Agent): 决定何时及如何使用工具的 LLM 系统
- 执行器(Executor): 实际运行智能体逻辑的组件
这段代码展示了 LangChain 框架构建工具调用智能体的基本模式,理解这个结构后可以扩展出更复杂的功能。
有关使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:躁静有徒
- 链接:https://blog.zaojingyoutu.top//article/59b2fcfb-3b61-4cfa-b7eb-65a4fa1d8eb1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。