Claude Code内でプロンプトをA/Bテストするn Pythonモジュールの使い方
TL;DR
- Claude Code の中でプロンプト(生成AIへの質問文)を複数パターン一気に試し、結果を比較できるPythonモジュールが公開された
- 同じタスクに対して「どの聞き方が一番いい結果を出すか」を自動で測定できる
- コードは自分のプロジェクトにそのままコピーして使える構成になっている
変更内容の詳細
このモジュールが解決する問題
生成AIを使っていると「この聞き方のほうがいい答えが返ってくるかな?」という場面がよくあります。でも実際には、何度か試してみてなんとなく決める、という進め方になりがちです。
dev.to に掲載されたこの記事(著者: frank_brsrk)では、Claude Code の中で動くPythonモジュールを自作し、複数のプロンプトを並べてA/Bテストする仕組みを紹介しています。ソフトウェア開発でいう「A/Bテスト」とは、AパターンとBパターンを同じ条件で試して、どちらが優れているかを数値で比べる手法のことです。
モジュールの基本的な動き
記事で紹介されているモジュールは、以下のような流れで動作します。
- テストしたいプロンプトを複数定義する
- 各プロンプトをClaude Code経由でモデルに送信する
- 返ってきた結果を並べて表示・比較する
記事内で示されているコードの核心部分は次のような構造です(記事に掲載されたコードを要約)。
# プロンプトのバリエーションを定義
prompts = [
"以下のコードのバグを修正してください:\n{code}",
"次のコードに問題があります。原因を特定して修正案を示してください:\n{code}",
]
# 各プロンプトで結果を取得して比較
for i, prompt in enumerate(prompts):
result = run_claude(prompt.format(code=your_code))
print(f"--- バリエーション {i+1} ---")
print(result)
実際のモジュール全体は記事のリポジトリ(記事内リンク)から取得できます。
評価の仕組み
記事によると、このモジュールは単に複数の回答を並べて表示するだけでなく、評価基準(メトリクス)を設定して数値で比べる機能も持っています。たとえば「回答の長さ」「特定のキーワードが含まれているか」「コードブロックの数」などを基準にできると説明されています。
これにより、「なんとなくこっちが良さそう」という感覚的な判断から、「この指標ではAが優れている」という客観的な判断に切り替えられます。
既存ユーザーへの影響と対応
Claude Code を日常的に使っている開発者向け
すでにClaude Code をコーディング補助に使っている場合、このモジュールを導入することで次のような場面で役立ちます。
- コードレビューの質問文を最適化したい:「バグを見つけて」と「セキュリティ上の問題を指摘して」のどちらが有益な回答を引き出すかを比べられる
- ドキュメント生成の精度を上げたい:関数の説明を書かせるときの聞き方を複数試して、読みやすい出力を選べる
- チームで使う質問文のテンプレートを作りたい:何度もテストして「チームの標準プロンプト」として固める、という使い方ができる
注意点
記事では「自分のプロジェクトで動かせる」と説明されていますが、Claude Code の API(連携機能)の利用にはAnthropicのアカウントと利用料金が発生します。大量のテストを走らせると送受信する文字数が増え、コストが上がる可能性がある点には注意が必要です(※利用料金の詳細はAnthropicの公式サイトを確認してください)。
また、評価基準の設計はユーザー自身が行う必要があるため、「何をもって良い回答とするか」を事前に明確にしておくと、テスト結果がより意味のあるものになります。
試し方(手順)
前提条件
- Python 3.x がインストールされていること
- Claude Code がセットアップ済みであること
- Anthropic の APIキーが取得済みであること
基本的な手順
記事の内容をもとに、導入の大まかな流れをまとめます。
ステップ1: モジュールを自分のプロジェクトに追加する
記事で公開されているコードをコピーし、プロジェクト内に prompt_ab_test.py などの名前で保存します。
ステップ2: テストしたいプロンプトを定義する
# prompt_ab_test.py を使う例(記事の構造を参考に簡略化)
from prompt_ab_test import ABTester
tester = ABTester()
tester.add_variant(
name="シンプル版",
prompt="このコードを改善してください:\n{code}"
)
tester.add_variant(
name="詳細版",
prompt="以下のコードについて、パフォーマンス・可読性・セキュリティの観点から改善点を挙げてください:\n{code}"
)
ステップ3: テストを実行して結果を確認する
results = tester.run(code=your_target_code)
tester.report(results)
実行後、各バリエーションの出力と設定した評価指標の結果が並べて表示されます。
ステップ4: 結果を見て質問文を絞り込む
複数回実行して安定して良い結果を出すプロンプトをチームの標準として採用する、という流れが記事では推奨されています。
関連リンク
- 元記事(英語): I built a Python module to A/B test prompts inside Claude Code, and you can run it on yours