テキスト生成 AI モデルをデータベース、サービス、外部システムとプログラムから連携させたいとき(通常はツール呼び出しや AI エージェントの構築時)は、自然言語ではなく構造化された応答形式が必要です。
Workers AI は JSON Mode に対応しています。アプリケーションは AI モデルとのやり取りで、構造化された出力応答を要求できます。
JSON Mode は OpenAI の実装と互換です。有効にするには、次の規則でリクエストオブジェクトに response_format プロパティを追加します。
{
response_format: {
title: "JSON Mode",
type: "object",
properties: {
type: {
type: "string",
enum: ["json_object", "json_schema"],
},
json_schema: {},
}
}
}json_schema は有効な JSON Schema ↗ 宣言である必要があります。
JSON Format を使うときは、LLM へ送るリクエストの一部として、次の例のようにスキーマを渡します。
{
"messages": [
{
"role": "system",
"content": "Extract data about a country."
},
{
"role": "user",
"content": "Tell me about India."
}
],
"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": "India",
"capital": "New Delhi",
"languages": [
"Hindi",
"English",
"Bengali",
"Telugu",
"Marathi",
"Tamil",
"Gujarati",
"Urdu",
"Kannada",
"Odia",
"Malayalam",
"Punjabi",
"Sanskrit"
]
}
}このように、モデルはリクエストの JSON Schema 定義に従い、検証済みの JSON オブジェクトで応答します。
JSON Mode に対応しているモデルの一覧です。
- @cf/meta/llama-3.3-70b-instruct-fp8-fast
- @cf/meta/llama-3-8b-instruct
- @cf/meta/llama-3.1-8b-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 Schema どおりに応答することを保証できません。タスクの複雑さや JSON Schema の妥当性によっては、極端な状況でモデルがリクエストを満たせないことがあります。その場合はエラー JSON Mode couldn't be met が返されるので、処理する必要があります。
JSON Mode は現在、ストリーミングに対応していません。