👓

Gemini 1.5 APIでJSONモードでスキーマを指定する

2024/08/19に公開

Gemini 1.5からJSONモードがあり、スキーマも指定できるようになっているので使い方を紹介します。
プロンプトでJSONスキーマを指定しなくても、APIリクエスト時のパラメータとして指定することができます。

リクエストサンプル

POST https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key={{apikey}}
Content-Type: application/json

{
  "contents": [{
    "parts":[{
      "text": "東京都新宿区大京町22-1 グランファースト新宿御苑3F/4F"
    }],
    "role": "user"
  }],
  "systemInstruction": {
    "parts":[{
      "text": "与えられた住所を、都道府県、市区町村、番地、建物名の4つに分解してください。"
    }],
    "role": "model"
  },
  "generationConfig": {
    "responseMimeType": "application/json",
    "responseSchema" : {
      "type": "object",
         "properties" :{
            "都道府県" : {
              "type": "string"
            },
            "市区町村" : {
              "type": "string"
            },
            "番地" : {
              "type": "string"
            },
            "建物名" : {
              "type": "string"
            }
         }
    }
  }
}

generationConfig 内の responseSchema にレスポンスで欲しい形のJSONスキーマを指定します。
初期の1.5のときには、responseSchemaはなかったはずで、プロンプト内で指定する必要がありました。

レスポンス

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "{\"市区町村\": \"新宿区\", \"建物名\": \"グランファースト新宿御苑\", \"番地\": \"大京町22-1\", \"都道府県\": \"東京都\"}\n"
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
...
}

APIの利用方法については、Gemini APIのメモ(REST API利用)もあわせてご覧いただければと思います。

Discussion