APIQIKAPIQIK
文档导航
场景参考

结构化输出

通过 JSON 模式或工具调用获得程序可解析结果,并在应用侧严格校验。

当模型结果需要进入数据库、工作流或接口时,不要依赖自然语言格式。使用模型支持的 JSON 模式或工具调用,并在应用侧校验。

JSON 模式示例

import json
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["APIQIK_API_KEY"],
    base_url="https://api.dimleap.cn/v1",
)

response = client.chat.completions.create(
    model="glm-5.1",
    messages=[
        {
            "role": "system",
            "content": (
                "只返回 JSON 对象,字段为 language、sentiment、summary。"
                "sentiment 只能是 positive、neutral 或 negative。"
            ),
        },
        {
            "role": "user",
            "content": "评价:接口接入很简单,但第一次响应有点慢。",
        },
    ],
    response_format={"type": "json_object"},
    temperature=0,
)

data = json.loads(response.choices[0].message.content)
print(data)

先确认模型支持 response_format 的支持情况取决于具体模型。若模型不支持 JSON 模式,可使用工具调用描述字段结构。

必须做的校验

  • 捕获 JSON 解析错误,不直接信任模型文本。
  • 检查字段是否缺失、类型是否正确、枚举是否在允许范围内。
  • 限制字符串长度、数组数量和嵌套深度。
  • 业务关键字段失败时重新生成或转人工,不使用猜测默认值。
  • 不要把模型生成的 SQL、代码或 URL 直接执行。

JSON 模式还是工具调用

方式适合场景注意事项
JSON 模式分类、抽取、配置生成等单个结构化结果。通常保证可解析 JSON,但字段仍需业务校验。
工具调用需要选择动作、调用多个函数或执行工作流。模型只提出调用,应用决定是否执行。
纯提示词模型不支持上述能力时的降级方案。格式可靠性较低,需要更强的解析和重试。