教えすぎないAI設計の極意──PRGymに学ぶ「段階的ヒント生成」のプロンプト戦略
出典: Chiyosuke

コードレビュー練習ツールPRGymでは、ユーザーに答えを直接教えず、適切なヒントを段階的に与えるAI設計を実現しています。本記事では、教育効果を最大化する「教えすぎないフィードバックプロンプト」の設計思想と、意図的に欠陥を含むコード生成の技術について、実践的な観点から分析します。
学習支援AIの最大の課題──「答えを教えすぎない」設計
AIを活用した学習ツールが増える中、多くのサービスが直面している課題があります。それは**「AIが優秀すぎて、学習者の成長を阻害してしまう」**という皮肉な問題です。
コードレビュー練習ツール「PRGym」は、この課題に正面から取り組んでいます。AIに問題生成とフィードバック生成を任せながらも、ユーザーに答えを直接教えず、適切な難易度で段階的にヒントを与える──この繊細なバランスをプロンプト設計で実現しているのです。
今回は、PRGymの事例から「教えすぎないAI」を設計するためのプロンプト技術を深掘りします。
PRGymのAI活用アーキテクチャ
PRGymでは、AIが以下の5つの要素を生成します:
1. **意図的に欠陥を含んだコード**
2. **欠陥の行番号と説明**(正解データ)
3. **模範レビューコメント**
4. **ユーザーのレビューへのフィードバック**
5. **最終評価**
この構成で注目すべきは、単なるコード生成ではなく「**教育的に価値のある欠陥**」を作り出している点です。現実のコードレビューで頻出するパターンを学習させるには、ランダムなバグではなく、意図的に設計された問題が必要になります。
二つの核心的プロンプト設計
1. コードレビュー問題生成プロンプトの要諦
効果的な学習問題を生成するには、以下の要素をプロンプトに組み込む必要があります:
2. 「教えすぎない」フィードバックプロンプトの核心
こちらがより高度な設計が求められる領域です。効果的な学習には「**適切な認知負荷**」が必要であり、AIは以下を判断しなければなりません:
プロンプト設計では、こうした段階的支援のロジックを明示的に指示する必要があります。例えば:
- ユーザーが正しい行を指摘した場合:問題の種類についてのヒントのみ
- 間違った行を指摘した場合:コードのどの領域に注目すべきかを示唆
- 全く見当違いの場合:レビューの観点(セキュリティ、性能など)を提示編集部の視点
従来の学習ツールとの決定的な違い
従来のプログラミング学習ツールの多くは「正解/不正解」の二値判定か、あるいは完全な解答提示のどちらかでした。GitHub CopilotやChatGPTを学習に使う場合も、質問すれば即座に完全な答えが返ってくるため、**思考プロセスのショートカット**が起きてしまいます。
PRGymのアプローチが優れているのは、**AIの出力を多段階に分離**している点です。問題生成AI、評価AI、フィードバックAI──それぞれが異なる目的を持ち、異なるプロンプト設計で動作します。これは単一のLLMインタラクションでは実現できない、アーキテクチャレベルの工夫です。
このアプローチのメリット
1. **学習者の自律性を保持**:答えを与えられるのではなく、自分で気づくプロセスを経験できる
2. **段階的難易度調整**:ユーザーのレベルに応じて動的にヒントの詳細度を変更可能
3. **再現性のある教材生成**:問題の質を一定水準に保ちながら、無限にバリエーションを生成できる
4. **評価の客観性**:人間のレビュアーのように疲労や主観のブレがない
注意すべき設計上の落とし穴
一方で、この設計には以下の課題も存在します:
これらを解決するには、プロンプトに**明示的な評価基準**と**出力フォーマットの厳密な定義**を組み込むことが不可欠です。
適用範囲の考察
この「教えすぎないAI」パターンは、以下の領域で特に有効です:
逆に、**事実知識の暗記**や**正解が一つしかない問題**には過剰設計になります。単純な知識確認なら、従来のクイズ形式で十分です。
今日から試せるアクション
アクション1:段階的ヒントシステムの実装
あなたが学習ツールや社内教育システムを作っているなら、以下のプロンプトパターンを試してください:
あなたは学習支援AIです。ユーザーの回答を評価し、以下のルールでヒントを提供してください:
レベル1(最初の試行):
- 問題領域のみを示唆(例:「セキュリティの観点で見直してください」)
- 具体的な行番号や修正方法は伝えない
レベル2(2回目の試行):
- コードの特定領域を示唆(例:「データベースクエリの部分に注目」)
- 何が問題かはまだ教えない
レベル3(3回目の試行):
- 具体的な問題点を説明
- ただし修正コードは提示しない
ユーザーの現在の回答:[ユーザー入力]
正解データ:[内部保持]アクション2:教育的欠陥の分類タクソノミー作成
コード問題を生成する際、以下のような分類表をプロンプトに含めることで、質の高い問題を安定生成できます:
| カテゴリ | 難易度 | 例 |
|---------|--------|----|
| セキュリティ | 初級 | SQLインジェクション脆弱性 |
| セキュリティ | 中級 | XSS対策の不備 |
| パフォーマンス | 初級 | N+1クエリ問題 |
| 設計 | 上級 | 責務の分離違反 |
この表をシステムプロンプトに組み込み、「中級レベルのセキュリティ問題を含むコードを生成」のように指示します。
アクション3:フィードバック品質のモニタリング
AIが生成したフィードバックの有効性を測定する仕組みを作りましょう:
これらのデータを収集し、プロンプトを継続的に改善します。A/Bテストで異なるヒント戦略を比較するのも効果的です。
まとめ:「引き出す」AIの時代へ
生成AIの進化により、「何でも答えてくれるAI」は簡単に作れるようになりました。しかし本当に価値があるのは、**ユーザーの思考を促進し、自律的な学習を支援するAI**です。
PRGymの事例は、プロンプト設計次第でAIの振る舞いを教育的に最適化できることを示しています。答えを教えるのではなく、考えるきっかけを与える──この設計思想は、今後のAI活用において極めて重要な指針となるでしょう。
あなたのプロジェクトでも、「教えすぎないAI」の実装にチャレンジしてみてください。
この情報は @Chiyosuke さんの投稿を参考にしています。
出典: Chiyosuke


