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

1. はじめに

概要

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

演習内容

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

学習内容

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

2. 始める前に

Gemini API を設定する

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

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

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

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

モデルのリストが JSON 形式で表示されます(例: models/gemini-3.6-flash)。これは、機能したことを意味します。

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

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

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

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

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

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

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

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

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

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

4. 評価を実行する

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

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

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

pip install inspect-ai inspect-swe google-genai

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

Google Agent Skills リポジトリのローカルコピーを 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.6-flash"):

    # 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 3.6 Flash を使用します。

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

評価を実行する

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

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

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

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

実行中のタスク

評価中は、[サンプルを実行中] をクリックして現在の進行状況を確認したり、プロセスをキャンセルしたりできます。

サンプルの実行

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

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

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

結果を表示

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

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

inspect view

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

Inspect ビュー

結果を解釈する

この評価では、モデル グレーダーを使用して次のグレードが付けられました。

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

この Codelab では、意図的に不正解を 1 つ含めています。これは「I」(不完全)として表示され、全体の精度を 0.667(3 つのうち 2 つが正解)に下げます。

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

6. 評価を延長する

この評価には、スコープを拡大するために変更できる点がいくつかあります。

質問を追加する

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

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

エージェント スキル リポジトリが更新されたら、コードのローカルコピーを更新し、新しい情報に対して評価を再実行できます。これにより、スキルが時間の経過とともにどのように機能するかを追跡できます。エージェントのスキルが更新された場合は、ローカルコピーで git pull を実行してコードを更新し、評価を再度実行して変更を確認します。

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

この Codelab では、モデルの採点スコアラーを使用しました。Inspect には複数の組み込みスコアラーが用意されています。また、独自のカスタム スコアラーを作成することもできます。

さまざまなソルバーモデルを使用する

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

inspect eval skills-eval -T agent_skills_folder=google-skills \
  -T model=google/gemini-pro-latest

この「タスク引数」は検査ビューアに表示され、評価の実行に使用された引数を追跡できます。

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

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

別のスキル リポジトリを評価できますが、質問と回答もそれに合わせて更新する必要があります。たとえば、Flutter エージェント スキルは、Cloud Run に関する特定の質問に対する回答を提供しません。

7. 完了

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