개발자 평가 가이드

Gemini 4 Argon 코딩 테스트

게시된 벤치마크부터 코드까지 확인할 수 있습니다. 증거와 평가 조건을 조사한 다음 네 가지 집중 프로그래밍 작업을 시도해 보세요.

확인된 소스:

공개된 점수가 측정하는 것

Google은 DeepSWE v1.1에서 77.9%를 보고합니다. 출시 테이블에는 FrontierSWE v2에서 55.0%, Terminal-Bench 4.0에서 57.4%가 나와 있습니다. 이들은 코딩 품질에 대한 상호 교환 가능한 척도가 아닌 다양한 작업 세트를 사용합니다.

아르곤에 대한 별도의 0~100% 막대: DeepSWE v1.1 77.9%, FrontierSWE v2 55.0%, Terminal-Bench 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를 사용했습니다. 이 방법론에서는 보고된 가장 높은 사고 수준을 사용하여 Claude의 시스템 카드와 GPT의 리더보드 결과를 인용합니다. 동일한 하네스와 예산이 설정되지 않았습니다.

다른 모델 기록 · 통제된 직접 대면 테스트가 아닌 다른 출처
모델출처 / 비교 가능성
Gemini 3.8 Flash인용된 출처에는 게시되지 않음. 이 릴리스 표에는 Gemini 3.8 Flash와 일치하는 결과가 없습니다. Flash Cyber ​​또는 다른 버전을 대체하지 마십시오.
GPT-6 AstraDeepSWE v1.1: 74.1%, 리더보드에서 Google 인용. 아르곤과 동일한 하네스 및 예산이 확인되지 않았습니다.
Claude Opus 5.5DeepSWE v1.1: 74.2%, Google이 시스템 카드에서 인용한 값입니다. 아르곤과 동일한 하네스 및 예산이 확인되지 않았습니다.

과거에 발표된 기록은 오늘날의 API를 측정하거나 모든 코딩 워크플로에 대한 승자를 설정하지 않습니다.

반복 가능한 워크플로

작업별로 모델당 첫 번째 시도를 한 번 사용합니다. 프롬프트 및 확인을 중지합니다. 수리는 별도로 보고하세요. 정확한 모델 ID, 날짜, 사고 수준, 도구, 런타임, 종속성 버전, 경과 시간, 토큰 사용, 종료 코드 및 편집되지 않은 출력을 기록합니다. 사용할 수 없는 필드를 알 수 없음으로 표시하세요.

5단계: 프롬프트, 생성된 코드, 실행, 어설션, 증거 기록.
원본 워크플로우 그림. 예상 출력은 테스트 오라클입니다. 관찰된 출력은 실제 실행에서 나와야 합니다.

재현 가능한 4가지 프로그래밍 작업

작업별로 새로운 대화를 사용하세요. 프롬프트, 도구, 종속성 및 시도 예산을 모델 전반에 걸쳐 동일하게 유지하십시오. 코드를 생성하기 전에 제공된 검사를 저장하십시오. 일회용 로컬 디렉터리에서 생성된 코드를 실행합니다.

01 · TypeScript 동시성 풀

모델 테스트 대기 중

모델 출력 및 관찰 결과: 사용할 수 없음; 모델 실행이 수행되지 않았습니다. 이러한 검사는 모델 출력이 아닌 제작된 설비입니다.

모델을 제공하라는 메시지가 표시됩니다.

비동기 함수 pool<T>(작업: Array<() => Promise<T>>, 제한: 숫자): Promise<PromiseSettledResult<T>[]>를 내보내는 pool.ts를 구현합니다. 작업을 느리게 시작하고, 최대 한도에서 동시에 실행하고, 입력 순서를 유지하고, 다른 작업을 중지하지 않고 약속 거부 및 동기식 발생을 해결합니다. 빈 입력은 []을 반환합니다. 빈 입력에 대해서도 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 · 반응 검색 경주 수리

모델 테스트 대기 중

모델 출력 및 관찰 결과: 사용할 수 없음; 모델 실행이 수행되지 않았습니다. 이러한 검사는 모델 출력이 아닌 제작된 설비입니다.

모델을 제공하라는 메시지가 표시됩니다.

아래의 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는 하나의 테스트를 통과했다고 보고합니다. 또한 효과 정리를 검토하세요. 마운트 해제 어설션만으로는 업데이트가 억제되었음을 증명할 수 없습니다.

03 · Python CSV 집계

모델 테스트 대기 중

모델 출력 및 관찰 결과: 사용할 수 없음; 모델 실행이 수행되지 않았습니다. 이러한 검사는 모델 출력이 아닌 제작된 설비입니다.

모델을 제공하라는 메시지가 표시됩니다.

표준 라이브러리인 Python 3.11+용 summary.py를 작성하세요. stdin에서 UTF-8 CSV 읽기: 이름, 금액, 통화. 통화별 소수점 합계, 필드 자르기, 대문자 통화, USD/EUR만 허용됩니다. 누락된/빈 필드, 지원되지 않는 통화, 잘못된 형식/제한되지 않은 금액 또는 소수 자릿수가 2자리를 초과하는 행을 건너뜁니다. 이름에 인용된 쉼표를 지원합니다. 정렬된 통화 키와 소수점 이하 두 자리의 문자열 값, 건너뛴 횟수(총계(통화-금액 개체) 및 건너뛴(정수))가 포함된 JSON을 출력합니다. 빈 CSV는 빈 합계를 제공하고 0을 건너뜁니다. 부동 소수점을 사용하지 마세요. 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은 하나의 이름으로 구문 분석합니다. USD 0.10 + 0.20은 정확히 "0.30"이 됩니다. EUR 총액은 "-1.00"입니다. 4개 행을 건너뜁니다. 빈 테이블 및 무한대 검사가 통과되었습니다. 예상되는 마지막 줄: csv: 모든 어설션이 통과되었습니다.

04 · 파일 간 인터페이스 리팩터링

모델 테스트 대기 중

모델 출력 및 관찰 결과: 사용할 수 없음; 모델 실행이 수행되지 않았습니다. 이러한 검사는 모델 출력이 아닌 제작된 설비입니다.

모델을 제공하라는 메시지가 표시됩니다.

아래의 세 가지 TypeScript 파일을 리팩토링하세요. 내부 사용자의 displayName을 firstName 및 lastName으로 바꿉니다. getDisplayName(user) 내보내기: user.ts에서 문자열; 이름을 자르고 비어 있지 않은 부분을 하나의 공백으로 결합하십시오. renderUser 및 toPublicUser를 업데이트하고 해당 이름, 반환 유형, id 및 name 필드가 있는 공개 출력 개체를 유지합니다. 내부 displayName 참조를 제거합니다. 아니요, 유형 어설션 또는 종속성이 없습니다. 세 개의 전체 파일을 모두 반환합니다. 수표를 바꾸지 마십시오.

입력/스타터 파일

// 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 최적화를 설명합니다. 보고서는 완전한 프롬프트, 생성된 패치 및 실행 기록을 제공하지 않습니다. 우리는 코드 발췌를 만들어내거나 이를 우리 자신의 결과라고 주장하지 않고 계정을 연결합니다.

이 증거를 사용하는 방법

우리의 분석: 자신의 저장소에서 작은 작업부터 시작하세요. 일회성 생성의 경우 정확성과 극단적인 경우를 확인하세요. 디버깅을 위해 실패한 회귀 테스트를 보존합니다. 더 긴 작업의 경우 전체 차이점과 호환성을 검사하세요. 게시된 점수는 평가를 정당화하지만 합격 확인을 대체하지는 않습니다.

개발자가 묻는 질문