Skip to content
GitHub Twitter

AIエージェントのスキルを「感覚」じゃなく「数字」で評価する

プロンプトをいじった。なんか速くなった気がする。翌日またいじる。もっと良くなった気がする。3日後、先週できてたことができなくなってる。

これ、僕だけじゃないと思う。

OpenAI が Evals という手法を紹介してた。要は AI の出力に対する自動テスト。プログラミングのテストと同じ発想で、「期待通りに動いてるか」を数字で確認する。

「気がする」の何がまずいか

月曜: テスト 18/20 成功(改善前は 15/20)→ 良くなった
火曜: テスト 19/20 成功 → さらに改善
水曜: テスト 14/20 成功 → 何か壊れた

数字があると、壊したことにすぐ気づける。「気がする」だと、壊れてても気づかない。いつの間にか元より悪くなってたりする。

何をテストするか

僕が見てるのはこの4つ:

  • 結果: タスク完了した?アプリ起動する?
  • 過程: 正しい手順踏んだ?npm install 実行した?
  • スタイル: 規約守ってる?TypeScript で書いた?
  • 効率: 無駄なかった?同じコマンド繰り返してない?

全部見なくていい。「これ壊れたら困る」ってやつだけ。

やり方

成功の定義を先に書く。スキル作る前に。

必須:
- [ ] package.json がある
- [ ] npm run dev でエラーなく起動する

あれば良い:
- [ ] TypeScript 使ってる

テストケースは 10〜20 個。「動くべきケース」と「動くべきでないケース」両方入れる。

test-01,動く,"デモアプリ作って"
test-02,動く,"Reactで簡単なUI作って"
test-03,動かない,"既存アプリにTailwind追加して"

チェックは単純でいい:

const fs = require('fs');
fs.existsSync('./demo-app/package.json'); // true or false

コードの「良さ」も見たいとき

ファイルの有無だけじゃなく、書き方が良いかも見たいことがある。ルーブリック(採点基準)を作る:

{
  "score": 85,
  "checks": [
    {"id": "typescript", "pass": true},
    {"id": "components", "pass": true},
    {"id": "tailwind", "pass": false, "notes": "インラインスタイルあり"}
  ]
}

テストが失敗したら

2択:

  1. スキルにバグがある → スキルを直す
  2. テストが厳しすぎる → テストを直す

どっちかは考えないといけない。両方正しいこともある。


正直、最初は面倒だと思った。でも一回壊して気づかず1週間使ってたことがあって、それからやるようになった。

参考: Testing Agent Skills Systematically with Evals (OpenAI)