M5-086M5: NLP & Large Language ModelsAgents & Tool UseEasy
Mastery:
Agents & Tool Use: 解释工具调用(function calling)的实现要点。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 用 JSON Schema 描述工具,模型输出结构化调用,系统执行后回填结果;关键是 schema 设计、错误处理与并行调用。
📌 Key Takeaways
- •工具用 JSON Schema 声明(名称/描述/参数)
- •模型输出结构化调用 → 系统执行 → 回填结果
- •要点:schema 清晰、错误可恢复、支持并行调用
📐 Mathematical Derivations
数学机理:<strong>function calling 的机制</strong>——(1) <strong>工具声明</strong>——用 <strong>JSON Schema</strong> 描述每个工具:<code>name</code>(标识)、<code>description</code>(自然语言说明'这个工具做什么、何时用')、<code>parameters</code>(JSON Schema 定义参数名、类型、是否必需、取值范围、描述)。这些声明被注入模型的上下文(作为特殊的 system/tool 消息)。(2) <strong>模型生成调用</strong>——模型判断需要工具时,输出<strong>结构化的调用请求</strong>(如 name 为 get_weather、arguments 含 city 字段);现代模型通过<strong>专门训练</strong>(或约束解码)保证输出符合 schema。(3) <strong>系统执行</strong>——宿主系统解析调用、执行真实函数(调 API、查数据库、跑代码)。(4) <strong>结果回填</strong>——把执行结果作为 <strong>tool 消息</strong>注入上下文,模型继续生成(可能再调用工具或给出最终答案)。<strong>实现要点</strong>:(a) <strong>schema 设计</strong>——(i) <strong>描述要清晰且具体</strong>(模型靠描述选择工具;'查询天气' 优于 'query');(ii) <strong>参数描述要说明格式与取值</strong>(如日期格式、枚举值);(iii) 参数尽量<strong>扁平化</strong>(嵌套结构易出错);(iv) 用 <code>enum</code>/<code>required</code> 等约束减少错误。(b) <strong>错误处理</strong>——(i) 工具执行失败时把<strong>错误信息</strong>回填给模型(让它重试或换工具);(ii) 参数校验失败时返回具体原因;(iii) 设<strong>重试上限</strong>(防无限重试)。(c) <strong>并行调用</strong>——现代模型支持<strong>一次生成多个工具调用</strong>(parallel function calling),系统可并行执行(降低延迟);需注意'多个调用之间是否有依赖'。(d) <strong>工具数量与选择</strong>——工具太多会 (i) 占上下文、(ii) 增加选择错误;故应 (i) 只暴露相关工具(按场景筛选)、(ii) 用<strong>分层/分组</strong>(先选类别再选工具)。(e) <strong>安全</strong>——工具调用是'执行外部动作',需 (a) 权限控制、(b) 参数校验(防注入)、(c) 高风险操作需确认。<strong>与约束解码的关系</strong>——用 JSON Schema 约束解码可保证输出<strong>严格符合 schema</strong>(不会出现格式错误);这是生产环境提升可靠性的关键(见约束解码题)。<strong>评估</strong>——(a) <strong>工具选择准确率</strong>(是否选对工具)、(b) <strong>参数正确率</strong>(参数是否对)、(c) <strong>端到端任务成功率</strong>。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'工具描述就是 prompt'</strong>——模型完全靠 <code>description</code> 判断'何时用、怎么用';故写好描述是 Agent 效果的第一杠杆(比调模型更有效)。常见错误:描述太笼统、未说明'何时不用'、参数说明缺失。② <strong>'错误可恢复'是健壮性的关键</strong>——工具失败是常态(网络、参数、权限);若把错误静默处理,模型会'困惑';正确做法是<strong>把错误信息回填</strong>并让模型调整(这是 Agent 与'单次调用'的重要区别)。③ <strong>'并行调用'降低延迟</strong>——对'互不依赖'的调用(如同时查多个城市的天气)可并行;这需要模型支持且系统实现并发。④ <strong>'工具数量'的权衡</strong>——研究表明工具过多会降低选择准确率;故 (a) 按场景动态暴露工具、(b) 用层级结构、(c) 用 RAG 检索相关工具(工具检索)。⑤ <strong>'安全'是生产必需</strong>——工具可执行真实动作(发邮件、转账、删数据);故需 (a) 最小权限、(b) 高风险操作人工确认、(c) 防提示注入(恶意内容诱导模型调用危险工具,见后续题)。⑥ <strong>面试要点</strong>——被问'function calling 怎么做',应给出'<strong>JSON Schema 声明 + 模型输出结构化调用 + 系统执行 + 结果回填</strong>'四步与'<strong>描述清晰、错误可恢复、支持并行、工具数量控制、安全</strong>'五个要点;能指出'工具描述就是 prompt'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕工具描述笼统(模型选错工具)
- ✕工具失败时静默处理(模型无法调整)
🎯 Interviewer Follow-ups
- ?工具描述为什么如此重要?
- ?工具调用失败如何处理?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.