第 04 课:工具与 Agent 基础

第 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 并测试工具调用。