核心指南

结构化输出与工具调用

让模型返回 JSON,或调用应用里的函数

结构化输出用于让模型返回 JSON;工具调用用于让模型提出函数调用,再由你的应用执行。可用字段取决于 API 格式和模型。同一段对话请保持一种格式,并在应用里校验模型生成的所有参数。

选择 API 格式

需要API字段
多数聊天模型可用的 JSON 对象/v1/chat/completionsresponse_format: {"type": "json_object"}
OpenAI 兼容的函数调用/v1/chat/completionstools: [{ "type": "function", "function": ... }]
OpenAI Responses 工具/v1/responsesResponses tools、tool_choice 和 text 字段
Claude 工具调用或 thinking/v1/messagesAnthropic Messages 工具格式
Gemini 函数声明或内置工具/v1beta/models/:model:generateContentGemini 原生 tools 和内容部分

内置工具只能配合对应的 API 格式使用;TokenLab 不会在不同格式之间转换这些工具。

JSON 模式

需要返回 JSON 对象时,可以使用 Chat Completions 的 JSON 模式:

{
  "model": "gpt-5.6-terra",
  "messages": [
    {
      "role": "user",
      "content": "返回一个包含城市和天气的 JSON 对象。"
    }
  ],
  "response_format": { "type": "json_object" }
}

Chat Completions 接受 text 和 json_object。json_schema 与 strict 是否可用取决于模型和 API 格式,只有模型文档明确支持时才能使用。

返回的 JSON 必须在服务端重新解析和校验。JSON 模式不能代替应用自己的 schema 校验。

完成一次工具调用

TokenLab 会返回函数名和参数,真正执行函数的是你的应用:

  1. 发送消息和工具定义。
  2. 从响应中读取 tool_calls、function_call、Anthropic tool_use 或 Gemini 函数调用内容。
  3. 在你自己的后端执行工具。
  4. 用同一种 API 格式追加工具结果。
  5. 继续对话,直到模型返回最终答案。

工具调用和最终回答完成前,请保持同一种 API 格式。Chat Completions、Responses、Messages 和 Gemini 表示工具状态的方式不同。

Chat Completions 示例

curl https://api.tokenlab.sh/v1/chat/completions \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.6-terra",
    "messages": [
      {
        "role": "user",
        "content": "提取名称和电子邮件作为 JSON。如果需要,请查找客户。"
      }
    ],
    "response_format": { "type": "json_object" },
    "tools": [
      {
        "type": "function",
        "function": {
          "name": "lookup_customer",
          "description": "通过电子邮件查找客户",
          "parameters": {
            "type": "object",
            "properties": {
              "email": { "type": "string" }
            },
            "required": ["email"]
          }
        }
      }
    ]
  }'

写好工具 schema

  • Schema 尽量小而明确。层级过深会增加 tokens,也更容易生成错误参数。
  • 产品没有某个值就无法继续时,把它设为必填字段。
  • 值只允许固定选项时使用 enum。
  • 模型经常填错格式时,在提示词里加入一个示例。
  • 字段不受支持时,删除它,或换成明确支持它的 API 格式。

执行工具前

  • 日志中保存 API 格式、模型、工具名和 schema 字段名。
  • 写入数据、发消息或付款前,必须校验工具参数。
  • 工具仍要通过应用自己的权限检查。
  • 同一次工具调用可能因重试重复执行时,使用幂等设计。
  • 工具返回的密钥和隐私信息不能再发给模型。

API 参考

主题参考
API 格式选择 API 格式
Chat Completions创建聊天补全
Responses创建 Response
Anthropic Messages创建 Message
生成 Gemini 内容生成 Gemini 内容

本页内容