函数调用:让模型调工具
函数调用(Function Calling,或称工具调用)让模型不再只生成文本,而是输出符合预定义 schema 的调用参数,由外部程序执行并回传结果。它把大模型接入数据库、计算器、搜索等真实能力。
工具描述
使用者向模型声明一组函数,含名称、用途说明与 JSON Schema 描述的参数。模型据用户意图决定调用哪个函数、填什么参数,输出为结构化 JSON 而非自然语言。
{
"name": "get_weather",
"arguments": { "city": "北京", "unit": "celsius" }
}
调用流程
模型返回工具调用请求;宿主程序执行对应函数,把结果再以消息形式回传模型;模型据此继续生成最终回答。多轮往返可实现多步任务规划。
# OpenAI 风格函数调用(示意)
resp = client.chat.completions.create(
model="gpt-4o",
tools=[{"type": "function", "function": weather_schema}],
messages=[{"role": "user", "content": "北京天气如何"}])
call = resp.choices[0].message.tool_calls[0] # 解析 name 与 arguments
注意点
要严格校验模型输出 JSON、处理未知函数与超时;用 schema 约束降低幻觉。这不等同于让模型直接执行代码,安全边界由宿主把控。
小结
函数调用以 JSON Schema 描述工具,让模型输出结构化调用、由宿主执行并回传,从而把语言模型接入外部系统,是构建智能体的核心机制。
参考与延伸阅读
- OpenAI 函数调用文档。已核验。https://platform.openai.com/docs/guides/function-calling
- Hugging Face Transformers 工具调用文档。已核验。https://huggingface.co/docs/transformers/main/en/chat_templating
本文累计阅读 — 次