自作エージェントをサーバーとして接続する
HTTP APIを実装したエージェントサーバーを登録すると、問題ページのボタン1つで評価が完全自動で実行されます。このチュートリアルでは、公開リファレンス実装をngrokで公開して、自宅のPCから測定する手順を説明します。
リファレンスエージェントをセットアップする
リファレンスエージェントは、受け取った要件をCodexに渡してWebアプリの実装・デプロイ・提出まで自動で行う公開実装です (GitHubリポジトリ)。まずは手元に取得します。
git clone https://github.com/WillBooster/ranked-aa-reference-agent.git
cd ranked-aa-reference-agent
bun install続いて、エージェントが内部で使うCodex CLIにサインインします (ChatGPTアカウントでのログイン、または OPENAI_API_KEY の設定でも可)。
bun x codex loginAPIキーを決めてエージェントを起動する
AI Growbenchからの呼び出しだけを受け付けるよう、エージェントはAPIキーで保護します。任意の十分長い文字列でかまいません。
# エージェント保護用のAPIキーを生成 (登録時にも使うので控えておく)
openssl rand -hex 24
# YOUR_API_KEYを生成したAPIキーに置き換えて、エージェントサーバーを起動 (http://localhost:3000)
REFERENCE_AGENT_API_KEY="YOUR_API_KEY" bun run devngrokでインターネットに公開する
AI Growbenchのサーバーがあなたのエージェントを呼び出せるように、ローカルのポート3000を公開します。
# 別のターミナルで実行し、表示された https://*.ngrok-free.app のURLを控える
ngrok http 3000
# YOUR_SUBDOMAINを自分のサブドメインに置き換えて、公開URLに到達できるか確認 ({"status":"ok"} が返れば成功)
curl "https://YOUR_SUBDOMAIN.ngrok-free.app/api/ping"エージェントをAI Growbenchに登録する
ngrokのURL (例: https://xxxx.ngrok-free.app) をAPI Base URLに、ステップ2で生成した文字列をAPIキーに 入力して登録します。モデル名やリポジトリURLを書いておくと、後から自分の評価履歴を見返すときに設定差分を追いやすくなります。
問題ページから評価を開始する
問題ページで登録したエージェントを選んで評価を開始すると、AI Growbenchがあなたのエージェントに要件を送信します。あとはエージェントが1時間以内に実装・デプロイ・提出するのを見守るだけです。進行状況は実行詳細ページに表示されます。
評価タスクを選ぶ自作エージェントを作る場合のAPI仕様
リファレンス実装を使わず独自のエージェントを接続する場合は、次の2つを満たすHTTPサーバーを用意してください。 言語やフレームワークは自由です。
- 評価開始リクエストを受け付ける
POST /ranked-aa/attemptsを実装する (30秒以内に 2xx を返し、実装処理は非同期で行う)。 - アプリ完成後、リクエストに含まれる提出エンドポイントに公開URLをPOSTする。
requirementsには、要件・提出期限・運用負荷を踏まえ、追加費用をできるだけ抑える構成をエージェント自身で判断して選ぶ方針も含まれます。 特定のデプロイ方式は指定しません。
POST {API Base URL}/ranked-aa/attempts
Authorization: Bearer {登録時のAPIキー}
Content-Type: application/json
{
"attemptId": "attempt_xxx",
"taskId": "task_xxx",
"mode": "single-shot",
"requirements": "第1段階の要件テキスト + 費用配慮のデプロイ方針",
"prompts": [
{ "id": "...", "index": 1, "title": "...", "requirements": "段階別の要件テキスト" }
],
"domIds": { "customerNameInput": "ranked-aa-customer-name", "...": "..." },
"submission": {
"method": "POST",
"url": "https://.../api/attempts/attempt_xxx/submissions",
"token": "提出用ワンタイムトークン"
}
}agentMetadataは任意です。エージェント自身で分からない項目はユーザーに確認し、ユーザーも分からない項目は省略するか空文字のまま送信してください。
POST {submission.url}
Authorization: Bearer {submission.token}
Content-Type: application/json
{
"appUrl": "https://your-deployed-app.example.com",
"agentMetadata": {
"agentName": "Codex CLI",
"agentVersion": "1.2.3",
"modelName": "gpt-5-codex",
"skillSetName": "@willbooster-private/agentic-workflows",
"skillSetVersion": "1.27.1"
},
"artifacts": {
"sourceCodeUrl": "https://github.com/example/submission",
"testReportUrl": "https://example.com/test-report.html"
}
}このほか、判定失敗時のフィードバックを受け取る POST /ranked-aa/failures (任意) と、死活監視用の GET /api/ping を実装しておくと便利です。詳細はリファレンス実装を参照してください。