# Gemini API リクエスト設定 > 超天才クイズ v3 における Gemini API 呼び出しの詳細設定 --- ## 1. 基本設定 | 項目 | 値 | |------|-----| | **モデル** | `gemini-2.5-flash` | | **API キー** | 環境変数 `GEMINI_API_KEY` | | **SDK** | `google-generativeai` (Python) | ```python import google.generativeai as genai genai.configure(api_key=os.environ.get("GEMINI_API_KEY")) self.model = genai.GenerativeModel("gemini-2.5-flash") ``` --- ## 2. 用途別パラメータ設定 ### 2.1 問題生成 (`generate_questions`) | パラメータ | 値 | 説明 | |-----------|-----|------| | `temperature` | **0.7** | 創造性高め(多様な問題生成) | | `max_output_tokens` | **16384** | 5問分の出力を保証 | | `response_mime_type` | `application/json` | JSON形式で直接取得 | ```python generation_config=genai.GenerationConfig( temperature=0.7, max_output_tokens=16384, response_mime_type="application/json" ) ``` ### 2.2 教科別評価生成 (`generate_evaluation`) | パラメータ | 値 | 説明 | |-----------|-----|------| | `temperature` | **0.5** | 一貫性重視(安定した評価) | | `max_output_tokens` | **2048** | 1教科分の評価に十分 | | `response_mime_type` | `application/json` | JSON形式で直接取得 | ```python generation_config=genai.GenerationConfig( temperature=0.5, max_output_tokens=2048, response_mime_type="application/json" ) ``` ### 2.3 全体評価生成 (`_generate_overall_evaluation`) | パラメータ | 値 | 説明 | |-----------|-----|------| | `temperature` | **0.5** | 一貫性重視 | | `max_output_tokens` | **1024** | 全体サマリーに十分 | | `response_mime_type` | `application/json` | JSON形式で直接取得 | --- ## 3. システムインストラクション(プロンプト) ### 3.1 問題生成プロンプト **ロール定義**: ``` あなたは中学受験対策の{教科名}問題作成の専門家です。 ``` **主要指示**: - Knowledge Base(教材)に基づいた問題を生成 - 指定されたジャンルID(JP01, MA01等)を使用 - 難易度を「基本」「標準」「応用」でバランス - 5問生成 **出力形式**: ```json [ { "category": "ジャンルID", "difficulty": "標準", "question": "問題文", "choices": ["選択肢1", "選択肢2", "選択肢3", "選択肢4"], "correct_answer": 0, "explanation": "解説文" } ] ``` **オプション追加情報**: - ユーザー統計(正答率60%未満は基本中心、60%以上は標準・応用) - 直近20問の履歴(重複回避用) ### 3.2 評価生成プロンプト **ロール定義**: ``` あなたは中学受験の{教科名}指導の専門家です。 ``` **入力データ**: - 今回の結果(問題数、正解数、正答率) - カテゴリ別結果 - 解答詳細(最大10問) - 累積統計(オプション) **出力形式**: ```json { "advice": "総合的なアドバイス(2-3文)", "strengths": ["強み・得意分野1", "強み・得意分野2"], "weaknesses": ["改善点・苦手分野1", "改善点・苦手分野2"], "recommended_topics": ["おすすめの学習トピック1", "おすすめの学習トピック2"] } ``` **注意事項**: - 具体的で建設的なアドバイス - 小学生に分かりやすい表現 - 励ましの言葉を含める ### 3.3 全体評価プロンプト **入力**: 教科別評価のJSON **出力形式**: ```json { "overall_advice": "全体的なアドバイス(2-3文)", "strengths": ["強み1", "強み2"], "weaknesses": ["改善点1", "改善点2"], "next_steps": ["次のステップ1", "次のステップ2"] } ``` --- ## 4. ジャンルID一覧 ### 国語 (jp) | ID | 名称 | |----|------| | JP01 | 漢字・語彙 | | JP02 | 文法・言葉のきまり | | JP03 | 物語文読解 | | JP04 | 説明文・論説文読解 | | JP05 | 随筆文読解 | | JP06 | 詩・韻文 | | JP07 | 記述問題 | | JP08 | 知識・文学史 | ### 算数 (math) | ID | 名称 | |----|------| | MA01 | 計算 | | MA02 | 数の性質 | | MA03 | 割合・比 | | MA04 | 速さ | | MA05 | 文章題(その他) | | MA06 | 平面図形 | | MA07 | 立体図形 | | MA08 | 場合の数・確率 | | MA09 | グラフ・表 | | MA10 | 特殊算 | ### 理科 (sci) | ID | 名称 | |----|------| | SC01 | 力・運動 | | SC02 | 電気 | | SC03 | 光・音・熱 | | SC04 | 物質の性質 | | SC05 | 水溶液 | | SC06 | 燃焼・化学変化 | | SC07 | 植物 | | SC08 | 動物 | | SC09 | 人体 | | SC10 | 天体 | | SC11 | 気象 | | SC12 | 地学 | ### 社会 (soc) | ID | 名称 | |----|------| | SO01 | 日本地理(国土・自然) | | SO02 | 日本地理(産業) | | SO03 | 世界地理 | | SO04 | 歴史(古代〜平安) | | SO05 | 歴史(鎌倉〜室町) | | SO06 | 歴史(安土桃山〜江戸) | | SO07 | 歴史(明治〜現代) | | SO08 | 公民(政治・憲法) | | SO09 | 公民(経済・国際) | | SO10 | 時事問題 | --- ## 5. 関連ファイル | ファイル | 説明 | |---------|------| | `src/services/gemini_service.py` | Gemini API呼び出しメインロジック | | `src/prompts/question_prompts.py` | 問題生成プロンプト定義 | | `src/prompts/evaluation_prompts.py` | 評価生成プロンプト定義 | | `src/knowledge/*.md` | 教科別Knowledge Base | --- ## 6. 設定変更時の注意 - **temperature**: 上げると多様性増加、下げると一貫性増加 - **max_output_tokens**: 出力が途切れる場合は増やす - **モデル変更**: `gemini-2.5-flash` は高速・低コスト。精度重視なら `gemini-2.0-pro` 検討 --- **最終更新**: 2025-12-12