当我们希望文本生成 AI 模型以编程方式与数据库、服务和外部系统交互时,通常在使用工具调用或构建 AI 代理时,我们必须使用结构化的响应格式而不是自然语言。
Workers AI 支持 JSON 模式,使应用程序能够在与 AI 模型交互时请求结构化的输出响应。
JSON 模式与 OpenAI 的实现兼容;要启用,请使用以下约定将 response_format
属性添加到请求对象中:
{ response_format: { title: "JSON 模式", type: "object", properties: { type: { type: "string", enum: ["json_object", "json_schema"], }, json_schema: {}, } }}
其中 json_schema
必须是有效的 JSON 模式 ↗ 声明。
使用 JSON 格式时,请将架构作为请求的一部分传递给 LLM,如下例所示。
{ "messages": [ { "role": "system", "content": "提取有关国家的数据。" }, { "role": "user", "content": "告诉我关于印度的信息。" } ], "response_format": { "type": "json_schema", "json_schema": { "type": "object", "properties": { "name": { "type": "string" }, "capital": { "type": "string" }, "languages": { "type": "array", "items": { "type": "string" } } }, "required": [ "name", "capital", "languages" ] } }}
LLM 将遵循该架构,并返回如下所示的响应:
{ "response": { "name": "印度", "capital": "新德里", "languages": [ "印地语", "英语", "孟加拉语", "泰卢固语", "马拉地语", "泰米尔语", "古吉拉特语", "乌尔都语", "卡纳达语", "奥里亚语", "马拉雅拉姆语", "旁遮普语", "梵语" ] }}
如您所见,模型正在遵守请求中的 JSON 架构定义,并以经过验证的 JSON 对象进行响应。
以下是现在支持 JSON 模式的模型列表:
- @cf/meta/llama-3.1-8b-instruct-fast
- @cf/meta/llama-3.1-70b-instruct
- @cf/meta/llama-3.3-70b-instruct-fp8-fast
- @cf/meta/llama-3-8b-instruct
- @cf/meta/llama-3.1-8b-instruct
- @cf/meta/llama-3.2-11b-vision-instruct
- @hf/nousresearch/hermes-2-pro-mistral-7b
- @hf/thebloke/deepseek-coder-6.7b-instruct-awq
- @cf/deepseek-ai/deepseek-r1-distill-qwen-32b
我们将继续扩展此列表,以跟上新的和被请求的模型。
请注意,Workers AI 不能保证模型会根据请求的 JSON 模式进行响应。根据任务的复杂性和 JSON 模式的充分性,模型在极端情况下可能无法满足请求。如果出现这种情况,则会返回错误 JSON 模式无法满足
,并且必须进行处理。
JSON 模式目前不支持流式传输。
- @2025 Cloudflare Ubitools
- Cf Repo