函数调用:让模型调工具

函数调用(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 描述工具,让模型输出结构化调用、由宿主执行并回传,从而把语言模型接入外部系统,是构建智能体的核心机制。

参考与延伸阅读

本文累计阅读