大模型如何调用工具?

大模型怎么学会"动手干活"?Function Calling 揭秘
你让 ChatGPT 查明天北京天气,它真的"查"了吗?
它其实是调了一个天气 API,把结果读给你听。
再让它分析你上传的 Excel,它其实是调了文件解析工具。
大模型这种"动手能力"怎么来的?
上篇聊完推理参数,你可能有个感觉:大模型越来越会"说话"了。光会说话还不够,得能真正"干活"。今天就说说大模型是怎么调用工具的。
为什么大模型需要调用工具?
大模型知识再渊博,也有天花板。
它的知识有截止日期。今天北京多少度?特朗普又说了啥?它只能瞎猜。
它还"眼高手低"。能分析数据趋势,但没法真正打开你的 CSV 文件做计算。
说白了,大模型是个"军师"——运筹帷幄很强,但没法亲自上阵。
工具调用,就是给它装上"手和脚"。
有了它,AI 不再只是能说会道,而是能说能干。
Function Calling 是什么?——给AI一本工具说明书
你入职新公司,第一件事是看员工手册。
Function Calling 的本质,就是给大模型一本"工具使用手册"。
这本手册用文字描述每个工具:
- 叫什么名字
- 有什么用
- 需要什么参数
模型读完手册,就能自己判断:
- 要不要调用工具?
- 调用哪个?
- 参数填什么?
调用结果不是随口说,而是返回一个结构化的 JSON。
{
"name": "get_weather",
"arguments": {
"city": "北京",
"date": "明天"
}
}这就像你问同事"今天下雨吗",他查了天气告诉你结果——只不过同事换成了 API,结果换成了 JSON。

三种模式全景图——不是替代,而是分工
工具调用经历了三次进化。
但这三次不是"新技术淘汰旧技术",而是各有所长。
选错模式,就像用卡车运快递——不是不行,是太浪费。
三种模式的核心差异在于:灵活性和效率怎么平衡。
短途走路、中途骑车、长途开车——不是谁比谁强,是场景不同。

模式一:循环式工具选择——像下棋一样步步为营
想象你问 AI:"帮我查北京天气,然后告诉我要不要带伞。"
循环式会这样工作:
- 模型读完问题,决定调用天气 API
- 拿到天气数据后,再决定下一步
- 根据天气情况生成回答
每一步都是:决策 → 执行 → 看结果 → 再决策
像下棋一样,落一子看局势,再决定下一步。
好处是什么?
逻辑清晰,灵活应变。如果某一步出错了,可以重试。
坏处呢?
严格串行,一步完了才能下一步。查天气要 1 秒,模型思考要 1 秒,加起来就是 2 秒起步。
而且每次只能调用一个工具。
适合什么场景?
单次查询、简单计算、不需要多步决策的任务。
比如查个汇率、算个日期、问个航班。

模式二:计划驱动执行——先想再做不蛮干
你有个经验丰富的老下属。
你布置任务,他不会闷头就干,而是先想清楚步骤:
"这件事分三步,第一步和第二步没依赖可以同时干,第三步要等前两步完成。"
计划驱动就是这个思路。
模型先输出一个完整计划:
步骤1:查北京天气
步骤2:查上海天气(与步骤1无关,并行执行)
步骤3:等步骤1和2完成后,比较两地天气然后执行引擎负责调度——没依赖的并行干,有依赖的排队等。
好处是什么?
两次模型推理就够了,延迟大幅降低。并行执行让总时间 = max(各步骤时间) 而不是 sum(各步骤时间)。
坏处呢?
计划定好了就不好改。万一某一步出错了,模型只能从头再来。
而且需要实现一套依赖解析的执行引擎,开发成本高。
适合什么场景?
多步骤流程、各步骤相对独立、需要聚合多个数据源的任务。
比如数据分析流水线、文档处理、多源信息聚合。

模式三:程序化工具编排——直接生成代码
你让 AI 分析 10 万条日志。
循环式要调用工具 10 万次?上下文爆炸,模型直接宕机。
计划驱动要拆成 N 个步骤?计划本身可能就有问题。
程序化编排换了个思路:让模型直接生成代码。
模型输出的是一段 Python:
import json
# 读取日志
logs = read_file("error_logs.jsonl")
# 过滤错误级别
errors = [log for log in logs if log["level"] == "ERROR"]
# 统计错误类型
error_counts = {}
for e in errors:
error_counts[e["type"]] = error_counts.get(e["type"], 0) + 1
print(error_counts)代码在沙箱里执行,10 万条数据处理完,只返回一个摘要。
中间数据不进上下文,token 消耗从几十万降到几千。
好处是什么?
效率极高,适合大规模数据处理。循环过滤在代码层执行,速度比反复调用 API 快得多。
坏处呢?
需要模型有强代码生成能力。而且要在安全环境里执行用户生成的代码,有安全风险。
适合什么场景?
大规模数据处理、日志分析、批量文件操作——数据量从 MB 到 GB 级别。

实战指南——根据场景选对模式
说了这么多,到底怎么选?
简单原则:小任务用循环式,复杂流程用计划式,大数据用程序式。
更具体一点:
简单单步查询(查天气、汇率、日期)→ 循环式,最直接,成本最低。
多步骤但依赖明确(查资料→总结→翻译)→ 计划驱动,并行提效。
大规模数据处理(分析数万条日志、处理 GB 级文件)→ 程序化,避免上下文爆炸。
但现实往往更复杂。
一个复杂任务可能需要组合策略:外围用计划驱动,内部某个环节用循环式,某个大数据处理用程序式。
就像物流——同城闪送用电动车,跨城用货车,出国用飞机。选对方式才能又快又省。

大模型"干活"的能力还在进化
从最初的"步步为营",到现在的"代码驱动",工具调用模式越来越强。
但这还不是终点。
未来可能出现更聪明的第四种、第五种模式。也许 AI 能自己写工具,也许工具能主动给 AI 提建议。
不变的是:让 AI 真正"能干活"这件事,正在从科幻走进现实。
下篇我们就来聊聊——这些能干活的大模型,怎么组成一个完整的应用系统。
