JSON 输出

JSON 输出模式强制模型返回有效 JSON,而不是纯文本。适用于结构化数据提取、API 响应和与其他系统集成。

如何启用

在请求中将 response_format 设为 { "type": "json_object" }

{
  "model": "deepseek-v3",
  "messages": [
    {
      "role": "system",
      "content": "你是一个数据提取助手。只返回有效 JSON。"
    },
    {
      "role": "user",
      "content": "从这段文本中提取姓名、年龄和城市:John 30 岁,住在纽约。"
    }
  ],
  "response_format": { "type": "json_object" }
}

响应

{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "{\"name\": \"John\", \"age\": 30, \"city\": \"New York\"}"
      }
    }
  ]
}

要求

  1. 在 prompt 中包含 "json":系统或用户消息必须指示模型输出 JSON(如「返回 JSON」、「仅输出 JSON」)。
  2. 设置 response_format:必须设置 response_format: { "type": "json_object" }
  3. 设置合适的 max_tokens:JSON 输出可能需要更多 token。设够 max_tokens 避免截断。

支持的模型

TB 目录中所有模型均支持 JSON 输出,除非模型目录中另有说明。

已知问题

问题解决方案
模型偶尔返回空内容在 prompt 中加明确指令如「JSON 中包含所有字段」。
max_tokens 太低时 JSON 被截断增加 max_tokens 确保完整输出。
复杂 schema 时可能返回无效 JSON简化 schema 或用两步法(提取然后验证)。
推理模型可能不严格遵守 JSON 格式添加系统消息:「最终答案必须是有效 JSON」。

最佳实践

  1. 使用系统消息:告诉模型只输出 JSON。
  2. 提供 schema 示例:在 prompt 中展示期望的 JSON 结构。
  3. 验证响应:始终在代码中解析并验证 JSON。
  4. 优雅处理错误:解析失败时,用更清晰的指令重试。

相关文档