第 04 课:工具与 Agent 基础

发布时间:2026/9/29 0:37:37

第 04 课:工具与 Agent 基础
第 04 课工具与 Agent 基础配套代码仓库https://gitee.com/wang-zeyong111/lang-chain-lecture本课定位如果模型只能生成文本它就只是一个“会说话”的系统。工具让模型能够行动查数据库、算数、调用 API、检索文档、创建工单。Agent 则让模型决定什么时候调用哪个工具并根据工具结果继续推理。学习目标使用tool创建工具。理解工具名称、描述、参数 schema 的作用。创建一个基础 Agent。理解 ReAct 工具调用循环。判断链、工具调用和 Agent 的适用场景。一、工具是什么工具是一个带有元数据的可调用函数。对模型来说工具由三部分组成工具名模型选择工具时看到的名字工具描述告诉模型这个工具适合什么场景参数 schema告诉模型需要传什么参数。示例fromlangchain.toolsimporttooltooldeflookup_order(order_id:str)-str:根据订单号查询订单状态。order_id 形如 A1001。return运输中函数 docstring 不是给人看的注释那么简单它会影响模型是否正确调用工具。二、什么时候需要工具需要工具的典型场景问题涉及实时信息问题涉及私有数据需要精确计算需要访问数据库需要写入外部系统需要调用搜索、CRM、工单、支付等 API需要检索知识库。如果一个任务只需要模型根据已有上下文生成文本就不需要工具。三、工具设计原则一个工具只做一件事不要设计一个do_everything工具。模型很难判断如何使用。更好的做法是拆成lookup_order;create_refund_ticket;search_policy;escalate_to_human。工具名清楚工具名最好是动词或动宾短语。比如calculate;search_course_docs;get_weather;lookup_customer_profile。描述要说明使用时机坏描述查询信息。好描述根据订单号查询订单状态。仅当用户提供订单号并询问物流、退款或支付状态时使用。参数要有类型类型注解会变成工具 schema。没有类型模型很难稳定传参。四、Agent 的执行循环常见 Agent 遵循类似 ReAct 的循环接收用户消息调用模型模型判断是否需要工具如果需要输出工具调用系统执行工具工具结果作为 ToolMessage 回传模型继续判断最终输出答案。这就是 Agent 比普通链更灵活的原因也是它更难控制、更贵、更慢的原因。五、create_agent基础写法fromlangchain.agentsimportcreate_agent agentcreate_agent(modelopenai:gpt-5-nano,tools[lookup_order,calculate],system_prompt你是客服助手。需要查询订单时必须调用工具。,)resultagent.invoke({messages:[{role:user,content:订单 A1002 到哪了}]})result[messages]中会包含用户消息、AI 消息、工具消息和最终回复。六、链和 Agent 的选择需求推荐固定步骤摘要Runnable 链固定 RAG 问答Runnable 链固定分类抽取结构化模型调用模型需要自主选择工具Agent需要多轮工具调用Agent需要复杂状态和人工审批LangGraph经验能用链稳定解决就不要为了“智能”强行用 Agent。Agent 的价值在动态决策不在固定流程。七、工具错误处理工具可能失败参数缺失参数格式错误外部 API 超时数据库无结果权限不足。工具内部应该返回对模型有用的短消息而不是抛出长堆栈。例如未找到订单请确认订单号是否正确。而不是Traceback...在高级 Agent 中还可以用中间件统一处理工具错误。八、高风险工具某些工具会改变外部状态退款删除数据发送邮件下单修改权限提交审批。这类工具要加保护参数校验权限检查用户二次确认人工审核幂等设计操作日志。不要让模型在没有确认的情况下直接执行不可逆动作。九、常见坑工具描述太模糊模型不知道何时调用。工具参数名太抽象例如x、data。工具返回太长浪费上下文。把高风险操作直接暴露给 Agent。用 Agent 处理固定流程增加不确定性。没有记录工具调用日志出错后无法排查。十、自测清单我能把一个 Python 函数改造成 LangChain 工具。我知道 docstring 会影响模型工具选择。我能解释 Agent 的工具调用循环。我能判断固定链和 Agent 的区别。我知道高风险工具需要人工确认或权限控制。十一、课后练习定义search_policy(query)工具返回售后政策。定义escalate_to_human(summary)工具模拟转人工。设计系统提示投诉、法律风险、高金额退款必须转人工。如果有真实模型创建 Agent 并测试工具调用。

相关新闻

【claude code实践】让 Claude Code 改善命名:变量、函数与模块的语义优化

【claude code实践】让 Claude Code 改善命名:变量、函数与模块的语义优化

2026/9/8 20:35:55

让 Claude Code 改善命名:变量、函数与模块的语义优化 引言:为什么现在需要理解它 每一份代码库都藏着一个开发者不愿提起的秘密:命名债。早先随手写下的 data、handle()、utils.py,随着系统演化变成了认知负担。更名从来不是技…

OpenResty 1.25.3.1 升级实战:CentOS 7.9 平滑迁移与 5 个 Lua 模块配置验证

OpenResty 1.25.3.1 升级实战:CentOS 7.9 平滑迁移与 5 个 Lua 模块配置验证

2026/9/29 0:36:02

OpenResty 1.25.3.1 生产环境升级指南:CentOS 7.9 平滑迁移与核心模块验证1. 升级前的战略准备在开始升级前,我们需要建立一个完整的风险评估和回滚方案。不同于全新安装,生产环境的升级需要特别关注业务连续性保障。以下是关键准备步骤&…

Claude 中转站合规怎么做?数据脱敏、权限和审查边界

Claude 中转站合规怎么做?数据脱敏、权限和审查边界

2026/9/25 15:09:57

🔐 合规不是大公司的专属问题 只要你把代码、日志、接口说明、客户字段或业务流程提交给 AI 工具,合规问题就已经出现了。它不是等公司很大才需要考虑,也不是写一句“注意安全”就能解决。 Claude 中转站能提升效率,但也会把数据…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/28 4:08:17

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/28 16:01:49

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/28 2:15:29

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/28 3:14:54

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/28 3:58:00

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/28 3:47:14

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/28 16:01:48

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/28 5:05:21

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/28 16:01:48

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…