Claude Codeプラグイン評価ワークフローの概要

AnthropicがClaude Code向けにリリースした新しいclaude plugin evalコマンドは、プラグイン開発における重要な課題を解決します。これまでは、プラグインが特定のスキルを正確にトリガーするか、コード変更やモデル更新後も機能し続けるか、あるいは素のモデルよりも優れた結果を出すかといった点を客観的に測定することが困難でした。

この新しい評価ツールは、これらの疑問に答えることを目的としています。(出典)

「claude plugin evalコマンドは、プラグインが実際のプロンプトに対してどのように機能するかを評価し、その結果をプラグインなしの場合と比較することで、開発者がその有効性を客観的に測定できるようにします。」

このツールはClaude Code v2.1.269以降で利用可能で、plugin.jsonまたは.claude-plugin/plugin.jsonマニフェストを持つ任意のディレクトリ、またはスキルディレクトリプラグインに対して実行できます。評価の実行には、実際のモデル呼び出しが発生し、利用者のプランまたはAPIアカウントに課金されます。

評価ケースとグレーダーの種類

評価スイートはプラグイン内のevals/ディレクトリに配置され、各ケースはprompt.mdとgraders/フォルダを持つサブディレクトリで構成されます。prompt.mdのフロントマターでは、max_turns、timeout_seconds、model、tags、allowed_toolsなどの設定が可能です。

グレーダーはtype、weight、armを設定するマークダウンファイルで、以下の6種類があります。

グレーダーの種類 コスト 評価対象
regex 無料 トランスクリプト内の正規表現マッチング
tool_used 無料 特定のツールが使用されたか
tool_order 無料 ツールの使用順序
file_exists 無料 特定のファイルが存在するか
llm 有料 LLMがプロンプトに対する応答を評価(プロセスの基準に基づいてスコアリング)
baseline 有料 参照回答とプラグインの応答を比較

無料のグレーダーはトランスクリプトやディスク上のファイルから計算されるため、追加費用はかかりません。一方、llmとbaselineの2種類は判断モデルを呼び出すため、利用料金が発生します。claude plugin eval initコマンドを実行すると、プラグインを読み込み、最適な結果の定義、ケースとグレーダーの提案、そしてテスト実行とファイルの書き込みを行います。

CI環境では--bare <name>オプションで空白のテンプレートを生成することも可能です。(出典)

Pythonでよく使うCLIツールなんかでも、こういった評価機能があればかなりテストが楽になりそうです。特にLLMは出力が非決定的なので、手動でテストするのは限界がありますよね。

評価の指標「Δ」とその重要性

各ケースはデフォルトで2回実行されます。プラグインがロードされた「with-arm」と、ロードされていない「without-arm」です。この2つの結果の差である「Δ(デルタ)」が、プラグインが貢献した度合いを示します。

例えば、どちらのアームでも1.0のスコアが出た場合、その成功はプラグインによるものではないと判断されます。Anthropicのドキュメント例では、WITH 1.00、W/OUT 0.33、Δ +0.67という結果が示されています。

評価項目 with-arm(プラグインあり) without-arm(プラグインなし) Δ(プラグインの貢献度)
ケーススコア 1.00 0.33 +0.67

Anthropicは、最も一般的な最初の発見として「tool_used: Skillグレーダーが失敗し、Δがゼロに近い」ことを挙げています。これは、Claudeが自然なフレーズでスキルを選択していないことを意味します。claude plugin validateはマニフェストの構文とスキーマをチェックするだけなので、このような振る舞いの問題は見つけられません。

結果はevals/results/<timestamp>/report.htmlに出力され、グレーダーごとの判定や判断モデルの評価が含まれます。アカウントが対応している場合、--no-publishを設定しない限り、レポートはclaude.aiにも公開されます。(出典)

LLMの振る舞いまでテストできるのは本当に大きいですね。特に開発中はちょっとしたプロンプト変更でも挙動が変わってしまうことがあるので、CI/CDに組み込めば安心して開発を進められそうです。

コストとCI/CDへの組み込み

評価スイートの実行には、「ケース数 × 実行数 × アーム数」に加えて、llmまたはbaselineグレーダーごとに3回の短い判断モデル呼び出しが発生します。結果は実行ごとに変動する可能性があります。ドキュメントには、CI(継続的インテグレーション)での推奨される呼び出し方法が記載されており、プラグインの品質保証を自動化できると期待されます。

個人的な感想ですが、この機能はLLMベースのアプリケーション開発におけるテストの概念を大きく進化させるものだと感じます。AIの推論結果の品質を数値で可視化し、CI/CDプロセスに組み込めるのは、プロダクトの信頼性向上に直結するでしょう。

特に最近、Anthropicの元研究者がAIの安全性に関する懸念を表明して辞任したというニュースもありました(出典)。そうした背景を考えると、AnthropicがAIの信頼性と透明性を高めるツールを提供することの意義は非常に大きいのではないでしょうか。