Gemini APIからJSON形式で結果を受け取る方法

Yossy
2026-05-14
2026-05-14

前回、Pythonを使ってGemini APIを呼び出し、テキストで回答をもらうシンプルな方法を試してみました。

今回は、Geminiからの回答を「JSON(ジェイソン)形式」で受け取る方法を試してみました。

プログラムにAIを組み込む場合、単なるテキストの文章ではなく、プログラムで扱いやすいデータ形式(JSONなど)で結果が欲しい場面がたくさんあります。これも実は少し設定を追加するだけで簡単に実現できました。

なぜJSON形式で受け取る必要があるのか?

通常、Geminiに質問すると「コーヒーの淹れ方は〜」と自然な文章で返ってきます。 しかし、その結果を独自のアプリ画面に表示したり、データベースに保存したりしたい場合、長い文章の中から「タイトル」や「材料」などの必要な情報だけをプログラムで抜き出すのは、何らかのプログラムを書く必要があります。

そこで、最初から次のような「JSON形式(プログラムが読み取りやすいように整理された形式)」で返してもらうことで、システム開発がぐっと楽になります。

{
"title": "美味しいコーヒー",
"ingredients": ["コーヒー豆", "お湯"]
}

JSON形式で回答をもらうシンプルな方法

それでは実際にコードを見てみましょう。前回のコードに、設定を少し追加するだけです。

from google import genai

# クライアントの初期化
client = genai.Client(api_key="あなたのAPIキー")

# コンテンツの生成
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="美味しいコーヒーの淹れ方を教えて。必ずJSON形式で出力してください。",
    config={
        "response_mime_type": "application/json"
    }
)

# 返ってきたJSON形式の文字列を表示
print(response.text)

ポイントの解説

  • configresponse_mime_type: "application/json" を指定する これだけで、Geminiが通常のテキストではなく「JSONの形式」で回答を返すモードに切り替わります。
  • プロンプト(質問文)に明記する 質問文の中に「必ずJSON形式で出力してください」と書いておくことで、適切な構造のJSONデータを作ってくれます。

決まった「構造(ルール)」通りにJSONを返してほしい場合

上記のシンプルな方法でもJSONは返ってきますが、項目名(キー名)がGeminiの気分で毎回変わってしまう可能性があります(例:ある時は title、ある時は recipe_name など)。これではプログラムで処理する際にエラーの原因になります。

「絶対に自分が決めた項目名で返してほしい!」という場合は、pydantic というライブラリで「データの設計図」をGeminiに渡すことができます。

from google import genai
from pydantic import BaseModel

# 1. 欲しいデータの設計図(スキーマ)を作る
class Recipe(BaseModel):
    title: str
    ingredients: list[str]
    steps: list[str]

client = genai.Client(api_key="あなたのAPIキー")

# 2. configに設計図(response_schema)を渡す
response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="美味しいコーヒーの淹れ方を教えて",
    config={
        "response_mime_type": "application/json",
        "response_schema": Recipe,
    }
)

print(response.text)

こうすることで、「必ず title(文字列)、ingredients(リスト)、steps(リスト)が含まれたJSON」を生成してくれます。これを 構造化出力(Structured Outputs) と呼びます。


{
  "title": "美味しいハンドドリップコーヒーの淹れ方",
  "ingredients": [
    "コーヒー豆 (中挽き) 20g",
    "お湯 (90-95°C) 300ml",
    "コーヒーフィルター",
    "コーヒードリッパー",
    "コーヒーサーバー",
    "スケール (推奨)",
    "タイマー (推奨)"
  ],
  "steps": [
    "お湯を沸騰させ、90〜95°Cに温度を調整します。",
    "コーヒー豆を中挽きにします。",
    "ドリッパーにペーパーフィルターをセットし、全体が湿る程度にお湯を注ぎ、湯通しします。",
    "湯通ししたフィルターに挽いたコーヒー豆を入れ、ドリッパーを軽く揺らして表面を平らにならします。",
    "抽出の1投目として、コーヒー粉全体が湿るように中心から外に向かってゆっくりと少量のお湯を注ぎます。",
    "蒸らしが終わったら、2投目を始めます。中心から「の」の字を描くようにゆっくりとお湯を注ぎます。",
    "目標の抽出量に達するまで、同様にゆっくりとお湯を注ぎ続けます。",
    "抽出が終わったら、ドリッパーをサーバーから外し、カップに注いで完成です。"
  ]
}


AIを活用したアプリケーションを作る際には必須となる非常に強力な機能です。「AIの出力結果が安定しない」と悩んだときは、この設計図を渡す方法を思い出してください。

まとめ

今回は、Gemini APIからの回答をJSON形式で受け取る方法をステップアップとして解説しました。

  • まずは手軽にJSONが欲しい場合: response_mime_type を指定する。
  • かっちりとした形式が決まっている場合:設計図を渡す。

スクリプトやプログラムに、AIによる自然言語指示による曖昧な処理を組み込めるのは非常に強力な手段だなと思いました。