AI News HubLIVE
サイト内リライト2 分で読了

AgentSpec: AIエージェントのテストフレームワーク(非決定論的動作のためのJest)

AgentSpec は、非決定論的な出力を扱うために設計されたAIエージェント向けのテストフレームワークで、Jest に触発されています。YAMLベースのテスト、contains、regex、semantically_similar、LLM-as-judge などの豊富なアサーション、振る舞い差分レポート、CI/CD統合を提供し、プロダクション前に動作変化を検出します。

ソースHacker News AI著者: pawfromoz

AgentSpec は、AI エージェントの非決定論的な動作をテストするために設計されたフレームワークです。AI エージェントはプロンプトの変更、モデルの切り替え、ツールの更新などによって予測不能な動作変化を起こしますが、AgentSpec を使用することで、それらの変化を本番環境にデプロイする前に検出できます。

フレームワークは npm からグローバルインストールでき、agentspec init でYAML設定ファイルを生成し、agentspec run でテストを実行します。テストケースは YAML 形式で記述し、入力と期待される結果を定義します。アサーションは単純な文字列一致に留まらず、特定の文字列の有無(contains、not_contains)、任意の要素の包含(contains_any)、正規表現(regex)、意味的類似性(semantically_similar)、JSON パスと値の検証(json_path、json_value)、ツール呼び出しの確認(tool_called)、最大レイテンシ(max_latency_ms)など、AI 出力の特性に特化した豊富な種類を備えています。

AgentSpec の際立った特徴の一つが LLM-as-judge 機能です。ローカルの Ollama モデル(例:qwen2.5:7b)を判定者として使用することで、API コストをかけずにプライバシーを保ちながら応答品質を評価できます。例えば、「応答がパスワードリセット方法を説明しているか」という基準を LLM に判断させることが可能です。

振る舞い差分レポートは、各テストの最後に合格した出力を保存し、動作が変わった場合に具体的な差分を表示します。例えば、以前は「設定でトークンを更新してください」と返していたのが「トークンが期限切れです、サポートに連絡してください」に変わった場合、その変化が明確に示されます。これにより「昨日は動いていた」という状況のデバッグが容易になります。

実際のエージェントをテストするには、--endpoint オプションで HTTP エンドポイントを指定します。AgentSpec は {input: "..."} を POST し、{output: "..."} を期待します。CI/CD 統合も充実しており、失敗時に終了コード 1 を返す CI モード、JUnit XML 出力、JSON 出力、GitHub Action をサポートしています。CLI コマンドは run、init、list、version を提供し、テストフィルタリングやウォッチモードも可能です。

今後のロードマップには、会話履歴からの自動テスト生成、Python エージェントのサポート、Web ダッシュボード、GitHub PR 統合などが含まれています。プロジェクトは MIT ライセンスで公開され、TypeScript で開発されています。