LLM Adapter — Provider Benchmarking
複数プロバイダの LLM 応答を比較・記録・可視化する実験用アダプタです。Shadow 実行ではなく、本番想定のプロンプトを同一条件で投げ、
レスポンス差分・レイテンシ・コスト・失敗分類を JSONL に追記します。datasets/golden/ のゴールデンタスクと adapter/config/providers/
の設定ファイルを組み合わせ、基準データに対する回帰テストを高速に行えます。
Highlights
llm-adapterCLI がadapter/run_compare.pyを通じて複数プロバイダを連続・並列・合意形成モードで呼び出し、共通メトリクスを収集。adapter/core/runner_execution.pyのランナーがリトライやプロバイダ固有の例外を整理し、比較用のイベントをストリーム出力。adapter/core/metrics/update.pyとadapter/core/metrics/models.pyが JSONL メトリクスと派生サマリを構築し、CLI の--outで指定したout/metrics.jsonlなどに追記可能(既定のadapter/run_compare.pyはdata/runs-metrics.jsonlに保存)。projects/04-llm-adapter/adapter/cli/prompt_runner.pyの CLI ランナーを通じて単体プロンプト実行を支援し、--outで指示したディレクトリへ追記。
Key Artifacts
- projects/04-llm-adapter/README.md — CLI と設定ファイルの詳細な説明。
- projects/04-llm-adapter/adapter/run_compare.py — CLI の比較モード実装とエントリポイント。
- projects/04-llm-adapter/adapter/core/runner_execution.py — プロバイダ実行・リトライ・メトリクス集約の中心ロジック。
- projects/04-llm-adapter/adapter/core/metrics/update.py — JSONL メトリクス更新ユーティリティ。
- projects/04-llm-adapter/adapter/core/metrics/models.py — メトリクス構造体とシリアライズモデル。
- projects/04-llm-adapter/adapter/cli/prompt_runner.py — 単発プロンプト実行と JSONL 追記のエントリポイント。
How to Reproduce
cd projects/04-llm-adapterで仮想環境を作成し、pip install -r requirements.txtを実行して依存関係を揃える。pip install -e .で CLI をインストールし、llm-adapter --provider adapter/config/providers/openai.yaml --prompt "日本語で1行、自己紹介して" --out out --json-logsを実行。--providerで単一プロバイダ設定を指定し、--outで指定したディレクトリ(例:out/metrics.jsonl)へ比較結果が追記される。単体確認ではpython -m adapter.cli.prompt_runner --provider adapter/config/providers/openai.yaml --prompt "hello" --out out/singleのようにprompt_runnerを直接実行しても同じ--outディレクトリ配下へ追記され、python adapter/run_compare.py ...を呼ぶ場合は既定でdata/runs-metrics.jsonlに出力される。pytest -qを流して CLI・ランナー・メトリクスのユニットテストが通ることを確認。
Next Steps
tools/report/metrics/cli.pyとtools/report/metrics/weekly_summary.pyを CI ジョブに組み込み、reports/index.htmlとdocs/weekly-summary.mdを自動生成。datasets/golden/とdatasets/golden/baseline/を拡充し、tools/report/metrics/regression_summary.pyを通じて回帰検知を自動化。adapter/core/metrics/diff.pyを拡張し、構造化応答向けメトリクスをRunMetrics.evalに取り込む。