← [ BACK_TO_NOTES ]

专题归档 · 2026 年 4 月(编辑分组,非实际写作日期)

从一个 add 函数理解 Function Calling:模型并不负责执行代码

第一次梳理 Function Calling 的调用回路,以及思考工具数量增长后的注册与按需加载问题。

最早给自己定的目标很小

旧笔记的原句是:

写一个自己的 add 函数,让 codex 调用

看起来只是两个数字相加,但它帮我区分了两件此前容易混淆的事:模型返回工具调用的意图,以及自己控制的运行时真正执行函数。

当时让 AI 给出了一份 add 函数与调用示例,并按流程模拟一段会话:应用先提交消息与可用工具定义,模型返回函数名和参数,应用执行函数,再把结果交还模型,由模型生成最终回复。

这次只是用一个 add 函数模拟 Function Calling 的完整调用链,并不是部署一套 Agent 服务。但通过这个小例子,我开始明白模型负责提出工具调用,应用才负责实际执行。

真正的理解发生在“谁来执行”这里

我从示例中记下的结论是:Function Calling 需要一层自己控制的 Runtime。它不一定要是一个大型 Agent 框架,也可能只是几十行 Python 或 Node 代码。

同样的思想放到查询天气:模型可以提出需要调用天气工具并提供参数,但请求是由应用执行;最终结果仍由应用接收后再回传给模型。

模型会选择,不等于模型已经替我在机器上运行。 尤其涉及文件、网络或有副作用的工具时,实际授权、校验和执行责任仍然属于应用运行时。

工具越来越多怎么办

最初还问了一个问题:如果聊天应用有成百上千个工具,是否每轮都要把所有 Function 定义交给模型?

旧笔记给出的思考方向是先按领域分层、按需暴露相关工具,再引入工具注册表或 MCP 等能力入口。具体 API 与模型能力会随着平台更新,但“不要默认把全部工具平铺进每轮上下文”这一工程判断仍值得保留。

这篇记录的是学习和概念转折,不是声称已经完成大规模工具注册系统。

创建于 2026/4/16 更新于 2026/10/17
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本