開発者評価ガイド

Gemini 4 Argonのコーディング評価

公開されているベンチマークからコードまで検証できます。証拠と評価条件を調べて、4 つの集中的なプログラミング タスクを試してください。

ソースを確認しました:

公開されたスコアで測定されるもの

Google は DeepSWE v1.1 について 77.9% を報告しています。起動表には、FrontierSWE v2 で 55.0%、ターミナルベンチ 4.0 で 57.4% と記載されています。これらは、コーディング品質の代替可能な尺度ではなく、異なるタスク セットを使用します。

アルゴンの個別の 0 ~ 100% バー: DeepSWE v1.1 77.9%、FrontierSWE v2 55.0%、ターミナルベンチ 4.0 57.4%。
各バーは、モデルのランキングや全体のスコアではなく、独自のベンチマークを示しています。出典: Google 起動テーブル。 オリジナルのスコア表
Gemini 4 Argon · 2026 年 9 月/10 月リリースのスナップショット
ベンチマーク公開されたスコア解釈
DeepSWE v1.177.9%長期的なリポジトリ作業。エージェントのハーネスとトライアルポリシーをお読みください。
FrontierSWE v255.0%別のエンジニアリングタスクセット。その割合は DeepSWE と直接比較することはできません。
Terminal-Bench 4.057.4%ターミナルタスク。環境とツールへのアクセスが結果に影響します。

モデルを比較する前に条件を比較する

DeepSWE v1.1 の場合、Google は Argon に mini-swe-agent を使用しました。その方法論では、報告された最高の思考レベルを使用して、GPT のリーダーボード結果とクロードのシステム カードを引用しています。同一のハーネスと予算は確立されていません。

他のモデルの記録 · 出所が異なり、管理された直接テストではない
モデル来歴 / 比較可能性
Gemini 3.8 Flash引用された情報源には掲載されていません. このリリース表には Gemini 3.8 フラッシュに一致する結果がありません。 Flash Cyber​​ または別のバージョンを置き換えないでください。
GPT-6 AstraDeepSWE v1.1: 74.1%、Google によるリーダーボードからの引用。アルゴンと同等のハーネスと予算は検証されていません。
Claude Opus 5.5DeepSWE v1.1: 74.2%、システム カードから Google が引用。アルゴンと同等のハーネスと予算は検証されていません。

過去に公開された記録は、今日の API を評価したり、あらゆるコーディング ワークフローの勝者を確立したりするものではありません。

反復可能なワークフロー

最初の試行は、モデルごと、タスクごとに 1 回ずつ使用します。プロンプトとチェックを凍結します。修理については別途ご報告ください。正確なモデル ID、日付、思考レベル、ツール、ランタイム、依存関係のバージョン、経過時間、トークンの使用状況、終了コード、および未編集の出力を記録します。使用できないフィールドを不明としてマークします。

5 つのステップ: プロンプト、生成されたコード、実行、アサーション、証拠の記録。
オリジナルのワークフローイラスト。期待される出力はテストオラクルです。観察された出力は実際の実行から得られる必要があります。

4 つの再現可能なプログラミング タスク

タスクごとに新しい会話を使用します。プロンプト、ツール、依存関係、試行予算をモデル間で同一に保ちます。コードを生成する前に、提供されたチェックを保存します。生成されたコードを使い捨てのローカル ディレクトリで実行します。

01 · TypeScript 同時実行プール

モデルテスト待ち

モデルの出力と観察された結果: 利用できません。モデルの実行は実行されていません。これらのチェックは作成されたフィクスチャであり、モデルの出力ではありません。

モデルを指定するように求めるプロンプト

非同期関数 pool<T>(タスク: Array<() => Promise<T>>、制限: 数値): Promise<PromiseSettledResult<T>[]> をエクスポートする pool.ts を実装します。他のタスクを停止することなく、タスクを遅延開始し、同時に最大制限内で実行し、入力順序を維持し、Promise の拒否と同期スローを解決します。空の入力は [] を返します。空の入力であっても、RangeError で非正/非整数の制限を拒否します。依存関係を使用しません。 pool.ts のみを返します。提供されたチェックを変更しないでください。

入力/スターターファイル

// Input: delays [30, 5, 15] ms; limit 2.
// Implementation file: pool.ts

テストする前にこれらのチェックを保存してください

// Save as pool.check.ts (Node 22+)
import assert from 'node:assert/strict';
import { pool } from './pool.ts';
let active = 0, peak = 0;
const tasks = [30, 5, 15].map((ms, i) => async () => {
 active++; peak = Math.max(peak, active);
 await new Promise(r => setTimeout(r, ms));
 active--; return i;
});
assert.deepEqual(await pool(tasks, 2), [0,1,2].map(value => ({status:'fulfilled', value})));
assert.equal(peak, 2);
const rejected = await pool([() => { throw new Error('sync'); }, () => Promise.reject('async'), async () => 7], 1);
assert.deepEqual(rejected.map(r => r.status), ['rejected','rejected','fulfilled']);
assert.deepEqual(rejected[2], {status:'fulfilled', value:7});
assert.deepEqual(await pool([], 2), []);
for (const limit of [0, -1, 1.5, NaN, Infinity]) {
 await assert.rejects(async () => pool([], limit), RangeError);
}
console.log('pool: all assertions passed');

ローカルで実行

npx --yes --package tsx@4.21.0 tsx pool.check.ts

期待される動作/受け入れ

結果は [0、1、2] のままで、ピーク同時実行数は 2 に等しく、拒否されても後のタスクは停止しません。空の入力と無効な制限が合格します。予想される最終行: pool: すべてのアサーションが渡されました。ハングした実行を 30 秒後に停止し、タイムアウトを記録します。

02 · React 検索レースの修復

モデルテスト待ち

モデルの出力と観察された結果: 利用できません。モデルの実行は実行されていません。これらのチェックは作成されたフィクスチャであり、モデルの出力ではありません。

モデルを指定するように求めるプロンプト

以下の useSearch.ts を修正してください。 API useSearch(query, search) を保持します。ここで、search(q) は Promise<string[]> を返します。最新のクエリのみが状態を更新できます。空白/空白のクエリの結果とエラーをクリアします。古くなった成功と拒否を抑制します。エラーを現在の拒否メッセージに設定します。アンマウント後に更新を抑制します。検索も安定してます。項目とエラーフィールドを含むオブジェクトを返します。エラーは最初は null です。 useSearch.ts のみを返します。チェックを変更しないでください。

入力/スターターファイル

// Save as useSearch.ts — intentionally broken starter
import { useEffect, useState } from 'react';
export function useSearch(query: string, search: (q: string) => Promise<string[]>) {
 const [items, setItems] = useState<string[]>([]);
 const [error, setError] = useState<string | null>(null);
 useEffect(() => { search(query).then(setItems).catch(e => setError(e.message)); }, [query, search]);
 return {items, error};
}

テストする前にこれらのチェックを保存してください

// Save as race.check.test.tsx in a fresh npm directory.
// @vitest-environment jsdom
import { afterEach, expect, test, vi } from 'vitest';
import { act, cleanup, renderHook } from '@testing-library/react';
import { useSearch } from './useSearch';
afterEach(cleanup);
const deferred = () => {
 let resolve!: (v:string[])=>void;
 let reject!: (e:Error)=>void;
 const promise = new Promise<string[]>((a,b)=>{resolve=a;reject=b});
 return {promise,resolve,reject};
};
test('latest request, blank query, rejection and unmount', async () => {
 const a=deferred(), b=deferred(), c=deferred(), d=deferred();
 const pending: Record<string, ReturnType<typeof deferred>> = {a,b,c,d};
 const search=vi.fn((q:string) => pending[q].promise);
 const {result, rerender, unmount}=renderHook(({q})=>useSearch(q,search), {initialProps:{q:'a'}});
 rerender({q:'b'});
 await act(async()=>b.resolve(['B']));
 await act(async()=>a.resolve(['A']));
 expect(result.current.items).toEqual(['B']);
 rerender({q:'c'}); rerender({q:'  '});
 await act(async()=>c.reject(new Error('stale')));
 expect(result.current).toEqual({items:[],error:null});
 expect(search).toHaveBeenCalledTimes(3);
 rerender({q:'d'});
 await act(async()=>d.reject(new Error('offline')));
 expect(result.current.error).toBe('offline');
 const e=deferred();
 const next=()=>e.promise;
 const h=renderHook(()=>useSearch('e',next));
 h.unmount(); await act(async()=>e.resolve(['late']));
 unmount();
});

ローカルで実行

npm init -y
npm install --save-exact react@19.2.1 react-dom@19.2.1
npm install --save-dev --save-exact vitest@3.2.4 jsdom@26.1.0 @testing-library/react@16.3.0
npx vitest run race.check.test.tsx

期待される動作/受け入れ

a の前に b を解決します。 Bだけが残ります。 c を開始し、クエリをクリアして、c を拒否します。項目は空のままで、エラーは null のままです。現在の d を拒否します。エラーが発生するとオフラインになります。 Vitest は 1 つのテストに合格したと報告しています。効果のクリーンアップも確認してください。アンマウント アサーションだけでは、更新が抑制されたことを証明できません。

03 · Python CSV 集計

モデルテスト待ち

モデルの出力と観察された結果: 利用できません。モデルの実行は実行されていません。これらのチェックは作成されたフィクスチャであり、モデルの出力ではありません。

モデルを指定するように求めるプロンプト

Python 3.11 以降、標準ライブラリのみに対して summary.py を作成します。標準入力から UTF-8 CSV を読み取ります: 名前、金額、通貨。通貨ごとに小数点以下の金額を合計し、フィールドをトリムし、大文字の通貨を使用し、USD/EUR のみを受け入れます。フィールドが欠落している/空白である、サポートされていない通貨、不正な/非有限の金額、または小数点以下 2 桁を超える行をスキップします。名前内で引用符で囲まれたカンマをサポートします。ソートされた通貨キーと小数点以下 2 桁の文字列値、およびスキップされたカウント (合計 (通貨から金額へのオブジェクト) とスキップされた (整数) を含む JSON を出力します。空の CSV では合計が空になり、0 がスキップされます。float は使用しないでください。 summary.py のみを返します。

入力/スターターファイル

name,amount,currency
"Doe, Jane",0.10,usd
Bob,0.20,USD
Eve,-1.00,EUR
X,NaN,USD
Y,2.345,USD
Z,10,GBP
Missing,,USD

テストする前にこれらのチェックを保存してください

# Save as csv_check.py next to summarize.py
import json, subprocess, sys
sample = 'name,amount,currency\n"Doe, Jane",0.10,usd\nBob,0.20,USD\nEve,-1.00,EUR\nX,NaN,USD\nY,2.345,USD\nZ,10,GBP\nMissing,,USD\n'
def run(data):
 p = subprocess.run([sys.executable, 'summarize.py'], input=data, text=True, capture_output=True, timeout=5, check=True)
 return json.loads(p.stdout)
assert run(sample) == {'totals': {'EUR':'-1.00', 'USD':'0.30'}, 'skipped':4}
assert run('name,amount,currency\n') == {'totals':{}, 'skipped':0}
assert run('name,amount,currency\nA,Infinity,USD\n') == {'totals':{}, 'skipped':1}
print('csv: all assertions passed')

ローカルで実行

python csv_check.py

期待される動作/受け入れ

Doe を引用すると、Jane は 1 つの名前として解析します。 USD 0.10 + 0.20 はちょうど「0.30」になります。ユーロ合計は「-1.00」です。 4行スキップされます。空のテーブルと無限大のチェックに合格します。予想される最終行: csv: すべてのアサーションが渡されました。

04 · クロスファイルインターフェイスのリファクタリング

モデルテスト待ち

モデルの出力と観察された結果: 利用できません。モデルの実行は実行されていません。これらのチェックは作成されたフィクスチャであり、モデルの出力ではありません。

モデルを指定するように求めるプロンプト

以下の 3 つの TypeScript ファイルをリファクタリングします。 displayName を内部ユーザーの firstName と lastName に置き換えます。 getDisplayName(user): string を user.ts からエクスポートします。名前をトリミングし、空でない部分をスペース 1 つで結合します。 renderUser と toPublicUser を更新し、それらの名前、戻り値の型、および id フィールドと name フィールドを持つパブリック出力オブジェクトを保持します。内部の displayName 参照を削除します。何もありません。アサーションまたは依存関係を入力します。 3 つの完全なファイルをすべて返します。チェックは変更しないでください。

入力/スターターファイル

// user.ts
export type User = {id: string; displayName: string};
// view.ts
import type { User } from './user';
export const renderUser = (user: User): string => user.displayName;
// api.ts
import type { User } from './user';
export const toPublicUser = (user: User): {id: string; name: string} => ({id: user.id, name: user.displayName});

テストする前にこれらのチェックを保存してください

// Save as refactor.check.ts
import assert from 'node:assert/strict';
import { getDisplayName, type User } from './user';
import { renderUser } from './view';
import { toPublicUser } from './api';
const u: User = {id:'u1', firstName:' Ada ', lastName:' Lovelace '};
assert.equal(getDisplayName(u), 'Ada Lovelace');
assert.equal(renderUser(u), 'Ada Lovelace');
assert.deepEqual(toPublicUser(u), {id:'u1', name:'Ada Lovelace'});
assert.equal(getDisplayName({...u, firstName:' ', lastName:' Ng '}), 'Ng');
assert.equal(getDisplayName({...u, firstName:'', lastName:''}), '');
console.log('refactor: all assertions passed');

ローカルで実行

npx --yes --package typescript@5.9.3 tsc --noEmit --strict --target ES2022 --module ESNext --moduleResolution bundler user.ts view.ts api.ts
npx --yes --package tsx@4.21.0 tsx refactor.check.ts

期待される動作/受け入れ

Ada / Lovelace と周囲のスペースは両方のコンシューマーで Ada Lovelace になります。 API 出力は id="u1"、name="Ada Lovelace" のままです。単一名および空の名前の場合は合格します。厳密な型チェックは成功します。アサーションおよび残りの displayName 参照の差分を確認します。

コードレベルで利用できるものは何ですか?

Google は、同一のビデオ出力と以前の Rust ポートと比べて 2.7 倍の速度向上を実現する libgav1 Rust 最適化について説明しています。このレポートでは、完全なプロンプト、生成されたパッチ、および実行記録は提供されません。コードの抜粋をでっち上げたり、これを独自の結果として主張したりすることなく、アカウントをリンクします。

この証拠の使い方

私たちの分析: 自分のリポジトリから小さなタスクから始めます。ワンショット生成の場合は、正確性とエッジケースをチェックします。デバッグ用に、失敗した回帰テストを保存します。より長いタスクの場合は、完全な差分と互換性を検査してください。公開されたスコアは評価を正当化しますが、受け入れチェックに代わるものではありません。

開発者が尋ねる質問