AI・機械学習
上級
CRITIC: ツール対話型自己修正(クリティックツールたいわがたじこしゅうせい)
LLMが外部ツール(コード実行・検索・計算機)を呼び出してその結果をフィードバックとし、自分の出力を段階的に修正するフレームワーク。「ツールの目」で誤りを検出し修正する。
0 回閲覧
0 いいね
2026/6/7 更新
関連タグ
ツール使用
自己修正
外部検証
コード実行
フィードバックループ
CRITIC: ツール対話型自己修正
CRITIC(Correcting with Tool-Interactive Critiquing, 2024)は、LLMの自己修正に外部ツールの実行結果を組み込むことで、信頼性の高い修正ループを実現するフレームワークです。
問題意識: 外部検証なし自己修正の限界
LLMが内省だけで誤りを修正しようとしても、同じ誤りを異なる言葉で繰り返すことがあります。「自分の思い込みで自分をチェックする」ため、真の誤りを検出できません。
CRITICはこれを解決するため、外部ツール(客観的事実)で批評します。
CRITICのフロー
入力 → [LLM生成] → 初期回答
↓
[批評プロンプト] ← ツール選択
↓
外部ツール実行
例: Python実行 → エラーあり/なし
例: 検索 → 「この主張は誤り」
例: 計算機 → 「3.14ではなく3.14159..」
↓
批評結果 + ツール出力
↓
[改善生成] → 修正後出力
↓
(繰り返し or 終了)
対応ツールと効果
| ツール | 検証内容 | 主な用途 |
|---|---|---|
| Python実行エンジン | コードの実行結果・エラー | コード生成・数値計算 |
| 検索API (Google/Bing) | 主張の事実確認 | 質問応答・要約 |
| WolframAlpha | 数式・計算結果 | 数学・科学 |
| ユニットテスト実行 | 関数仕様の充足度 | ソフトウェア開発 |
実験結果
コード生成(HumanEval):
- GPT-3.5 ベースライン: 72.2%
- CRITIC適用後: 89.8% (+17.6%)
- 主な効果: 実行エラー・テスト失敗を検出して修正
自由形式QA(AmbigNQ):
- ベースライン: 46.3%
- CRITIC適用後: 58.4% (+12.1%)
- 主な効果: 誤情報を検索で検出して修正
Self-RefineとCRITICの比較
| Self-Refine | CRITIC | |
|---|---|---|
| フィードバック源 | モデル内省のみ | 外部ツール(客観的) |
| 事実誤りの検出 | 困難 | 検索で検出可能 |
| 数値エラー検出 | 困難 | 計算機・実行で検出 |
| 外部依存 | なし | ツールAPI必要 |
| 信頼性 | 限定的 | 高い |
実装のポイント
def critic_loop(problem, llm, tools, max_iter=3):
answer = llm.generate(problem)
for _ in range(max_iter):
tool_name, tool_input = llm.select_tool(answer, tools)
tool_result = tools[tool_name].run(tool_input)
critique = llm.critique(answer, tool_result)
if "no issues" in critique:
break
answer = llm.refine(answer, critique)
return answer
自作PC環境での活用
CRITICパターンはローカルLLM(Llama 3.1 8B等)で実装可能です。Pythonインタープリタをsubprocessで呼び出すことで、コード実行フィードバックをローカルに構築できます。RTX 3080以上のGPUがあれば7Bモデルで実用的なCRITICループが回せます。
まとめ
CRITICは「信頼できる外部の目」を導入することで、LLMの自己修正の信頼性を大幅に向上させます。コード生成・数値計算・事実確認など、客観的に検証できるタスクで特に効果を発揮します。