跳转到内容

使用指南

工具调用

让模型调用你定义的函数:各协议的写法、一次完整的调用流程,以及跨协议转换时的行为。

「工具调用」(也叫函数调用、Function Calling)是指:你先告诉模型有哪些函数可以用,模型在需要时会回复「请调用某个函数、参数是这些」;你的程序执行这个函数,再把结果交还给模型,模型据此给出最终回答。

NoviaHub 会把工具相关的字段交给模型;需要跨协议转换时,也会转换成目标协议的写法。模型能不能用好工具、支持哪些工具类型,取决于模型本身,请参考模型厂商的文档。

协议 定义工具 控制是否调用
OpenAI Chat Completions tools tool_choice、parallel_tool_calls
OpenAI Responses tools tool_choice、parallel_tool_calls、max_tool_calls
Anthropic Messages tools tool_choice
Gemini tools(其中的 functionDeclarations) toolConfig

以上字段都会按原协议的格式转交给模型。

一次完整的调用(以 Chat Completions 为例)

Section titled “一次完整的调用(以 Chat Completions 为例)”

第 1 步:带上工具定义发请求。

终端窗口
curl https://noviahub.com/v1/chat/completions \
-H "Authorization: Bearer $NOVIAHUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash",
"messages": [{"role": "user", "content": "巴黎现在天气怎么样?"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询某个城市的当前天气",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string", "description": "城市名"}},
"required": ["city"]
}
}
}],
"tool_choice": "auto"
}'

第 2 步:看模型是否要求调用工具。 如果模型决定调用,返回的 choices[0].message 里会有 tool_calls:每一项给出函数名 function.name、参数 function.arguments(一段 JSON 字符串)和一个 id。

第 3 步:执行函数,把结果交回模型。 在原来的 messages 后面依次追加两条消息:

  1. 模型返回的那条 assistant 消息(原样放回,包含 tool_calls)。
  2. 一条 role 为 tool 的消息:tool_call_id 填上一步的 id,content 填函数的执行结果。

然后再发一次请求,模型会根据工具结果给出回答。如果模型又要求调用工具,就重复第 2、3 步。

用一种协议调用只支持另一种协议的模型时,NoviaHub 会自动转换工具的写法。在测试中确认过以下几种情况:

你的请求 模型实际使用的协议 NoviaHub 的转换
Chat Completions 的 tools、tool_choice: "auto" Anthropic(如 Claude 模型) function.parameters 变成 input_schema,tool_choice 变成 {"type": "auto"}
Anthropic 的 tools OpenAI Chat(如 DeepSeek 模型) input_schema 变成 function.parameters
Gemini 的 functionDeclarations OpenAI Chat 变成 tools 里的 function

返回方向同样会转换。例如用 Chat Completions 调用 Claude 模型时,Claude 返回的 tool_use 会转换成 Chat 格式的 tool_calls,流式和非流式都会转换。

更多转换细节和限制,见协议转换兼容性。

  • 工具的 description 和参数说明写得越清楚,模型越容易正确调用。
  • function.arguments 是模型生成的文本,使用前要按 JSON 解析并校验,不要直接执行。
  • 需要稳定使用工具时,优先选模型厂商官方说明支持工具调用的模型。