前回作ったプログラムで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']}")
おおー!!ちゃんと整理して表示されるようになった!!
