应用与生态 核心 约 15 分钟 更新 2026-10-02

工具调用与函数调用概览

学习状态:
未学

一句话定义

工具调用(Tool/Function Calling)让模型在对话中输出结构化的「调用请求」(工具名 + JSON 参数),由外部系统执行后把结果回填对话,形成「模型决策、代码执行」的闭环——它是 Agent 应用的最小构件。

为什么重要

LLM 天生不会查数据库、算精确数学、访问私有系统;工具调用把这些能力「外挂」进来,直接缓解幻觉与时效性两大痛点。当代 Agent、RAG、自动化工作流全部构建在这个原语上,属于现代 LLM 工程的分水岭概念。

前置知识

核心概念

原理与机制

机制上,工具声明被序列化进系统/用户消息(条件信息),模型经 SFT/RLHF 学会「需要外部信息或动作时输出调用格式」——本质是一种被训练出的「格式化行为」,与 kp-028 的结构化输出共享约束解码基础。可靠性取决于三件事:schema 描述质量(模型按描述选工具)、参数合法性校验(应用层必须验证)、错误回传设计(执行失败应回填可读错误让模型自我修正)。安全上,工具执行是代码在真实世界产生副作用,最小权限、白名单与人工确认是底线。

公式或模型

一次工具回合的消息扩展(概览视角):

[system, tools_schema, user] → assistant(tool_call)
[... + tool(result)] → assistant(最终回答)

图示

用户: "北京现在几度?"
模型: → 调用 get_weather(city="北京")     ← 结构化请求,不是瞎编温度
应用: 执行 API → 返回 {temp: 21}
模型: → "北京当前 21°C,建议……"          ← 基于工具结果作答

直观类比

像给「只会动嘴的顾问」配一部电话:他不再凭记忆猜数字,而是当场打给相关部门(工具)要准确数据,听完汇报(结果回填)再给你结论。电话号码簿写不清(schema 模糊),他就可能打错部门。

实例或案例

Toolformer(2023)证明模型可自学习在何处插入 API 调用;ReAct(2023)确立了「思考-行动-观察」循环,成为 Agent 框架的标准心跳;当代各模型 API 均原生支持工具调用,典型应用是「模型选工具 → 系统执行 → 模型总结」的查询类助手。多步任务(查日历→订会议室→发邮件)即多轮工具链,属于 Agent 专题站的深入范围。

常见误区

与其他知识点的关系

自测题

  1. 描述一次完整工具调用的消息流。
    答案要点:声明 schema → 模型输出 tool_call → 应用执行 → 结果以 tool 消息回填 → 模型生成回答。
  2. 工具调用如何缓解幻觉?
    答案要点:事实类问题改为取实时/权威数据源,模型只做理解与总结。
  3. 应用层必须做哪些安全设计?
    答案要点:schema 校验、最小权限、白名单、危险操作人工确认。

延伸阅读