オープンソース フレームワークを使用してエージェント スキルを評価する

1. はじめに

概要

この Codelab では、オープンソース フレームワーク Inspect を使用して、一連のエージェント スキルに対する評価を行う方法を学びます。この評価は、Docker コンテナを使用して自分のマシンで実行します。Gemini CLI は、Inspect SWE を介して評価を行うソフトウェア エンジニアリング エージェントとして使用されます。

演習内容

カスタム プロンプト評価を使用して、一連のエージェント スキルに対する評価を実行します。

学習内容

  • オープンソース フレームワークを使用してスキルに対する評価を実行する方法。
  • 質問と回答のグレーダーで評価の質問として使用するプロンプトを作成する方法。

2. 始める前に

Gemini API を設定する

Gemini API を使用するには、API キーを作成します(Google AI Studio)。

省略可: キーをテストする

curl を使用してコマンドラインにアクセスできる場合は、次のブロックの最初の行にキーを追加し、ターミナルで実行して API キーをテストします。

export GEMINI_API_KEY=Paste_your_API_key_here
curl "https://generativelanguage.googleapis.com/v1beta/models?key=${GEMINI_API_KEY}"

models/gemini-3.1-pro-preview などのモデルのリストが JSON 形式で表示されます。これは正常に動作したことを意味します。

システムの依存関係をインストールする

このチュートリアルを完了するには、マシンに次のソフトウェアをインストールする必要があります。

  • Docker
    • これは、サンドボックス環境で評価を実行するために使用されます。
  • Python
    • これは、Inspect が記述されているプログラミング言語です。
  • Node.js と NPM
    • これは、Gemini CLI が記述されているプログラミング言語です。
  • git
    • これは、評価対象のスキル リポジトリのコピーを取得するために使用されます。

3. 評価するスキルを特定する

エージェント スキルは、AI エージェントに新しい機能と専門知識を提供するための標準化された方法です。

この Codelab では、Google エージェント スキル リポジトリ(https://github.com/google/skills)を例として使用しますが、エージェント スキルを含む任意の GitHub リポジトリに変更できます。

リポジトリの内容に基づいて、スキルセットに含まれていることがわかっている一連のプロンプトの質問と回答を使用します。これらの質問と回答は、提供されたスキルで指定された質問に回答できるかどうかをソフトウェア エンジニアリング エージェントが確認するために使用されます。

Google エージェント スキル リポジトリには、Cloud Run に固有のスキルが含まれているため、次の質問をすることができます。

「ローカルマシン上のコードを使用して、Cloud Run にサービスをデプロイするにはどうすればよいですか?」

この質問に対する答えは"gcloud run deploy"です。この質問と回答、およびスキルの GitHub リポジトリを評価者に提供します。評価者は、提供されたエージェント スキルで質問に回答できるかどうかを確認します。

4. 評価を実行する

このステップでは、評価の例を実行します。

Python 依存関係をインストールする

ローカルマシンで次のコマンドを実行して、Python の依存関係をインストールします。

pip install inspect-ai inspect-swe google-genai

スキル リポジトリのコピーを作成する

Google エージェント スキル リポジトリのローカルコピーを google-skills というフォルダに作成します。

git clone https://github.com/google/skills.git --depth 1 google-skills

Python アプリケーションを確認する

実行する評価は次のとおりです。

from pathlib import Path
import os

from inspect_ai import Task, task
from inspect_ai.dataset import Sample
from inspect_ai.scorer import model_graded_qa
from inspect_swe import gemini_cli

if "GEMINI_API_KEY" not in os.environ:
  raise ValueError("Missing GEMINI_API_KEY. Please set GEMINI_API_KEY environment variable.")

@task
def skills_eval(agent_skills_folder, model="google/gemini-3.1-pro-preview"):

    # For the provided folder, find all folders containing skills
    skill_files = (Path.cwd() / agent_skills_folder).rglob("SKILL.md")
    all_skills = [str(s.parent) for s in skill_files]

    # Example question and answers
    questions = [
        Sample(
            input="How do I deploy a Cloud Run service?",
            target="gcloud run deploy"
        ),
        Sample(
            input="How can I connect to a Cloud SQL instance",
            target="cloud sql proxy"
        ),
        Sample(
            input="How can I list the roles available in IAM?",
            target="fortune | cowsay",
        ),
    ]

    return Task(
        dataset=questions,
        solver=gemini_cli(skills=all_skills),
        scorer=model_graded_qa(),
        sandbox="docker",
        model=model,
    )

このファイルを skills-eval.py として保存します。

このコードには、次のロジックを使用するデコレートされた関数 skills_eval が含まれています。

  • 指定されたディレクトリを取得し、そのリポジトリ内のすべてのスキルファイルのリストを作成します。
  • 一連の静的な質問と回答をデータセットとして使用します。
    • 注: 質問の 1 つに、意図的に間違った回答が含まれています。
  • 次のコマンドを使用して評価を実行します。
    • Gemini CLI をソルバーとして使用
    • Model Grader QA をスコアラーとして使用
    • Docker をサンドボックスとして使用
    • Gemini Pro 3.1 をモデルとして使用。

次のステップでは、Inspect を使用してこの評価を実行します。

評価を実行する

評価を実行するには、次のコマンドを使用します。

inspect eval skills-eval.py -T agent_skills_folder=google-skills

この評価を初めて実行すると、Docker コンテナがダウンロードされ、Node.JS と Python の依存関係がインストールされます。ネットワーク接続によっては、完了までに時間がかかることがあります。評価を再度実行すると、この設定はキャッシュに保存されます。

ダウンロード後、Inspect は評価を実行します。ターミナル内にインタラクティブなインターフェースが表示され、評価の進行状況に応じて操作できます。

実行中のタスク

評価中に [Running Samples] をクリックすると、現在の進行状況を確認したり、プロセスをキャンセルしたりできます。

サンプルの実行

次のステップでは、結果を確認します。

5. 結果を表示して解釈する

評価が完了すると、評価の結果を表示できます。

結果を表示

評価により、.eval ファイルが logs/ フォルダに書き込まれました。これはバイナリ ファイルであり、直接表示することはできません。

評価の結果を表示するには、Inspect Viewer を使用します。

inspect view

これにより、http://127.0.0.1:7575 にウェブサーバーが作成されます。この URL を開いて結果を表示します。

Inspect ビュー

結果を解釈する

この評価では、Model Grader を使用し、次のグレードが付けられました。

  • 「C」: 完了
    • 回答は完全に正しかった
  • 「P」: 部分的
    • 回答はほぼ正しかった
  • 「I」: 不完全
    • 回答が正しくなかった。

この Codelab では、意図的に間違った回答が 1 つあり、「I」(不完全)と表示され、全体的な精度が 0.667(3 つのうち 2 つが正解)に低下しています。

タブをクリックすると、使用したメソッド、使用したトークン、評価に関するその他の詳細情報を確認できます。

6. 評価を拡張する

この評価には、範囲を拡大するためにいくつかの変更を加えることができます。

質問を追加する

複数のスキルを持つリポジトリの場合は、スキル リポジトリの内容に基づいて質問と回答を追加してみてください。Inspect では、CSV、JSON、JSON Line 形式の組み込みデータセット リーダーなど、これらのデータセットとしてファイルを使用できます。

テスト対象のエージェント スキルを更新する

エージェント スキル リポジトリが更新されたら、コードのローカルコピーを更新し、新しい情報に対して評価を再実行できます。これにより、スキルのパフォーマンスを長期にわたって追跡できます。エージェント スキルが更新されたら、ローカルコピーで git pull を実行してコードを更新し、評価を再実行して変更を確認します。

別のスコアラーを使用する

この Codelab では、Model Graded スコアラーを使用しました。Inspect には、複数の 組み込みスコアラーと、独自の カスタム スコアラーを作成するオプションが用意されています。

別のソルバーモデルを使用する

この Codelab では、ソルバーモデルとして Gemini 3.1 Pro を使用しました。コードを変更しなくても、モデル名をコマンドライン パラメータとして指定することで変更できます。次のコマンドを使用すると、別の Gemini モデルで評価を再実行できます。

inspect eval skills-eval -T agent_skills_folder=google-skills \
  -T model=google/gemini-3.1-flash-live-preview

この「タスク引数」は Inspect Viewer に表示されるため、評価の実行に使用した引数を追跡できます。

さまざまなスキルを評価する

この Codelab では、評価対象のスキルとして Google エージェント スキル リポジトリを使用しました。

別のスキル リポジトリを評価できますが、質問と回答も一致するように更新する必要があります。たとえば、Flutter エージェント スキルでは、Cloud Run 固有の質問に対する回答は得られません。

7. 完了

オープンソース フレームワークを使用してスキルに対する評価を実行する方法と、質問と回答のグレーダーで評価の質問として使用するプロンプトを作成する方法を学習しました。