mcpField
P
prompt-lab

prompt-lab

github.com/mathews-tomエージェントワークフロー337101 回インストール2 日前に更新
リポジトリ

prompt-lab について

prompt-labは、目標設定、バリエーション作成、評価基準、テストケース、失敗分析を通じてLLMプロンプトを設計・評価するスキルです。プロンプトの実行ではなく、体系的な改善を行う作成者向けです。

主な機能

  1. 01目標と成功基準の定義
  2. 02プロンプト構造と曖昧さの分析
  3. 03仮説に基づくバリエーション生成
  4. 04評価基準とテストケースの作成
  5. 05失敗パターンの特定

活用シーン

  1. 01既存プロンプトの改善
  2. 02明確なタスク向けプロンプトの作成
  3. 03テストケースによる手法の比較

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mathews-tom/armory --skill prompt-lab

インストール後、Claude Code で/prompt-labを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
cases.yaml
references/
evaluation-metrics.md
failure-modes.md
output-constraints.md
prompt-patterns.md

詳細

プロンプトラボ

試行錯誤によるプロンプトエンジニアリングを、構造化された方法論に置き換えます。目的の定義、現在のプロンプトの分析、バリアントの作成(指示の明確化、例の活用方法、出力形式の指定)、評価ルーブリックの設計、テストケースの作成、失敗モードの特定を行います。

参考ファイル

ファイル内容読み込むタイミング
references/prompt-patterns.mdプロンプト構造のカタログ:ゼロショット、フューショット、CoT、ペルソナ、構造化出力常に
references/evaluation-metrics.md品質指標(正確性、形式への準拠、完全性)、ルーブリックの設計評価が必要な場合
references/failure-modes.mdよくあるプロンプトの失敗の分類、検出方法、緩和策失敗分析を依頼された場合
references/output-constraints.mdLLM の出力形式を制約する手法、JSON モード、スキーマの適用形式の制御が必要な場合

前提条件

  • 明確な目的:プロンプトで何を達成する必要がありますか?
  • 対象モデル(GPT-4、Claude、オープンソース)— プロンプト手法はモデルによって異なります
  • 現在のプロンプト(改善する場合)、またはタスクの説明(新規作成の場合)

ワークフロー

フェーズ 1:目的の定義
  1. タスクの仕様 — LLM に何を生成させますか?具体的に指定します。「サポートチケットに対応する」ではなく、「カスタマーサポートのチケットを 5 つのカテゴリに分類する」と指定します。
  2. 成功基準 — 出力が正しいかどうかを、どのように判断しますか?プロンプトを書く前に、測定可能な基準を定義します。
  3. 失敗モード — 悪い出力とはどのようなものですか?情報の欠落ですか?形式の誤りですか?内容の幻覚ですか?回答の拒否ですか?
フェーズ 2:現在のプロンプトの分析

既存のプロンプトが提供されている場合:

  1. 構造の評価 — 指示は明確ですか?例は提示されていますか?出力形式は指定されていますか?
  2. 曖昧さの検出 — モデルが指示を誤解する可能性があるのはどこですか?
  3. 不足している要素 — 指定すべきなのに、指定されていないものは何ですか?(出力形式、トーン、長さの制約、エッジケースへの対応)
  4. 失敗モードの対応付け — 既知の失敗パターン(references/failure-modes.mdを参照)のうち、このプロンプトに当てはまるものはどれですか?
フェーズ 3:バリアントの作成

それぞれ異なる仮説を検証するプロンプトのバリアントを 2~4 個作成します。

バリアントの種類仮説使用する場面
直接的な指示明確な指示だけで十分単純なタスク、高性能なモデル
フューショット例によって出力の一貫性が向上するパターンに従うタスク
思考の連鎖推論によって正確性が向上する複数段階の論理、数学、分析
ペルソナ/役割役割の設定によってトーンや専門性が向上する特定の分野のタスク
構造化出力形式の指定によってエラーを防げるJSON、CSV、特定のテンプレート

各バリアントについて:

  • 仮説を述べます(このバリアントが有効かもしれない理由)
  • リスクを特定します(うまくいかない可能性がある点)
  • プロンプト全文を提示します
フェーズ 4:設計評価
  1. 評価基準 — 重み付けした基準を定義します。

    基準測定内容一般的な重み
    正確性出力が期待される回答と一致するか30-50%
    形式への準拠指定された構造に従っているか15-25%
    完全性必要な要素がすべて含まれているか15-25%
    簡潔さ不要な内容がないか5-15%
    トーン/スタイル指定された文体に合っているか5-10%
  2. テストケース — 次の内容を網羅するケースを最低 5 件用意します。

    • 正常系(標準的な入力)
    • エッジケース(通常とは異なるが有効な入力)
    • 敵対的ケース(混乱を招くように設計された入力)
    • 境界ケース(最小/最大の入力)
フェーズ 5:出力

バリアント、評価基準、テストケースを、すぐに実行できる構造化形式で提示します。

出力形式

## Prompt Lab: {Task Name}

### Objective
{What the prompt should achieve — specific and measurable}

### Success Criteria
- [ ] {Criterion 1 — measurable}
- [ ] {Criterion 2 — measurable}

### Current Prompt Analysis
{If existing prompt provided}
- **Strengths:** {what works}
- **Weaknesses:** {what fails or is ambiguous}
- **Missing:** {what's not specified}

### Variants

#### Variant A: {Strategy Name}

{完全なプロンプトテキスト}

**Hypothesis:** {Why this approach might work}
**Risk:** {What could go wrong}

#### Variant B: {Strategy Name}

{完全なプロンプトテキスト}

**Hypothesis:** {Why this approach might work}
**Risk:** {What could go wrong}

#### Variant C: {Strategy Name}

{完全なプロンプトテキスト}

**Hypothesis:** {Why this approach might work}
**Risk:** {What could go wrong}

### Evaluation Rubric

| Criterion | Weight | Scoring |
|-----------|--------|---------|
| {criterion} | {%} | {how to score: 0-3 scale or pass/fail} |

### Test Cases

| # | Input | Expected Output | Tests Criteria |
|---|-------|-----------------|---------------|
| 1 | {standard input} | {expected} | Correctness, Format |
| 2 | {edge case} | {expected} | Completeness |
| 3 | {adversarial} | {expected} | Robustness |

### Failure Modes to Monitor
- {Failure mode 1}: {detection method}
- {Failure mode 2}: {detection method}

### Recommended Next Steps
1. Run all variants against the test suite
2. Score using the rubric
3. Select the highest-scoring variant
4. Iterate on the winner with targeted improvements

キャリブレーションルール

  1. バリアントごとに変更する変数は 1 つだけにします。 各バリアントでは、ベースラインから変更する点を 1 つにします。 指示のスタイル、例、形式を同時に変更すると、結果を解釈できなくなります。
  2. 成功と判断する前にテストします。 3 件の例でうまくいくプロンプトでも、4 件目では失敗する可能性があります。バリアントが機能すると結論づける前に、多様なテストケースを最低 5 件試します。
  3. 成功よりも失敗モードのほうが価値があります。 プロンプトが失敗する理由を理解するほうが、機能することを確認するよりも改善の指針になります。
  4. モデルに応じて最適化します。 GPT-4 向けに最適化されたプロンプトが、Claude や Llama でも機能するとは限りません。対象モデルを必ず記録してください。
  5. 効果のある最もシンプルなプロンプトを選びます。 ゼロショットプロンプトがフューショットプロンプトと同程度のスコアなら、ゼロショットを使います。トークン数が少ないほど、コストとレイテンシーが下がります。

エラー処理

問題解決策
明確な目標がない「良い出力」とはどのようなものか、2~3 件の例を挙げて定義するようユーザーに尋ねます。
LLM が苦手とするタスク(数学、数え上げ)のプロンプト制限事項を伝えます。ツールを併用する方法や、前処理/後処理を提案します。
テストする変数が多すぎるまず最も影響の大きい変数に焦点を当てます。反復的な改善は、組み合わせテストよりも効果的です。
分析する既存のプロンプトがない可能な限りシンプルなプロンプトから始めます。最初のバリアントがベースラインになります。
出力形式の要件が厳格プロンプトだけで制約するのではなく、構造化出力モード(JSON モード、関数呼び出し)を使います。

使用しない場合

次の場合は、別の方法を検討するよう提案してください。

  • タスクに LLM が不要な場合(決定論的なルール、正規表現、SQL) — 適切なツールを使ってください
  • ユーザーが求めているのがプロンプトの設計ではなく実行である場合 — このスキルはプロンプトを設計・評価しますが、実行はしません
  • プロンプトが人によるレビューなしで安全性が極めて重要な判断に使われる場合 — LLM の出力だけを判断材料にしてはいけません

コメント