Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

JSON Mode

最終更新 Markdown で表示Agent セットアップ

テキスト生成 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 Mode の例

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 に対応しているモデルの一覧です。

新しいモデルや要望の多いモデルに合わせて、この一覧は今後も拡張します。

Workers AI は、モデルが要求された JSON Schema どおりに応答することを保証できません。タスクの複雑さや JSON Schema の妥当性によっては、極端な状況でモデルがリクエストを満たせないことがあります。その場合はエラー JSON Mode couldn't be met が返されるので、処理する必要があります。

JSON Mode は現在、ストリーミングに対応していません。

役に立ちましたか?