--- name: ai-feedback-loop-optimizer description: AIフィードバックループ最適化スキル。プロンプト→出力→評価→改善の反復サイクルを自動化。段階的改善、A/Bテスト、収束判定、ベスト出力選択で最高品質の結果を生成。 --- # AI Feedback Loop Optimizer Skill プロンプト→出力→評価→改善のフィードバックループを自動化し、AI出力を反復的に最適化するスキルです。 ## 概要 このスキルは、AIの出力品質を反復的に改善するフィードバックループを自動化します。初期出力を評価し、問題点を特定して改善されたプロンプトを生成、再度AIに問い合わせることを繰り返し、最高品質の出力に収束させます。 ## 主な機能 - **反復的改善**: 自動的に複数回のフィードバックループを実行 - **品質評価**: 各出力を多角的に評価してスコアリング - **プロンプト最適化**: 評価結果に基づいてプロンプトを改善 - **収束判定**: 品質が十分高くなった時点で自動停止 - **A/Bテスト**: 複数のアプローチを並行試行 - **履歴追跡**: 各イテレーションの改善履歴を記録 - **ベスト出力選択**: 全イテレーション中の最良の出力を選択 - **パラメータ調整**: temperature, top_p等の自動調整 - **改善戦略**: 複数の改善戦略を適用 - **早期停止**: 改善が頭打ちした時点で停止 ## フィードバックループの仕組み ### 基本サイクル ``` ┌──────────────────────────────────────────┐ │ イテレーション N │ ├──────────────────────────────────────────┤ │ │ │ 1. プロンプト生成/改善 │ │ ↓ │ │ 2. AIに問い合わせ │ │ ↓ │ │ 3. 出力を取得 │ │ ↓ │ │ 4. 品質評価(スコアリング) │ │ ↓ │ │ 5. 問題点の特定 │ │ ↓ │ │ 6. 改善戦略の決定 │ │ ↓ │ │ 7. 次のイテレーションへ │ │ または収束判定 │ │ │ └──────────────────────────────────────────┘ ``` ### イテレーション例 #### イテレーション 1: 初期プロンプト ``` プロンプト: 「Reactについて説明してください。」 AI出力: 「Reactは人気のあるJavaScriptライブラリです。」 評価スコア: 35/100 問題点: - 情報が不足(完全性: 30/100) - 具体性に欠ける(具体性: 25/100) - 例がない(実用性: 20/100) 改善戦略: - 具体的な特徴を要求 - 使用例を含めるよう指示 - 構造化を要求 ``` #### イテレーション 2: 改善されたプロンプト ``` プロンプト: 「Reactについて、以下の観点で説明してください: 1. Reactとは何か(概要) 2. 主な特徴(3つ以上) 3. 簡単なコード例 4. 使用される場面」 AI出力: 「# Reactとは Reactは、Facebookが開発したUIを構築するためのJavaScriptライブラリです。 ## 主な特徴 1. コンポーネントベース: 再利用可能なUIパーツ 2. 仮想DOM: 効率的な描画 3. 一方向データフロー: 予測可能な状態管理 ## コード例 ```jsx function Welcome() { return

Hello, React!

; } ``` ## 使用される場面 - SPAの構築 - モバイルアプリ(React Native) - 複雑なUIの管理」 評価スコア: 72/100 問題点: - 詳細が不足(完全性: 70/100) - コード例が簡潔すぎる(実用性: 65/100) 改善戦略: - より実践的な例を要求 - 各特徴の詳細説明を追加 ``` #### イテレーション 3: さらに改善 ``` プロンプト: 「Reactについて、以下の観点で詳細に説明してください: 1. Reactとは何か(歴史も含めて) 2. 主な特徴を詳細に(仮想DOM、コンポーネント、Hooks等) 3. 実践的なコード例(useState, useEffect使用) 4. メリット・デメリット 5. 適した使用場面と不適な場面」 AI出力: [詳細で包括的な説明] 評価スコア: 91/100 問題点: - ほぼ完璧、わずかな改善の余地 収束判定: ✓ 目標スコア(90点)に到達 ベスト出力: イテレーション 3 ``` ## 評価基準 ### 多角的スコアリング ```javascript 評価項目: { 正確性: 25点, // 事実の正確さ 完全性: 20点, // 情報の網羅性 明確性: 15点, // 分かりやすさ 具体性: 15点, // 具体例の有無 構造: 10点, // 論理的な構成 実用性: 10点, // 実際に使える情報 読みやすさ: 5点 // 文章の質 } 総合スコア: 0-100点 ``` ### スコアリング例 ``` AI出力の評価: 正確性: 23/25 - ✓ 事実誤認なし - ✓ 引用が正確 - ✓ 技術的に正しい 完全性: 14/20 - ✓ 主要な情報を含む - ✗ いくつかの重要な点が欠落 - ⚠️ エッジケースの説明なし 明確性: 13/15 - ✓ 分かりやすい表現 - ⚠️ 一部の専門用語に説明なし 具体性: 10/15 - ✓ コード例あり - ✗ より実践的な例が必要 構造: 8/10 - ✓ 見出しで整理 - ⚠️ 深い階層化が不足 実用性: 7/10 - ⚠️ 実際のプロジェクトへの適用が不明確 読みやすさ: 4/5 - ✓ 流暢な文章 総合スコア: 79/100 ``` ## 改善戦略 ### 戦略1: 詳細化 ``` 問題: 完全性スコアが低い(14/20) 改善アクション: - プロンプトに「詳細に」「網羅的に」を追加 - 不足している項目を明示的に要求 - 例: 「エッジケースや制限事項も含めて説明」 ``` ### 戦略2: 構造化 ``` 問題: 構造スコアが低い(8/10) 改善アクション: - 明確な見出し構造を要求 - 箇条書きの使用を指示 - 例: 「Markdownの見出し(#, ##, ###)を使用して構造化」 ``` ### 戦略3: 具体化 ``` 問題: 具体性スコアが低い(10/15) 改善アクション: - より実践的な例を要求 - ユースケースの明示を指示 - 例: 「実際のプロジェクトで使用できるコード例を含めて」 ``` ### 戦略4: 簡潔化 ``` 問題: 冗長で読みにくい 改善アクション: - 簡潔な説明を要求 - 重要なポイントのみに絞る - 例: 「3-5文で簡潔に要約」 ``` ### 戦略5: Few-shot追加 ``` 問題: 期待する形式で出力されない 改善アクション: - 望ましい出力例を追加 - 例: 「以下の形式で出力してください: [例]」 ``` ## 収束判定 ### 判定基準 ``` 収束条件(いずれかを満たす): 1. 目標スコアに到達 - 総合スコア >= 90/100 2. 改善が頭打ち - 3回連続でスコア改善が+2点未満 3. 最大イテレーション数 - 10回のイテレーションを完了 4. スコアの低下 - 前回より大幅にスコアが下がった(-5点以上) - → 前回の出力を採用 ``` ### 収束判定例 ``` イテレーション履歴: 1: スコア 35/100 2: スコア 72/100 (+37) ← 大幅改善、継続 3: スコア 91/100 (+19) ← 大幅改善、継続 4: スコア 93/100 (+2) ← 改善鈍化、継続 5: スコア 94/100 (+1) ← 改善鈍化、継続 6: スコア 94/100 (±0) ← 改善なし、収束判定 収束理由: 改善が頭打ち(3回連続で+2点未満) ベスト出力: イテレーション 5-6(スコア 94/100) ``` ## A/Bテスト機能 ### 複数アプローチの並行試行 ``` 初期プロンプト: 「Reactについて説明してください」 イテレーション 1: アプローチA(詳細化): プロンプト: 「Reactについて、詳細に包括的に説明してください」 出力A: [詳細だが冗長] スコア: 72/100 アプローチB(構造化): プロンプト: 「Reactについて、以下の項目で説明: 1. 概要 2. 特徴 3. 例 4. 使用場面」 出力B: [構造化されているが簡潔] スコア: 78/100 選択: アプローチB(スコアが高い) イテレーション 2: アプローチBをベースにさらに改善... ``` ## パラメータ調整 ### 自動パラメータ最適化 ``` イテレーションごとにパラメータを調整: イテレーション 1: temperature: 0.7 # デフォルト top_p: 0.9 → 出力: やや曖昧 → スコア: 68/100 イテレーション 2: temperature: 0.3 # より決定論的に top_p: 0.5 → 出力: 明確で一貫性あり → スコア: 85/100 イテレーション 3: temperature: 0.2 # さらに厳密に top_p: 0.3 → 出力: 非常に正確 → スコア: 92/100 ``` ## 履歴追跡 ### 改善履歴の記録 ```json { "task": "Reactの説明", "startTime": "2024-11-22T10:00:00Z", "endTime": "2024-11-22T10:05:30Z", "totalIterations": 5, "finalScore": 94, "iterations": [ { "iteration": 1, "prompt": "Reactについて説明してください。", "output": "Reactは人気のある...", "score": 35, "evaluation": { "accuracy": 8, "completeness": 6, "clarity": 7, ... }, "issues": [ "情報が不足", "具体例がない" ], "strategy": "詳細化" }, { "iteration": 2, "prompt": "Reactについて、以下の観点で...", "output": "# Reactとは...", "score": 72, "improvement": 37, "evaluation": {...}, "issues": ["コード例が簡潔すぎる"], "strategy": "具体化" }, ... ], "bestIteration": 5, "bestScore": 94, "convergenceReason": "改善が頭打ち" } ``` ## 使用例 ### 基本的な使い方 ``` 以下のタスクをフィードバックループで最適化してください: タスク: 「TypeScriptの型システムを説明」 目標スコア: 90点 最大イテレーション: 5回 自動的に反復改善を実行し、ベストな出力を返してください。 ``` ### 詳細設定 ``` フィードバックループ最適化を実行してください: タスク: 「Dockerのベストプラクティスをまとめる」 設定: - 目標スコア: 92点 - 最大イテレーション: 7回 - 早期停止: 改善が3回連続で+2点未満 - パラメータ調整: 自動 - A/Bテスト: 2つのアプローチを並行試行 評価重視項目: - 実用性: 30% - 完全性: 25% - 具体性: 25% - その他: 20% 出力: - ベストな結果 - 改善履歴 - 各イテレーションのスコア推移 ``` ### 段階的改善の可視化 ``` タスク: 「GraphQLの利点を説明」 各イテレーションの改善を可視化してください: 出力形式: 1. イテレーションごとのスコア推移グラフ(テキストベース) 2. 各イテレーションの主な改善点 3. 最終的なベスト出力 4. 改善プロセスのサマリー ``` ### カスタム評価基準 ``` タスク: 「React vs Vueの比較」 カスタム評価基準: - 公平性: 30点(どちらかに偏らない) - 網羅性: 25点(重要な観点をカバー) - 実用性: 20点(実際の選定に役立つ) - 正確性: 15点(技術的に正しい) - 構造: 10点(読みやすい構成) 目標スコア: 85点 最大イテレーション: 6回 ``` ## 高度な機能 ### マルチモーダル最適化 ``` テキスト + コード + 図表の最適化: タスク: 「REST APIの設計ガイド」 各イテレーションで改善: - テキスト説明の明確性 - コード例の実用性 - 図表の分かりやすさ(ASCII artまたはMermaid) 総合評価でベストな組み合わせを選択 ``` ### ドメイン特化最適化 ``` 技術ドキュメント向け: - 評価基準: 正確性、完全性、例の質を重視 - 改善戦略: コード例の追加、APIリファレンスとの整合性 ブログ記事向け: - 評価基準: 読みやすさ、関心度、SEOを重視 - 改善戦略: 見出しの最適化、キーワード配置 学術論文向け: - 評価基準: 論理性、引用の正確性、形式を重視 - 改善戦略: 引用の追加、論理構造の強化 ``` ### チーム評価統合 ``` 複数の評価者による並行評価: イテレーションごとに: 1. 評価者A(正確性重視): 82点 2. 評価者B(実用性重視): 88点 3. 評価者C(読みやすさ重視): 85点 平均スコア: 85点 評価者間の不一致が大きい場合: → 各評価者のフィードバックを統合して次のプロンプトを生成 ``` ## ベストプラクティス 1. **明確な目標設定**: 何を最適化するか明確に 2. **適切な評価基準**: タスクに合った評価項目の選択 3. **早期停止の活用**: 無駄なイテレーションを避ける 4. **履歴の記録**: 改善プロセスを分析可能に 5. **A/Bテストの活用**: 複数アプローチを試行 6. **パラメータ調整**: temperature等を動的に調整 7. **収束判定の妥当性**: 目標スコアを現実的に設定 ## 制限事項 - コストの増加: 複数回のAPI呼び出しが必要 - 時間の増加: イテレーションに時間がかかる - 収束の保証なし: 必ずしも改善するとは限らない - 評価の主観性: 自動評価の精度には限界あり ## バージョン情報 - スキルバージョン: 1.0.0 - 最終更新: 2025-11-22 --- ## 使用例まとめ ### シンプルな最適化 ``` タスク: 「Pythonの基礎を説明」 目標スコア: 85点 フィードバックループで最適化してください。 ``` ### 詳細設定での最適化 ``` タスク: [複雑なタスク] 設定: [詳細な設定] カスタム評価: [評価基準] 反復改善を実行し、ベスト出力と改善履歴を提供してください。 ``` このスキルで、AI出力を反復的に改善し、最高品質の結果を得ましょう!