🛠Tools🔥🔥

Zenn、AIエージェント評価ライブラリを公開──grepベースの検証器で非決定的な出力を計測

非決定的なAIエージェントの出力を評価するため、LLMを使わずにgrepだけで動作する検証スクリプトとN回実行による分散測定ハーネスを公開した。
リリース: 2026-09-23 · 読了 4

記事の要約

1. 核心(What)

  • AIエージェントの非決定的な出力を検証するため、LLMを使わずにgrepのみで動作する検証スクリプトを公開した
  • 同一入力をN回実行してスコアの最小値と合格率を測定するTypeScript製の評価ハーネスを実装した
  • macOSの launchd を用いた定期実行でエージェントの稼働状態(STATE.mdの更新状況)を監視する仕組みを整備した

2. 影響(Why)

  • LLM評価の二重の揺らぎを防ぐ: 判定器にLLMを使用すると評価自体が非決定的になるため、grepによる静的検証を採用してスコア変動の原因を明確化する。
  • 合格率によるCIの自動化: 1回の出力成功に頼らず、複数回実行の合格率を閾値化することで、エージェントの回帰テストを実用的なコストで回せる。

3. 根拠・詳細(How)

  • grepベースの7項目ルーブリック検証: verify-article-authenticity.sh にて、数字や一人称の有無など7項目のうち4項目達成を合格とし、set -uo pipefail とパイプライン制御でエラー処理を安全に実装している。
  • TypeScript製N回実行分散ハーネス: run-eval.ts により、claude コマンドを複数回実行してスコアの最小値・最大値・平均値を算出し、合格率90%未満で process.exit(1) を返す設計。
  • launchd による月次エージェント死活監視: cronの制約を避け、macOSの launchd を用いて部門ステートの最終更新から30日経過を検知し、Slack Webhookへ通知を飛ばす。

4. 展望・課題(Next)

  • ルール定義の軽量化と分離: 1,000行を超えたCLAUDE.mdを200行以内に削減し、詳細なルールをサブエージェント定義へ分割して動作の安定化を図る。