完整文档索引见 llms.txt。 在任意 URL 后追加 `.md` 即可查看该页面的 Markdown 版本。
函数调用(Function calling)
Function calling 让 LLM 能在任务需要外部数据、或需要执行模型本身之外的动作时, 主动请求特定工具。当你要求模型完成某件依赖这些工具的事情时,它可以调用相应 工具,并把结果整合进自己的响应里。
下面是一个具体示例:
- 你提问:"What's the current price of Apple stock?"
- LLM 思考:"我需要当前股价数据,所以要用股价查询函数。"
- LLM 调用:
get_stock_price("AAPL") - 函数返回:"$195.25"
- LLM 回答:"The current price of Apple stock is $195.25"
从技术角度看,LLM 仍然是在做 next token prediction,这一点和其他基于 Transformer 的模型并没有区别。不同之处在于,提示词里包含了定义清晰的函数 签名与说明,用来引导模型生成符合这些格式的输出。这样你就可以构建如下工作流:
- 根据用户输入调用 API
- 触发动作(例如发邮件、查询天气)
- 将工具输出再送回模型,形成多轮对话
常见问题
function calling 和 structured outputs 有什么区别?
这两个概念经常被混用。最简单的区别是:
- Structured outputs:你规定 模型响应所采用的格式。例如,你可以 强制模型输出 JSON、列表,或者特定对象。
- Function calling:你告诉模型何时要采取动作。Function calling 使用的工具 通常也会以结构化方式定义(例如 JSON)。
两者可以结合使用。
所有 LLM 都支持 function calling 吗?
并不是所有模型都支持,但很多现代模型都支持。像 Llama、Qwen、DeepSeek 这类 开源模型,通常在通过 vLLM 或 SGLang 提供服务时效果不错。
function calling、tools 和 agents 是一回事吗?
Tools 是动作本身;function calling 是模型请求这些动作的方式;agents 则是 能够在带有推理的循环中使用 function calling 的系统。它们可以做规划、按顺序 调用多个工具、评估结果,并根据新获得的信息调整自己的做法。