プロンプトをいじった。なんか速くなった気がする。翌日またいじる。もっと良くなった気がする。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週間使ってたことがあって、それからやるようになった。
参考: Testing Agent Skills Systematically with Evals (OpenAI)