Prompt Engineering Helper Skill
LLM(大規模言語モデル)プロンプトの最適化とテストを支援するスキルです。
概要
このスキルは、LLMプロンプトの品質を向上させるための包括的な支援を提供します。プロンプトの分析、改善提案、A/Bテスト、ベストプラクティスの適用、パフォーマンス評価など、プロンプトエンジニアリングに必要な全てのプロセスをサポートします。
主な機能
-
プロンプト分析: 現在のプロンプトの強み・弱みを評価
-
改善提案: より効果的なプロンプトへの書き換え案を提示
-
A/Bテスト: 複数のプロンプトバリエーションを比較評価
-
ベストプラクティス適用: 業界標準のプロンプト設計パターンを適用
-
再現性検証: 同じプロンプトで一貫した結果が得られるかテスト
-
Few-shot例最適化: 効果的な例の選定と配置
-
Chain-of-Thought: 推論プロセスを明示的にするプロンプト設計
-
評価メトリクス: 明確性、具体性、完全性、安全性などの指標でスコアリング
-
トークン最適化: コストを抑えながら品質を維持
-
マルチモーダル対応: テキスト、画像、構造化データを含むプロンプト
プロンプト分析の評価基準
- 明確性 (Clarity)
プロンプトが曖昧さなく明確に意図を伝えているか
Good:
以下の顧客レビューを分析し、次の情報を抽出してください:
- 感情(ポジティブ/ネガティブ/中立)
- 主なトピック(最大3つ)
- 改善提案(あれば)
レビュー: {review_text}
出力形式: { "sentiment": "ポジティブ|ネガティブ|中立", "topics": ["トピック1", "トピック2", "トピック3"], "suggestions": ["提案1", "提案2"] }
Avoid:
このレビューについて分析してください。
- 具体性 (Specificity)
タスクの詳細、制約、期待される出力が明確に定義されているか
Good:
以下のPythonコードをレビューし、以下の観点で問題点を指摘してください:
- セキュリティ脆弱性(SQLインジェクション、XSSなど)
- パフォーマンスの問題(N+1クエリ、不要なループなど)
- コードスタイル(PEP8違反)
各問題について:
- 問題の種類
- 該当する行番号
- 具体的な改善案
を提示してください。
Avoid:
このコードをレビューしてください。
- 完全性 (Completeness)
必要な情報、制約、エッジケースの処理がすべて含まれているか
Good:
以下の条件でタスク管理アプリのユーザーストーリーを生成してください:
対象ユーザー: フリーランスエンジニア 主な機能: タスク作成、編集、削除、優先度設定、期限管理 制約:
- モバイルファーストのデザイン
- オフライン対応
- 最大タスク数: 1000件
各ユーザーストーリーは以下の形式で出力: "As a [ユーザータイプ], I want to [アクション] so that [目的]"
10件のユーザーストーリーを生成してください。
Avoid:
タスク管理アプリのユーザーストーリーを作ってください。
- コンテキスト提供 (Context)
LLMが適切に判断するための背景情報が十分に提供されているか
Good:
あなたは経験豊富なReactコンサルタントです。 クライアントは中規模のECサイト(月間10万PV)を運営しており、 現在のReactアプリケーションのパフォーマンスに課題を抱えています。
以下のコードを分析し、パフォーマンス改善のための具体的な提案を 3つ挙げてください。各提案には以下を含めてください:
- 問題点
- 改善案
- 期待される効果
- 実装の難易度(低/中/高)
コード: {code}
Avoid:
このReactコードを改善してください。
- 構造化 (Structure)
プロンプトが論理的に構造化され、読みやすいか
Good:
タスク
GitHubリポジトリのREADME.mdを生成してください。
入力情報
- プロジェクト名: {project_name}
- 説明: {description}
- 主な機能: {features}
- 技術スタック: {tech_stack}
出力要件
- プロジェクト概要(2-3文)
- 主な機能リスト
- インストール手順
- 使用例
- ライセンス情報
制約
- Markdown形式
- 合計文字数: 500-800字
- コードブロックは適切にハイライト
Avoid:
README.mdを作ってください。プロジェクト名は{project_name}で、 説明は{description}です。機能は{features}で技術スタックは{tech_stack}です。 インストール方法と使い方も書いてください。
プロンプト改善パターン
パターン1: Zero-shot → Few-shot
Before (Zero-shot):
以下のテキストを英語に翻訳してください: {text}
After (Few-shot):
以下の例を参考に、テキストを英語に翻訳してください:
例1: 日本語: 今日は良い天気ですね。 英語: It's nice weather today.
例2: 日本語: 会議は午後3時に始まります。 英語: The meeting starts at 3 PM.
例3: 日本語: このプロジェクトは順調に進んでいます。 英語: This project is progressing smoothly.
翻訳してください: {text}
パターン2: 曖昧 → 具体的
Before:
このデータを分析してください。
After:
以下のCSVデータを分析し、次の情報を抽出してください:
- 基本統計量(平均、中央値、標準偏差)
- 外れ値の検出(±3σ)
- 欠損値の数とパーセンテージ
- カテゴリ変数の分布
出力形式: JSON { "statistics": {...}, "outliers": [...], "missing_values": {...}, "categorical_distribution": {...} }
データ: {csv_data}
パターン3: 単一ステップ → Chain-of-Thought
Before:
この数学の問題を解いてください: {problem}
After:
以下の数学の問題を、ステップバイステップで解いてください:
問題: {problem}
解答手順:
- 問題の理解: 何を求められているか明確にする
- 既知の情報と未知の情報を整理
- 適用できる公式や定理を特定
- 計算プロセスを段階的に記述
- 答えを検証
最終的な答えは以下の形式で出力: 答え: [数値] [単位]
パターン4: 無制約 → 制約付き
Before:
ブログ記事を書いてください。 テーマ: {topic}
After:
以下の制約に従って、ブログ記事を執筆してください:
テーマ: {topic} 対象読者: 初心者エンジニア(経験1-2年) 文体: カジュアルだが専門的 文字数: 1500-2000字 構成:
- 導入(問題提起): 200字
- 本文(解決策・説明): 1000字
- 具体例・コード: 500字
- まとめ: 300字
含めるべき要素:
- 実践的なコード例
- 初心者が陥りやすい落とし穴
- 参考リンク(2-3個)
避けるべき要素:
- 過度に専門的な用語(必要な場合は説明を追加)
- 古い情報(2020年以前の技術)
パターン5: 出力形式の明示
Before:
このJSON APIレスポンスからエラー情報を抽出してください。 {api_response}
After:
以下のJSON APIレスポンスからエラー情報を抽出し、 指定した形式で出力してください:
入力: {api_response}
出力形式(TypeScript型定義): interface ErrorInfo { statusCode: number; errorType: string; message: string; timestamp: string; affectedFields?: string[]; }
出力例: { "statusCode": 400, "errorType": "ValidationError", "message": "Invalid email format", "timestamp": "2024-11-22T10:30:00Z", "affectedFields": ["email"] }
抽出してください:
A/Bテスト機能
使い方
以下の2つのプロンプトを比較評価してください:
プロンプトA: 「この文章を要約してください。」
プロンプトB: 「以下の文章を3つの箇条書きで要約してください。各箇条書きは1文で簡潔に。」
評価基準:
- 明確性
- 具体性
- 再現性
- 出力の品質
テストケース: 3つの異なる入力文章
評価レポート例
A/Bテスト結果
プロンプトA
スコア: 65/100
- 明確性: 6/10(タスクが曖昧)
- 具体性: 5/10(要約の形式が不明確)
- 再現性: 7/10(比較的一貫した結果)
- 出力の品質: 6/10(要約の長さが不安定)
プロンプトB
スコア: 88/100
- 明確性: 9/10(タスクが明確)
- 具体性: 9/10(形式が詳細に指定)
- 再現性: 9/10(非常に一貫した結果)
- 出力の品質: 8/10(期待通りの出力)
推奨
プロンプトBを採用することを推奨します。 理由: 具体的な制約により、出力が安定し、品質が向上。
ベストプラクティス集
- Role Prompting(役割設定)
あなたは10年の経験を持つシニアPythonエンジニアです。 コードレビューの専門家として、以下のコードを評価してください。
- 出力形式の厳密な指定
必ず以下のJSON形式で出力してください。 他のテキストは一切含めないでください:
{ "summary": "要約文", "key_points": ["ポイント1", "ポイント2"], "confidence": 0.85 }
- ステップバイステップ指示
以下の手順で分析を実行してください:
ステップ1: データの前処理
- 欠損値を確認
- 外れ値を検出
ステップ2: 探索的データ分析
- 各変数の分布を確認
- 相関関係を分析
ステップ3: 結果の要約
- 主要な発見を3つ挙げる
- 推奨アクションを提示
- エッジケースの処理
以下の入力に対して、適切に処理してください:
エッジケース:
- 入力が空文字列の場合 → "入力が空です"と返す
- 入力が1000文字を超える場合 → 最初の1000文字のみ処理
- 無効な形式の場合 → エラーメッセージを返す
通常ケース: {normal_processing_instructions}
- 温度パラメータの推奨値
タスクの種類に応じた推奨設定:
創造的タスク(アイデア生成、ストーリー執筆):
- temperature: 0.7-0.9
- top_p: 0.9
分析的タスク(コードレビュー、データ分析):
- temperature: 0.1-0.3
- top_p: 0.1
翻訳・要約タスク:
- temperature: 0.3-0.5
- top_p: 0.5
トークン最適化
冗長なプロンプトの圧縮
Before (150 tokens):
あなたは非常に経験豊富で優秀なソフトウェアエンジニアです。 長年にわたってさまざまなプロジェクトに携わってきました。 以下のコードを丁寧にレビューしてください。 問題点があれば指摘し、改善案を提示してください。 できるだけ詳しく説明をお願いします。
After (45 tokens):
経験豊富なエンジニアとして、以下のコードをレビューし、 問題点と改善案を提示してください。
システムメッセージの活用
Before:
[ユーザーメッセージ] あなたはPythonの専門家です。以下のコードを...
After:
[システムメッセージ] You are a Python expert.
[ユーザーメッセージ] 以下のコードを...
使用例
基本的な使い方
以下のプロンプトを分析し、改善案を提示してください:
現在のプロンプト: 「このコードを直してください。」
期待する出力:
- 明確性、具体性、完全性のスコア
- 改善されたプロンプト
- 改善のポイント
Few-shot例の最適化
以下のFew-shot例を評価し、より効果的な例を提案してください:
タスク: 感情分析 現在の例:
- "良い" → ポジティブ
- "悪い" → ネガティブ
- "普通" → 中立
改善してください。
プロンプトテンプレート生成
以下のタスク用のプロンプトテンプレートを生成してください:
タスク: コードレビュー 対象言語: TypeScript 重点項目: セキュリティ、パフォーマンス、型安全性
要件:
- 変数部分を{variable_name}で表現
- 評価基準を明確に
- 出力形式を指定
マルチステップタスクのプロンプト設計
複数のLLM呼び出しが必要なタスクのプロンプトチェーンを設計してください:
最終目標: ブログ記事の自動生成 ステップ:
- トピック案の生成
- アウトラインの作成
- 各セクションの執筆
- 編集・校正
各ステップのプロンプトを設計してください。
評価メトリクス詳細
明確性スコア (0-10)
-
10: タスクが完全に明確、曖昧さゼロ
-
7-9: ほぼ明確だが、若干の曖昧さあり
-
4-6: やや曖昧、解釈の余地あり
-
1-3: 非常に曖昧、意図が不明確
-
0: 全く不明確
具体性スコア (0-10)
-
10: すべての詳細、制約、形式が明記
-
7-9: 主要な詳細が記載、一部省略
-
4-6: 基本的な情報のみ
-
1-3: ほとんど詳細なし
-
0: 全く具体性なし
完全性スコア (0-10)
-
10: すべての必要情報、エッジケース対応含む
-
7-9: 主要な情報は揃っている
-
4-6: 基本情報のみ、一部欠落
-
1-3: 多くの情報が欠落
-
0: ほとんど情報なし
再現性スコア (0-10)
-
10: 同じ入力で常に同じ出力
-
7-9: ほぼ一貫した出力
-
4-6: 時々異なる出力
-
1-3: 頻繁に異なる出力
-
0: 全く一貫性なし
高度な使用例
システムプロンプトの最適化
以下のシステムプロンプトを最適化してください:
現在: 「あなたはAIアシスタントです。ユーザーの質問に答えてください。」
要件:
- タスクの専門性を明示
- 制約・ガイドラインを追加
- 出力形式のデフォルトを設定
- トーンとスタイルを定義
プロンプトチェーンの設計
以下の複雑なタスクをプロンプトチェーンに分解してください:
タスク: GitHubリポジトリの包括的な分析レポート生成
必要な分析:
- コード品質評価
- セキュリティ脆弱性検出
- パフォーマンスボトルネック分析
- アーキテクチャ評価
- ドキュメント品質評価
各ステップのプロンプトと、ステップ間のデータ受け渡しを設計してください。
コンテキスト長の最適化
以下の長いコンテキストを含むプロンプトを最適化してください:
現在のコンテキスト: 10,000トークン(長文ドキュメント全体)
要件:
- コンテキストを5,000トークン以下に圧縮
- 重要情報は保持
- 必要に応じてRAG(Retrieval-Augmented Generation)を提案
トラブルシューティング
問題: 出力が不安定
解決策:
-
温度パラメータを下げる(0.0-0.2)
-
Few-shot例を追加
-
出力形式を厳密に指定
-
システムプロンプトで一貫性を強調
問題: プロンプトが長すぎる
解決策:
-
システムメッセージに共通部分を移動
-
冗長な表現を削除
-
必要最小限の例のみ使用
-
テンプレート化して再利用
問題: 意図しない出力
解決策:
-
プロンプトの曖昧さを排除
-
出力形式を明示的に指定
-
除外すべき内容を明記
-
Few-shot例で期待する出力を示す
問題: LLMが指示に従わない
解決策:
-
指示を箇条書きで明確に
-
重要な指示を強調(太字、UPPERCASE)
-
役割設定を明確に
-
Few-shot例で正しい動作を示す
ベストプラクティス要約
-
明確性: タスクを曖昧さなく記述
-
具体性: 詳細、制約、形式を明記
-
構造化: 論理的に整理されたプロンプト
-
Few-shot: 効果的な例を2-5個提供
-
Chain-of-Thought: 複雑なタスクはステップ分割
-
出力形式: 厳密に指定(JSON、Markdown等)
-
エッジケース: 異常系の処理を明記
-
役割設定: 適切なペルソナを定義
-
トークン最適化: 簡潔だが完全な表現
-
テスト: 複数の入力で一貫性を検証
バージョン情報
-
スキルバージョン: 1.0.0
-
最終更新: 2025-11-22
-
対応LLM: Claude, GPT-4, Gemini等
使用例まとめ
シンプルな改善
このプロンプトを改善してください: 「コードを書いてください。」
詳細な分析
以下のプロンプトを詳細に分析してください:
プロンプト: {your_prompt}
分析項目:
- 明確性スコア(理由付き)
- 具体性スコア(理由付き)
- 完全性スコア(理由付き)
- 改善点リスト
- 改善されたプロンプト
A/Bテスト
プロンプトA と プロンプトB を比較評価してください。 テストケース: {test_cases}
評価レポートを生成してください。
このスキルで、プロンプトエンジニアリングを体系的に改善しましょう!