なぜ今、Promptfooが必要なのか?
GPT-4で完璧に動作する「最高の」プロンプトを書き上げたとします。しかし、Claude 3.5やGeminiに切り替えると、結果が突然意図しないものになることがあります。さらに悪いことに、元のプロンプトの数単語を修正しただけで、以前は正解だったケースが突然不正解になってしまうこともあります。
ChatGPTに質問を一つずつ手動でコピペして目視で比較するような, 主観的な「雰囲気チェック(vibe-check)」ではなく、よりプロフェッショナルなプロセスが必要です。実際、50個のテストケースを手動で評価すると2時間はかかりますが、Promptfooを使えば5分足らずで完了します。
Promptfooは、複数のモデルに対して同時に一連のテストを実行できるCLIツールです。結果をサイドバイサイドで比較し、独自の基準に従って自動採点することができます。AIエンジニアにとって不可欠な「ユニットテスト」スイートのようなものと考えてください。
クイックスタート:5分でPromptfooを試す
Node.jsがインストールされていれば準備完了です。このツールは主に直感的なYAML設定ファイルを扱うため、高度なコーディングスキルは必要ありません。
ステップ1:インストール
ターミナルを開き、以下のコマンドでPromptfooをグローバルにインストールします:
npm install -g promptfoo
ステップ2:プロジェクトの初期化
新しいディレクトリを作成し、初期化コマンドを実行します:
promptfoo init
このコマンドにより、すぐに試せるサンプル設定が含まれたpromptfooconfig.yamlファイルが作成されます。
ステップ3:評価(Evaluation)の実行
APIキー(例:export OPENAI_API_KEY=sk-xxx)を設定した後、以下を実行します:
promptfoo eval
ステップ4:結果を視覚的に確認する
ターミナルの無機質なテキストを見る代わりに、次のように入力してください:
promptfoo view
ダッシュボード画面が表示されます。ここでは、異なるプロンプトバージョンやモデル間の詳細な比較表を確認できます。
Promptfooのコア構造を理解する
プロセスを最適化するために、設定ファイルの3つの主要コンポーネントを理解する必要があります:
1. Prompts(プロンプト)
最適なものを見つけるために、複数のプロンプトのバリエーションを宣言できます。例:
prompts:
- "{{product_name}}の短い広告を書いてください"
- "あなたは専門のコピーライターです。{{product_name}}の魅力的なキャプションを書いてください"
2. Providers(AIモデル)
Promptfooは、OpenAIやAnthropicから、Ollamaを介したローカルモデルまで幅広くサポートしています。gpt-4oとclaude-3-5-sonnetで同時にテストすることで、各モデルの文体や推論能力の違いを明確に把握できます。
3. Tests(テストシナリオ)
ここでは、「お題」と期待される出力(assertions)を設定します。これはエッジケース(境界例)を特定するのに非常に効果的です。
tests:
- vars:
product_name: "ミニコーヒーメーカー"
assert:
- type: contains
value: "12ヶ月保証"
- type: javascript
value: output.length < 150
高度な機能:LLM-as-a-judgeによる採点
キーワードチェック(contains)だけでは不十分な場合があります。回答が十分に親しみやすいかどうかをどう判断すればよいでしょうか?このような場合、強力なモデル(GPT-4oなど)を「試験官」として使用し、テスト対象のモデルを採点させます。
assertセクションでllm-rubricタイプを使用します:
- type: llm-rubric
value: "回答の中で競合他社の名前に言及せず、適切な絵文字を使用していること。"
provider: openai:gpt-4o
この方法により、抽象的な基準を定量化できます。品質を推測する代わりに、0から1までの明確なスコアが得られます。
Promptfooを導入する際の実践的なヒント
リソースと時間を無駄にしないために、以下の点に注意してください:
- コスト管理: いきなりGPT-4で100個のテストケースを実行しないでください。高価なモデルに移行する前に、
gpt-4o-miniやOllamaを使用して基本的なロジックエラーをフィルタリングしましょう。 - APIキーのセキュリティ: キーをハードコードしてはいけません。
.envファイルを作成すれば、Promptfooが自動的に認識し、情報を安全に保ちます。 - 完全自動化: PromptfooをCI/CDプロセス(GitHub Actionsなど)に統合しましょう。新しいプロンプトによってパス率が90%を下回った場合、システムのコードマージをブロックできます。
- キャッシュの活用: Promptfooはデフォルトで過去の結果を保存します。入力を変更しない限り、APIを再呼び出ししないため、月末の請求額を大幅に節約できます。
データが手元にあれば、プロンプトの最適化はもはや「スピリチュアル(勘)」な作業ではありません。このツールは、実験を具体的な数値で裏付けられた科学的なプロセスに変えてくれます。安定したAIシステムの構築を目指して頑張ってください!

