タイトル画像
琴葉葵

前回作ったプログラムでAIが返事してくれる仕組みは作れたけど、このままだと文章でのやり取りになっちゃうから、欲しい情報を文章の中から取り出すのは難しくない?

琴葉茜

良いところに気づいたね!だから今回は、欲しい情報だけを返信してくれるようにしていこうか

琴葉葵

そんな事もできるんだね!

琴葉茜

とはいえ、やることは「json」形式で返信してもらうようにするだけだから簡単だよ

琴葉葵

JSON!
「標準ライブラリ」の時に勉強したやつだね!!

琴葉茜

そうそう
「Gemini API」には指定した形式で返信してくれる機能があるから、これを上手く活用するよ

琴葉葵

具体的にはどうするの?

琴葉茜

まずはプロンプトについて
どんな形式のJSONデータで返してほしいかを追加すればOK

skill_name = "ギガフレア・ノヴァ" # 好きな技名にしてみよう!

prompt = f"""
RPGのゲームマスターとして、技名「{skill_name}」の設定を作ってください。
以下のJSONフォーマットで出力してください。

{{
  "name": "{skill_name}",
  "element": "属性(火、水、風、雷、光、闇から選択)",
  "power": "威力(10〜999の数値)",
  "mp_cost": "消費MP(5〜100の数値)"
}}
"""
琴葉葵

(ギガフレア・ノヴァ...)

琴葉茜

次に「Gemini API」を呼び出す部分で「response_mime_type」を「application/json」に設定するよ

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=prompt,
    config={"response_mime_type": "application/json"} # ここが重要!
)
琴葉葵

この設定がすごく大切そう...!!

琴葉茜

あとは、帰ってきた情報を「json」ライブラリの「json.loads()」で変換すれば、あとは辞書型や配列型のデータの取り出し方次第で、欲しい情報を自由に取り出せるよ!

from google import genai
import json

GEMINI_API_KEY = "AIza~"  # ここにGemini API Keyを入力

# AIの設定
client = genai.Client(api_key=GEMINI_API_KEY)

skill_name = "ギガフレア・ノヴァ"

prompt = f"""
RPGのゲームマスターとして、技名「{skill_name}」の設定を作ってください。
以下のJSONフォーマットで出力してください。

{{
  "name": "{skill_name}",
  "element": "属性(火、水、風、雷、光、闇から選択)",
  "power": "威力(10〜999の数値)",
  "mp_cost": "消費MP(5〜100の数値)"
}}
"""

response = client.models.generate_content(
    model='gemini-2.5-flash',
    contents=prompt,
    config={'response_mime_type': 'application/json'}
)

print(response.text)

# AIから届いた文字列(response.text)を、Pythonのデータに変換
skill_data = json.loads(response.text)

# あとは好きなように取り出せる!
print(f"技名: {skill_data['name']}")
print(f"威力: {skill_data['power']}")

解説画像1
琴葉葵

おおー!!ちゃんと整理して表示されるようになった!!