akitaonrails/llm-coding-benchmark
Simple benchmark to test the most popular open source and commercial LLMs with automated OpenCode
LLMコーディングベンチマーク
それは何か
- 大規模言語モデル(LLM)が小さなRuby on Railsアプリケーションを自律的に書き、ビルドし、検証できる能力を測定する研究グレードのベンチマーク。
- このスイートは、
opencodeツールを使用して各モデルを2つのフェーズで実行します:(1)Railsコードを生成し、(2)ローカルでアプリを起動します(Dockerビルド+docker compose up)。 - 結果は
results/…にモデルごとに保存され、Markdownレポートで要約されます。
主要コンポーネント
- 設定 –
config/models.jsonはすべてのモデル(プロバイダー、スラッグ、オプションのコンテキストオーバーライド)をリストします。ベンチマークは一時的なopencode設定(config/opencode.benchmark.json)を作成するため、グローバル設定は変更されません。 - プロンプト –
prompts/benchmark_prompt.txt(フェーズ1)とprompts/benchmark_followup_prompt.txt(フェーズ2)は毎回同じで、一貫したタスク記述を保証します。 - スクリプト
scripts/warmup_ollama_models.pyはローカルでホストされているOllamaモデルがロードされるかチェックし、最大の使用可能なコンテキストウィンドウを報告します。scripts/run_benchmark.pyは実験全体を駆動します:設定を準備し、各モデルに対してopencode run --agent build --format jsonを呼び出し、生のログを保存し、result.jsonに正規化し、Markdownレポートを再生成します。scripts/analyze_results_runtime.py(scripts/browser_probe.mjsと共に)生成されたRailsプロジェクトを起動し、Dockerを実行し、ヘッドレスブラウザを開いてアプリが機能するか検証しようとします。
- ドキュメント – 手書きの分析(
docs/*.md)の大規模なセットが、スコアリングルーブリック(8次元で0〜100)、モデルごとの所見、マルチエージェント実験、コストと品質のトレードオフを説明します。
仕組み
- ウォームアップ – Pythonウォームアップスクリプトを実行して、各Ollamaモデルの最大コンテキストサイズを発見します。
- ベンチマーク設定の生成 –
run_benchmark.pyは、テストしたいモデルのみを含む最小限のopencode設定を構築します。 - 実行 – スクリプトは各モデルに対して
opencode runを起動します。ツールの組み込みシステムプロンプトはモデルファミリー(Claude、GPT/Codex、Gemini、Kimiなど)によって異なり、リポジトリはこれを既知の交絡因子として文書化しています。 - 2フェーズ実行
- フェーズ1:モデルがRailsコードを書きます。
- フェーズ2:同じセッションが続き、ローカルおよびDockerで起動してアプリを検証します。
- 後処理 – ログが正規化され、ランタイム検証が試みられ、統合テーブル(
docs/report.md、docs/report.nvidia.md)が再生成されます。
得られるもの
- モデルごとの成果物 – ソースコード、生の
opencodeログ、成功/失敗、実行時間、コストを要約したresult.json。 - 集計レポート – 全体的なスコア、実行ごとのコスト、壁時計時間でモデルをランク付けするMarkdownテーブル。
- 詳細なコードレビュー –
docs/success_report*.mdファイルには、各モデルの出力のルーブリック駆動の監査が含まれており、API幻覚、テスト品質、アーキテクチャ決定、本番対応性を強調しています。 - マルチエージェント設定に関する洞察 – プランナーモデルがより安価な実行者に作業を委任する実験。強制委任のバリエーションと、オーケストレーションがいつ役立つか、いつ害になるかの分析を含みます。
誰が使うかもしれないか
- 新興LLM(Claude Opus、DeepSeek、Kimi、Geminiなど)のコーディング能力を比較する研究者。
- Ruby/Railsプロジェクトでの自律コード生成の費用対効果の高いオプションを評価するチーム。
- 実際のビルドとDocker検証ステップを含む再現可能なLLMベンチマークパイプラインに興味がある人。
著者が指摘する制限
- システムプロンプトは
opencodeによってモデルファミリーごとに注入されるため、ファミリー間のスコアはモデルの品質とハーネスの調整を混在させます。 - 一部の実行は外部サービス(OpenRouter、deepclaude shim)と、特定のバリアントのAnthropicサブスクリプションの可用性に依存します。
- ベンチマークは単一の比較的小さなRailsタスクに焦点を当てています。結果はより大きなコードベースに一般化されない可能性があります。
すべての詳細はリポジトリのREADMEから直接取得されています。追加の機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト