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. 构建提示模板

  • 定义对话提示模板,包含三部分:
      1. 系统消息:设定智能体的角色和行为
      1. 用户输入:占位符 {input}将被实际输入替换
      1. 代理草稿本:{agent_scratchpad}用于记录智能体的思考过程

6. 创建智能体和执行器

  • create_tool_calling_agent: 创建能调用工具的智能体
    • 参数:LLM 实例、工具列表、提示模板
  • AgentExecutor: 执行智能体的实际工作
    • verbose=True显示详细执行过程

7. 主程序交互循环

  • 持续接收用户输入
  • 调用 agent_executor.invoke()处理输入
  • 打印结果或错误信息
  • 输入 "exit" 退出循环

工作流程总结

  1. 用户输入问题/请求
  1. 智能体分析输入,决定是否需要使用工具
  1. 如果需要工具,选择最合适的工具并生成调用参数
  1. 执行工具并获取结果
  1. 智能体整合工具结果生成最终回复
  1. 返回给用户

关键概念

  • 工具(Tool): 封装特定功能的可调用对象,LLM 可以决定是否及如何调用
  • 智能体(Agent): 决定何时及如何使用工具的 LLM 系统
  • 执行器(Executor): 实际运行智能体逻辑的组件
这段代码展示了 LangChain 框架构建工具调用智能体的基本模式,理解这个结构后可以扩展出更复杂的功能。
 
💡
有关使用上的问题,欢迎您在底部评论区留言,一起交流~
ai工作流编排langchain状态图工作流示例使用 Cloudflare Workers 实现代理(转发)请求功能
Loading...