---
title: "Foundation Model별 토큰 비용 비교: 코딩 에이전트 랄프 루프로 실측한 Amazon Bedrock 14개 모델"
description: "RealWorld 백엔드 구현 과제를 랄프 루프로 Amazon Bedrock us-east-1의 14개 모델에서 5회씩 실행하고, 완주 여부와 토큰·비용·LLM 요청 수를 비교한 실측 보고서"
domain: benchmarks
tags: [benchmark, bedrock, coding-agent, ralph-loop, llm, cost, agentic-ai]
created: 2026-10-13
updated: 2026-10-13
source_url: https://devfloor9.github.io/engineering-playbook/docs/benchmarks/ralph-loop-coding-agent-bedrock
---

:::info 참고한 벤치마크
이 벤치마크는 로보코(Roboco) 정도현님의 [랄프 루프 모델별 완주 비교](https://roboco.io/coding-agent-benchmark/) 리포트와 [공개 저장소](https://github.com/roboco-io/coding-agent-benchmark)를 참고해 만들었습니다.
과제(RealWorld 백엔드 구현), 완주 기준, 랄프 루프 하네스의 구조, 채점에 쓰는 Hurl 테스트는 원 리포트를 따랐습니다.
Amazon Bedrock us-east-1에서의 실행, 빌더·검증자 2-에이전트 구성, 모델당 5회 반복, Bedrock 단가 기준 비용 계산은 이 보고서에서 정했습니다.
따라서 이 보고서의 수치는 원 리포트의 결과가 아니며, 원 리포트와 같은 조건에서 얻은 값도 아닙니다.
:::

:::info 측정 상태
**실측 완료** — Amazon Bedrock us-east-1에서 14개 모델을 5회씩, 모두 70개 run을 실행했고 그중 69개가 완주했습니다.
13개 모델은 2026-10-12 22:28 ~ 2026-10-13 00:18 UTC에 실행했습니다. Claude Fable 5.1은 계정의 데이터 보존 설정을 바꾼 뒤 2026-10-13 04:36 ~ 05:21 UTC에 따로 실행했습니다.
표의 수치는 모두 실행 기록(토큰 사용량, 채점 결과, 세션 기록)에서 스크립트로 생성했습니다.
:::


- 완주한 run: 69/70 (14개 모델 × 5회)
- run당 비용이 가장 낮은 모델: GPT-6 Luna $0.027 (중앙값)
- run당 비용이 가장 높은 모델: GPT-6 Astra $3.495 (중앙값)
- 최고·최저 모델의 비용 차이: 약 130배
- 전체 토큰 중 캐시 읽기 비중: 94%
- 총 실행 비용(계산값): $106.02 (폐기한 1차 실행 $17.60 포함)


## 개요

이 보고서는 AI 코딩 에이전트가 같은 백엔드 구현 과제를 끝까지 완성하는 데 모델마다 토큰, 비용, LLM 요청이 얼마나 드는지를 Amazon Bedrock에서 직접 측정한 결과입니다.

**랄프 루프(Ralph loop)** 는 같은 프롬프트를 새 에이전트 세션에 반복해서 주는 실행 방식입니다. 반복과 반복 사이에는 저장소(파일과 git 이력)만 남고 대화 기록은 이어지지 않습니다. 그래서 에이전트는 매번 저장소를 읽고 남은 작업을 스스로 찾아야 하며, 과제를 끝냈다고 판단하면 완료 표시 파일을 만듭니다. 하네스는 반복이 끝날 때마다 공식 테스트로 결과를 채점합니다.

비교 대상은 Amazon Bedrock에서 호출할 수 있는 프론티어 모델(그룹 1)과 중국 오픈웨이트 모델(그룹 2)입니다. 오픈웨이트 모델은 학습된 가중치가 공개된 모델을 말합니다. 원 리포트는 모델마다 다른 에이전트 하네스와 제공사 API로 실행했지만, 이 보고서는 모든 모델을 같은 하네스(pi coding agent)와 같은 API(Bedrock Converse)로 실행했습니다. 그래서 여기서 보이는 차이는 같은 실행 조건에서의 모델 간 차이입니다.

## 요약

- **실측 범위** [사실]
  - Amazon Bedrock us-east-1에서 14개 모델을 랄프 루프로 5회씩, 모두 70개 run을 실행했습니다.
  - 13개 모델은 2026-10-12 22:28 ~ 2026-10-13 00:18 UTC에 실행했습니다. Claude Fable 5.1은 계정의 Bedrock 데이터 보존 모드를 바꾼 뒤 2026-10-13 04:36 ~ 05:21 UTC에 따로 실행했습니다.
  - 구성은 같은 모델로 만든 빌더·검증자 2-에이전트입니다.
  - 그룹 1(Bedrock에서 호출할 수 있는 프론티어 모델) 12개, 그룹 2(Bedrock에서 호출할 수 있는 중국 오픈웨이트 모델) 2개입니다.
- **완주** [사실]
  - 70개 run 중 69개가 공식 채점을 통과했습니다. 공식 채점은 RealWorld Hurl 테스트 13개 파일(요청 154개)이 모두 통과해야 합니다.
  - 13개 모델이 5회 모두 완주했고, 나머지는 GLM 5.3 4/5입니다.
  - 모든 모델의 랄프 반복 중앙값은 1회입니다. 완주한 run 중 반복이 2회 이상 필요했던 run은 3개입니다.
- **비용** [계산: 보고된 토큰 × 2026-10-12 기준 Bedrock US 교차 리전 추론 단가, run 1회 중앙값]
  - 가장 낮은 모델: GPT-6 Luna $0.027, Claude Haiku 5.5 $0.065
  - 가장 높은 모델: GPT-6 Astra $3.495, Claude Fable 5.1 $2.566, Claude Opus 4.8 $2.018
  - 최고와 최저의 차이는 약 130배입니다.
- **그룹 비교** [계산]
  - 중국 오픈웨이트 2개 모델(Kimi K3 $1.422, GLM 5.3 $1.821)은 그룹 대표값(모델별 중앙값의 중앙값) $1.621로, 프론티어 그룹 대표값($0.831)의 약 2.0배였습니다.
  - 출력 토큰은 약 2.3배, 전체 토큰은 약 2.3배, LLM 요청은 약 1.5배 많았습니다.
  - 그러나 프론티어 그룹 안의 비용 차이(약 130배)가 그룹 간 차이보다 훨씬 큽니다. 두 모델의 비용 순위는 14개 중 9위와 10위(낮은 순)이고, Claude Opus 5, Claude Opus 4.8, Claude Fable 5.1, GPT-6 Astra보다는 저렴했습니다.
  - 따라서 비용은 그룹 단위가 아니라 모델 단위로 판단해야 합니다.
- **비용을 좌우한 요인** [계산]
  - 완주한 run의 전체 토큰 중 94%가 캐시 읽기였습니다. 캐시 읽기는 앞선 요청에서 저장해 둔 프롬프트 앞부분을 다시 읽은 토큰으로, 일반 입력보다 단가가 낮습니다.
  - 그래서 출력 단가만이 아니라 캐시 읽기 단가와 사용량이 비용을 크게 좌우했습니다. 예를 들어 GLM 5.3은 run 비용의 약 68%가 캐시 읽기에서 나왔습니다.
- **Claude Fable 5.1** [사실·계산]
  - 계정의 us-east-1 데이터 보존 모드를 `inherit`에서 `aws_review`로 바꾼 뒤 호출할 수 있었고, 5회 중 5회 완주했습니다.
  - run당 비용 중앙값은 $2.566로 14개 중 13위(낮은 순)입니다. 입력·출력 단가($11/$55)는 GPT-6 Astra와 같고 Claude 모델 중 가장 높습니다.
  - `aws_review` 모드에서는 Fable 5·5.1 요청의 프롬프트와 출력이 AWS 경계 안에 최대 30일 보관되고, AWS가 사람 검토를 할 수 있습니다. 모델 제공사와는 공유되지 않습니다.
- **공개 벤치마크와의 비교** [계산]
  - 원 리포트가 같은 pi 하네스로 실행한 6개 모델의 공개 run을 Bedrock 단가로 환산해 이번 실측과 비교했습니다.
  - 4개 모델(Claude Opus 5.5, Claude Sonnet 5.5, Claude Haiku 5.5, GPT-6 Sol)은 이번 실측(검증자 포함)과 ±10% 안에서 일치했습니다.
  - 반면 GPT-6.1 Sol 약 1.6배, Kimi K3 약 1.9배로 더 높게 나왔습니다.
- **총 실행 비용** [계산]
  - 집계에 쓴 실행 $88.42(Claude Fable 5.1 $12.87 포함), 폐기한 1차 실행 $17.60, 합계 $106.02입니다.
  - 모델별 사용액이 가장 큰 GPT-6 Astra도 $16.82로, 모델당 한도 $500 안에서 끝났습니다. 실제 청구액은 AWS Cost Explorer에서 확인해야 합니다.

## 표기 규칙

이 보고서는 값의 성격을 다음 네 가지로 구분합니다.

- **[사실]**: 직접 실행하거나 조회해서 확인한 값입니다. 확인 시점을 함께 적습니다.
- **[계산]**: [사실]인 토큰 수에 공개 단가를 곱하는 것처럼 정해진 규칙으로 산출한 값입니다. 실제 청구 금액이 아닙니다.
- **[추정]**: 가정이 들어간 값입니다. 어떤 가정인지 함께 적습니다.
- **[출처]**: 수치나 판단의 근거가 된 자료입니다.

자료에서 확인되지 않는 값은 만들어 넣지 않고 "확인 불가"로 표시합니다.

## 참고 벤치마크와 과제

### 과제와 완주 기준 [출처: 원 리포트와 저장소의 PROMPT-en.md, 하네스 스크립트]

모든 모델이 같은 과제를 받습니다. 과제는 [RealWorld](https://realworld-docs.netlify.app/specifications/backend/endpoints/) 백엔드 API를 TypeScript, Fastify, Prisma, SQLite로 구현하는 것입니다. 범위는 JWT 인증, 사용자와 프로필, 글 CRUD, 댓글, 즐겨찾기, 태그, 피드입니다.

완주로 인정되려면 두 조건을 모두 만족해야 합니다.

1. 에이전트가 완료 조건을 직접 확인한 뒤 저장소 루트에 `.ralph-done` 파일을 만듭니다.
2. 하네스의 채점기가 공식 RealWorld Hurl API 테스트(13개 파일, 요청 154개)를 다시 실행했을 때 13개 파일이 모두 통과합니다. Hurl은 HTTP 요청과 기대 응답을 텍스트 파일로 적어 실행하는 테스트 도구입니다.

`.ralph-done`이 있어도 채점에서 13개 파일을 모두 통과하지 못하면, 하네스가 그 파일을 지우고 다음 반복을 진행합니다.

### 안전장치

원 리포트의 하네스에는 세 가지 안전장치가 있고, 이 보고서도 같은 값을 썼습니다.

- **멈춤 감지**: 세션 기록, 로그, 저장소 파일 중 어느 것도 300초 동안 바뀌지 않으면 세션을 종료합니다.
- **run 시간 상한**: run 하나가 20분(1,200초)을 넘으면 종료합니다.
- **비용 가드**: 실행 중 비용 추정치가 정해진 한도를 넘으면 run을 멈춥니다.

### 원 리포트의 지표 [사실: 원 리포트 페이지 데이터, 2026-10-12 15:40 UTC 확인]

원 리포트는 조건(모델 × 하네스)별로 run마다 소요 시간, 커밋 수, 출력 토큰, 각 제공사의 공개 API 정가로 계산한 비용, 완주 여부, 반복 횟수를 보고합니다. 원 리포트에는 28개 조건, 19개 모델, 117개 run이 있고 모두 완주했습니다. 원 리포트의 비용은 Bedrock 단가가 아니므로, 이 보고서는 같은 모델의 공개 run 토큰을 Bedrock 단가로 다시 계산해 비교했습니다.

## 비교 대상 모델

### 분류와 Bedrock 호출 가능 여부 [사실: 2026-10-12 확인]

호출 가능 여부는 세 단계로 확인했습니다. 첫째, Bedrock 사용자 가이드의 모델 카드와 리전별 제공 표를 확인했습니다. 대상 모델은 모두 us-east-1에서 리전 내 엔드포인트로는 제공되지 않고, 미국 지역 교차 리전 추론 프로필(`us.`로 시작하는 모델 ID)로 호출합니다. 둘째, 실행 계정에서 읽기 전용 역할로 대상 모델의 약관 동의, 권한, 사용 자격, 리전 제공 상태를 조회했습니다. 셋째, 모델마다 짧은 프롬프트를 실제로 보내 응답을 확인했습니다.

Kimi K3와 GLM 5.3의 Bedrock 모델 카드는 두 모델을 각각 "open-weight model", "open weight text generation model"이라고 적고 있습니다 [출처]. GLM 5.3은 원 리포트에 없는 모델입니다. 원 리포트의 glm-5.3-flash가 Bedrock에서 제공되지 않아, 같은 계열 중 Bedrock에서 제공되는 GLM 5.3을 별도로 추가했습니다.

| 원 리포트의 모델 | 제공사 | 분류 | us-east-1 Bedrock | 이 보고서에서 |
|---|---|---|---|---|
| Opus 5.5 | Anthropic | 그룹 1 프론티어 | 호출 가능 | 실측 |
| Sonnet 5.5 | Anthropic | 그룹 1 프론티어 | 호출 가능 | 실측 |
| Haiku 5.5 | Anthropic | 그룹 1 프론티어 | 호출 가능 | 실측 |
| Fable 5.1 | Anthropic | 그룹 1 프론티어 | 호출 가능(계정 데이터 보존 `aws_review` 필요) | 실측 |
| Opus 5 | Anthropic | 그룹 1 프론티어 | 호출 가능 | 실측 |
| Sonnet 5 | Anthropic | 그룹 1 프론티어 | 호출 가능 | 실측 |
| Opus 4.8 | Anthropic | 그룹 1 프론티어 | 호출 가능 | 실측 |
| gpt-6.1-sol | OpenAI | 그룹 1 프론티어 | 호출 가능 | 실측 |
| gpt-6-astra | OpenAI | 그룹 1 프론티어 | 호출 가능 | 실측 |
| gpt-6-sol | OpenAI | 그룹 1 프론티어 | 호출 가능 | 실측 |
| gpt-6-luna | OpenAI | 그룹 1 프론티어 | 호출 가능 | 실측 |
| gpt-5.6-sol | OpenAI | 그룹 1 프론티어 | 호출 가능 | 실측 |
| kimi-k3 | Moonshot AI | 그룹 2 중국 오픈웨이트 | 호출 가능 | 실측 |
| DeepSeek V4-Pro | DeepSeek | 중국 모델(가중치 공개 여부 미확인) | 제공되지 않음 | 제외 |
| DeepSeek V4.1-Flash | DeepSeek | 중국 모델(가중치 공개 여부 미확인) | 제공되지 않음 | 제외 |
| qwen3.8-max | Alibaba (Qwen) | 중국 모델(가중치 공개 여부 미확인) | 제공되지 않음 | 제외 |
| qwen3.8-27b | Alibaba (Qwen) | 중국 모델(가중치 공개 여부 미확인) | 제공되지 않음 | 제외 |
| glm-5.3-flash | Z.AI | 중국 모델(가중치 공개 여부 미확인) | 제공되지 않음(같은 계열의 GLM 5.3은 제공) | 제외, 대신 GLM 5.3 실측 |
| gemini-3.8-flash | Google | 어느 그룹에도 속하지 않음 | 제공되지 않음 | 제외 |
| GLM 5.3 (원 리포트에 없음) | Z.AI | 그룹 2 중국 오픈웨이트 | 호출 가능 | 실측 |

DeepSeek, Qwen, glm-5.3-flash는 2026-10-12 기준 us-east-1 Bedrock에서 제공되지 않아 제외했습니다. 이들의 가중치 공개 여부는 확인하지 않았습니다. Bedrock 미제공만으로 제외 사유가 충분하기 때문입니다. gemini-3.8-flash는 Google 모델이라 두 그룹 어디에도 속하지 않고, Bedrock에서도 제공되지 않습니다.

### Claude Fable 5.1과 데이터 보존

Claude Fable 5.1은 처음 확인할 때 Bedrock이 `data retention mode 'default' is not available for this model` 오류로 호출을 거부했습니다 [사실]. [Bedrock 사용자 가이드의 Data retention 문서](https://docs.aws.amazon.com/bedrock/latest/userguide/data-retention.html)(2026-10-13 확인)에 따르면, Claude Fable 5와 5.1은 계정의 유효 데이터 보존 모드가 `aws_review` 이상이어야 호출할 수 있습니다 [출처]. 이 설정은 리전별 계정 단위 구성이며, 요청 파라미터로는 바꿀 수 없습니다.

계정 소유자가 us-east-1의 데이터 보존 모드를 `inherit`에서 `aws_review`로 바꾼 뒤(2026-10-13 04:25:43 UTC), 조회 API로 바뀐 값을 확인하고 짧은 요청이 정상 응답하는 것을 확인한 다음 5회 실행했습니다 [사실]. 이 설정은 다음과 같이 동작합니다 [출처: 같은 문서].

- 콘솔 화면 없이 API로 설정합니다. 예: `aws bedrock put-account-data-retention --region us-east-1 --mode aws_review`. 되돌릴 때는 `--mode inherit`로 다시 설정합니다.
- 이 계정이 해당 리전에서 보내는 모든 bedrock-runtime 요청에 적용됩니다.
- Fable 5·5.1 요청의 프롬프트와 출력은 AWS 경계 안에 최대 30일 보관되고, AWS가 사람 검토를 할 수 있습니다. 모델 제공사와는 공유되지 않습니다.
- 다른 모델은 각 모델이 허용하는 모드를 따릅니다. 예를 들어 보관 안 함(`none`)을 허용하는 모델의 요청은 이 설정을 켜도 보관되지 않습니다.
- 교차 리전 추론으로 호출하면 보관 데이터는 요청이 실제로 처리된 리전에 저장됩니다.

데이터 보존 정책을 바꾸는 일이므로, 같은 실험을 하려면 계정 소유자가 이 영향을 확인하고 결정해야 합니다.

## 실행 구성

### 에이전트 하네스 [사실]

- 원 리포트의 pi 조건과 같은 [pi coding agent](https://www.npmjs.com/package/@earendil-works/pi-coding-agent) 0.87.1을 모든 모델에 썼습니다.
- Bedrock Converse API로 호출했고, 사고(thinking) 설정은 medium입니다. Claude 모델에는 adaptive thinking과 effort=medium으로 전달됩니다. Claude가 아닌 모델에는 pi가 reasoning 필드를 보내지 않으므로 모델 기본값이 적용됩니다.
- 원 리포트와 다른 점이 하나 있습니다. pi 0.87.1에는 Claude Haiku 5.5용 설정이 없어 Bedrock이 요청을 거부하므로, pi 번들 안의 모델 이름 목록 두 곳(adaptive thinking, 프롬프트 캐싱)에 `haiku-5`를 추가했습니다. 다른 모델의 요청에는 영향이 없습니다.

### 멀티 에이전트 구성

원 리포트는 에이전트 하나로 실행하고 멀티 에이전트 구성을 정의하지 않습니다. 이 보고서는 다음 구성을 정했습니다. 에이전트는 2개이고 둘 다 같은 모델이며, 한 반복 안에서 아래 순서로 차례로 실행됩니다. 에이전트끼리는 저장소의 파일로 정보를 주고받습니다.

1. **빌더**: 원 리포트의 `PROMPT-en.md`를 그대로 받아 구현합니다. 두 번째 반복부터는 "검증 에이전트가 이전 반복을 검토했으니 REVIEW.md를 먼저 읽으라"는 문장 하나가 프롬프트에 붙습니다. `.ralph-done`은 빌더만 만들 수 있습니다.
2. **검증자**: 새 세션에서 검증용 프롬프트를 받습니다. 서버를 띄워 공식 Hurl 테스트를 직접 실행하고, `REVIEW.md`에 판정(PASS/FAIL), 실패 항목, 원인, 수정할 목록을 적습니다. 다른 파일은 고치지 않습니다.
3. **채점**: 원 리포트와 같은 기준의 채점기가 완주 여부를 판정합니다.

### 격리와 자격 증명 [사실]

- 에이전트 세션과 채점은 실행할 때마다 별도 Docker 컨테이너에서 돕니다. 이미지는 Amazon Linux 2023, Node 22.23.3, pi 0.87.1, hurl 8.0.1로 구성했습니다.
- 컨테이너 하나는 메모리 8 GB, CPU 4개, 프로세스 4,096개로 제한했고, 해당 run의 저장소, 세션 기록, 홈 디렉터리만 연결했습니다.
- 컨테이너에는 AWS 액세스 키를 넘기지 않았습니다. Bedrock 호출에만 쓸 수 있고 최대 1시간 뒤 만료되는 Bedrock 단기 API 키만 넘겼으며, 10분마다 새로 발급했습니다.

### 안전장치와 실행 방식 [사실]

- run당 반복 상한은 30회, run 시간 상한은 1,200초, 멈춤 감지는 300초입니다.
- 비용 한도는 run당 $100, 모델당 $500, 전체 $7,000으로 두었습니다.
- 13개 모델은 최대 7개 모델을 동시에 실행했고, 한 모델의 5회 실행은 차례로 진행했습니다. Claude Fable 5.1은 다른 모델이 모두 끝난 뒤 단독으로 실행했습니다.
- 프롬프트는 영어만 사용했습니다.

### 지표 정의

- **완주**: 공식 채점을 통과한 run입니다. 중앙값과 최소·최대는 완주한 run만으로 계산합니다.
- **토큰** [사실]: Bedrock이 응답마다 보고한 사용량을 빌더와 검증자의 모든 요청에 걸쳐 더한 값입니다. 입력은 캐시가 적용되지 않은 입력 토큰이고, 출력에는 추론(reasoning) 토큰이 포함됩니다. 캐시 읽기와 캐시 쓰기는 따로 셉니다.
- **비용** [계산]: 토큰 수에 아래 "적용 단가"의 단가를 곱한 값입니다. 캐시 쓰기는 5분 캐시 단가로 계산했습니다. pi가 캐시 유지 시간을 지정하지 않으며, 이때 Bedrock 기본값이 5분이기 때문입니다.
- **랄프 반복**: 빌더가 실행된 반복 횟수입니다. 원 리포트의 반복 횟수와 같은 정의입니다.
- **LLM 요청**: 모델이 돌려준 응답 수입니다. 모델 수준의 "턴"에 해당하며 빌더와 검증자를 합친 값입니다.
- **run 시간**: run 시작부터 끝까지의 시간이며, 빌더·검증자 세션과 채점 시간을 포함합니다. 원 리포트의 소요 시간은 에이전트 세션 시간이라 정의가 다릅니다.

## 결과

### 비용과 시간

점 하나가 모델 하나이며, 완주한 run의 run당 비용 중앙값(가로, 로그 눈금)과 run 시간 중앙값(세로)을 나타냅니다.


차트: 모델별 run당 비용 중앙값(가로, 로그 눈금)과 run 시간 중앙값(세로)입니다. 같은 값이 아래 "모델별 결과" 표에 있습니다.


### 모델별 결과

막대는 완주한 run의 최소–최대 범위이고 세로선은 중앙값입니다. 지표를 바꿔 볼 수 있고, 행을 펼치면 run별 값이 나옵니다. 아래 표는 같은 값을 숫자로 정리한 것입니다. 값은 완주한 run의 중앙값이고, 괄호 안은 5회 중 최소–최대입니다. 비용은 [계산], 나머지는 [사실]입니다.


차트: 모델별 run당 비용, run 시간, 출력 토큰, 전체 토큰, LLM 요청의 5회 최소–최대 범위와 중앙값입니다. 중앙값과 범위는 바로 아래 표에, run별 값은 `src/data/ralph-loop-bedrock.json`에 있습니다.


| 그룹 | 모델 | 완주 | run당 비용(USD) | 출력 토큰 | 전체 토큰 | LLM 요청 | 랄프 반복 | run 시간(분) | |---|---|---|---|---|---|---|---|---| | 프론티어 | Claude Opus 5.5 | 5/5 | $0.907 ($0.861–$1.054) | 20,667 (20,402–23,773) | 796,558 (631,889–1,088,484) | 35 (30–45) | 1 | 6.1 (5.7–8.0) | | 프론티어 | Claude Sonnet 5.5 | 5/5 | $0.306 ($0.257–$0.328) | 14,161 (12,677–14,407) | 445,388 (226,794–603,161) | 25 (23–27) | 1–2 | 3.8 (3.4–4.1) | | 프론티어 | Claude Haiku 5.5 | 5/5 | $0.065 ($0.046–$0.084) | 52,713 (42,838–67,557) | 2,156,808 (1,155,347–2,727,358) | 50 (39–77) | 1–2 | 7.4 (6.2–9.9) | | 프론티어 | Claude Fable 5.1 | 5/5 | $2.566 ($2.118–$2.837) | 26,693 (22,047–29,187) | 1,183,739 (787,229–1,564,029) | 44 (36–58) | 1 | 8.9 (6.9–10.9) | | 프론티어 | Claude Opus 5 | 5/5 | $1.999 ($1.635–$3.726) | 28,503 (24,165–40,478) | 1,555,721 (1,138,625–3,851,983) | 57 (50–91) | 1 | 8.4 (6.8–14.0) | | 프론티어 | Claude Sonnet 5 | 5/5 | $1.179 ($1.128–$1.455) | 32,142 (31,074–36,492) | 3,059,198 (2,787,977–4,019,069) | 85 (77–102) | 1 | 9.7 (8.1–11.4) | | 프론티어 | Claude Opus 4.8 | 5/5 | $2.018 ($1.859–$2.678) | 23,804 (22,316–29,333) | 1,873,275 (1,675,909–2,735,633) | 60 (56–75) | 1 | 7.2 (6.6–9.6) | | 프론티어 | GPT-6.1 Sol | 5/5 | $0.527 ($0.457–$0.559) | 20,621 (18,490–22,847) | 1,164,468 (1,096,209–1,385,667) | 46 (44–53) | 1 | 8.1 (6.5–8.8) | | 프론티어 | GPT-6 Astra | 5/5 | $3.495 ($3.102–$3.562) | 22,221 (21,151–23,685) | 1,325,517 (1,139,606–1,479,623) | 48 (46–55) | 1 | 7.9 (7.3–8.8) | | 프론티어 | GPT-6 Sol | 5/5 | $0.291 ($0.258–$0.358) | 8,544 (7,967–9,605) | 564,091 (432,181–818,653) | 36 (32–51) | 1 | 3.1 (2.5–3.3) | | 프론티어 | GPT-6 Luna | 5/5 | $0.027 ($0.024–$0.066) | 14,272 (13,818–45,643) | 1,057,982 (848,865–1,979,669) | 50 (43–113) | 1–3 | 4.2 (4.0–15.7) | | 프론티어 | GPT-5.6 Sol | 5/5 | $0.755 ($0.667–$0.908) | 12,032 (10,223–12,787) | 584,537 (505,256–775,728) | 31 (27–34) | 1 | 4.1 (3.4–5.8) | | 중국 오픈웨이트 | Kimi K3 | 5/5 | $1.422 ($1.154–$1.640) | 39,505 (32,640–47,056) | 1,658,186 (1,276,997–1,856,453) | 61 (57–65) | 1 | 10.5 (8.2–12.0) | | 중국 오픈웨이트 | GLM 5.3 | 4/5 | $1.821 ($1.402–$2.062) | 59,582 (48,793–77,914) | 3,766,802 (2,876,201–4,364,926) | 80 (73–89) | 1 | 10.1 (8.2–15.0) |


### 토큰 구성 (중앙값)

| 모델 | 입력(캐시 미적용) | 출력 | 캐시 읽기 | 캐시 쓰기 | 합계 | 캐시 읽기 비중 |
|---|---|---|---|---|---|---|
| Claude Opus 5.5 | 74 | 20,667 | 722,474 | 53,343 | 796,558 | 91% |
| Claude Sonnet 5.5 | 54 | 14,161 | 392,240 | 38,933 | 445,388 | 88% |
| Claude Haiku 5.5 | 104 | 52,713 | 2,008,107 | 93,162 | 2,156,808 | 93% |
| Claude Fable 5.1 | 92 | 26,693 | 1,096,620 | 61,437 | 1,183,739 | 93% |
| Claude Opus 5 | 114 | 28,503 | 1,467,821 | 59,283 | 1,555,721 | 94% |
| Claude Sonnet 5 | 170 | 32,142 | 2,960,551 | 70,704 | 3,059,198 | 97% |
| Claude Opus 4.8 | 120 | 23,804 | 1,787,192 | 58,440 | 1,873,275 | 95% |
| GPT-6.1 Sol | 92 | 20,621 | 1,074,525 | 59,843 | 1,164,468 | 92% |
| GPT-6 Astra | 96 | 22,221 | 1,236,901 | 58,048 | 1,325,517 | 93% |
| GPT-6 Sol | 72 | 8,544 | 525,901 | 30,494 | 564,091 | 93% |
| GPT-6 Luna | 100 | 14,272 | 982,784 | 60,391 | 1,057,982 | 93% |
| GPT-5.6 Sol | 62 | 12,032 | 528,733 | 49,072 | 584,537 | 90% |
| Kimi K3 | 427 | 39,505 | 1,556,409 | 60,969 | 1,658,186 | 94% |
| GLM 5.3 | 160 | 59,582 | 3,612,806 | 87,281 | 3,766,802 | 96% |

### 빌더와 검증자의 분담 (중앙값)

"자기 종료 세션"은 에이전트가 자기 프로세스까지 종료해 exit 143으로 끝난 세션 수입니다(아래 "한계와 해석 주의" 참고).

| 모델 | 빌더 LLM 요청 | 검증자 LLM 요청 | 빌더 비용 | 검증자 비용 | 검증자 비중 | 자기 종료 세션 |
|---|---|---|---|---|---|---|
| Claude Opus 5.5 | 23 | 11 | $0.772 | $0.135 | 15% | 0 |
| Claude Sonnet 5.5 | 17 | 8 | $0.269 | $0.037 | 12% | 1 |
| Claude Haiku 5.5 | 41 | 10 | $0.061 | $0.005 | 8% | 0 |
| Claude Fable 5.1 | 33 | 13 | $2.192 | $0.375 | 15% | 0 |
| Claude Opus 5 | 44 | 14 | $1.773 | $0.203 | 10% | 0 |
| Claude Sonnet 5 | 71 | 10 | $1.101 | $0.061 | 5% | 0 |
| Claude Opus 4.8 | 52 | 9 | $1.887 | $0.133 | 7% | 1 |
| GPT-6.1 Sol | 38 | 8 | $0.442 | $0.055 | 10% | 0 |
| GPT-6 Astra | 41 | 9 | $3.196 | $0.278 | 8% | 0 |
| GPT-6 Sol | 28 | 7 | $0.259 | $0.047 | 16% | 0 |
| GPT-6 Luna | 44 | 10 | $0.022 | $0.007 | 25% | 0 |
| GPT-5.6 Sol | 22 | 8 | $0.552 | $0.181 | 24% | 0 |
| Kimi K3 | 47 | 16 | $1.300 | $0.122 | 9% | 0 |
| GLM 5.3 | 64 | 16 | $1.729 | $0.082 | 4% | 1 |

### 그룹 비교

각 그룹에 속한 모델들의 중앙값을 다시 중앙값으로 묶은 값이고, 괄호는 그룹 안 모델 간 범위입니다. 그룹 2는 모델이 2개뿐이므로, 그룹 값보다 모델별 값으로 비교하는 편이 정확합니다.

| 그룹 | 모델 수 | run당 비용 | 출력 토큰 | 전체 토큰 | LLM 요청 | run 시간(분) |
|---|---|---|---|---|---|---|
| 프론티어 | 12 | $0.831 ($0.027–$3.495) | 21,444 (8,544–52,713) | 1,174,104 (445,388–3,059,198) | 47 (25–85) | 7.3 (3.1–9.7) |
| 중국 오픈웨이트 | 2 | $1.621 ($1.422–$1.821) | 49,543 (39,505–59,582) | 2,712,494 (1,658,186–3,766,802) | 70 (61–80) | 10.3 (10.1–10.5) |

### 같은 모델의 공개 run과 비교 [계산]

원 리포트가 같은 pi 하네스로 실행한 공개 run(에이전트 하나)의 토큰에 Bedrock 단가를 곱한 값과, 이번 실측(빌더+검증자) 중앙값을 비교했습니다. "빌더 몫만의 비율"은 이번 실측에서 검증자 비용을 뺀 빌더 비용을 공개 run 환산값으로 나눈 값입니다. 나머지 모델은 공개 run이 다른 하네스(Claude Code, Codex)를 썼거나 토큰 기록이 없어 직접 비교하지 않았습니다.


차트: 같은 pi 하네스로 실행한 공개 run의 Bedrock 단가 환산 비용, 이번 실측 비용, 빌더 몫 비용입니다. 같은 값이 바로 아래 표에 있습니다.


| 모델 | 원 리포트 실험 | 공개 run 환산 비용 | 이번 실측 비용 | 비율 | 빌더 몫만의 비율 | 출력 토큰(공개 → 이번) |
|---|---|---|---|---|---|---|
| Claude Opus 5.5 | EXP-030 | $0.896 | $0.907 | 1.01 | 0.86 | 18,990 → 20,667 |
| Claude Sonnet 5.5 | EXP-032 | $0.282 | $0.306 | 1.09 | 0.95 | 12,223 → 14,161 |
| Claude Haiku 5.5 | EXP-038 | $0.067 | $0.065 | 0.97 | 0.91 | 54,120 → 52,713 |
| GPT-6.1 Sol | EXP-034 | $0.332 | $0.527 | 1.59 | 1.33 | 13,251 → 20,621 |
| GPT-6 Sol | EXP-030 | $0.298 | $0.291 | 0.98 | 0.87 | 7,599 → 8,544 |
| Kimi K3 | EXP-029 | $0.749 | $1.422 | 1.90 | 1.74 | 18,667 → 39,505 |

### 모델별 개요

카드의 값은 완주한 run의 중앙값이고, 괄호 안은 최소–최대입니다. 아래 설명은 run별 지표, 종료 코드, 검증자 판정, 세션 기록에서 확인한 내용입니다.


- **Claude Opus 5.5** (프론티어 · Anthropic, run당 $0.907): 5회 모두 첫 반복에서 완주했고, 검증자도 5회 모두 PASS를 냈습니다.
- **Claude Sonnet 5.5** (프론티어 · Anthropic, run당 $0.306): 5회차는 첫 번째 반복에서 빌더가 자기 프로세스까지 종료했고(exit 143), 두 번째 반복에서 완주했습니다. 2·3회차는 서버가 `PORT` 환경 변수 대신 다른 포트에서 떠서 검증자가 FAIL을 냈지만, 공식 채점은 통과했습니다.
- **Claude Haiku 5.5** (프론티어 · Anthropic, run당 $0.065): 4회차는 첫 번째 반복이 완료 선언 없이 끝났고(채점 0/13 파일), 두 번째 반복에서 완주했습니다. pi 0.87.1이 Haiku 5.5에 맞지 않는 thinking 형식을 보내 Bedrock이 요청을 거부하므로, pi 번들의 모델 이름 목록 두 곳에 `haiku-5`를 추가해 실행했습니다.
- **Claude Fable 5.1** (프론티어 · Anthropic, run당 $2.566): 계정의 us-east-1 데이터 보존 모드를 `aws_review`로 바꾼 뒤, 다른 13개 모델의 실행이 끝나고 약 4시간 18분 뒤에 단독으로 실행했습니다. 5회 모두 첫 반복에서 완주했고, 검증자도 5회 모두 PASS를 냈습니다.
- **Claude Opus 5** (프론티어 · Anthropic, run당 $1.999): 5회 모두 첫 반복에서 완주했고, 검증자도 5회 모두 PASS를 냈습니다. 3회차 비용이 중앙값의 약 1.9배였습니다(LLM 요청 91회, 반복 1회).
- **Claude Sonnet 5** (프론티어 · Anthropic, run당 $1.179): 5회 모두 첫 반복에서 완주했고, 검증자도 5회 모두 PASS를 냈습니다.
- **Claude Opus 4.8** (프론티어 · Anthropic, run당 $2.018): 3회차 검증자 세션이 자기 프로세스까지 종료해(exit 143) 판정이 남지 않았습니다. 공식 채점은 통과했습니다.
- **GPT-6.1 Sol** (프론티어 · OpenAI, run당 $0.527): 5회 모두 첫 반복에서 완주했고, 검증자도 5회 모두 PASS를 냈습니다.
- **GPT-6 Astra** (프론티어 · OpenAI, run당 $3.495): 5회 모두 첫 반복에서 완주했고, 검증자도 5회 모두 PASS를 냈습니다.
- **GPT-6 Sol** (프론티어 · OpenAI, run당 $0.291): 5회 모두 첫 반복에서 완주했고, 검증자도 5회 모두 PASS를 냈습니다.
- **GPT-6 Luna** (프론티어 · OpenAI, run당 $0.027): 3회차: 첫 번째 반복에서 빌더가 `npm run dev`를 포그라운드로 실행해 세션이 멈췄고, 300초 멈춤 감지로 종료됐습니다. 두 번째 반복 뒤 채점은 13개 파일 중 5개만 통과했고, 세 번째 반복에서 완주했습니다. 1회차는 서버가 `PORT` 환경 변수 대신 다른 포트에서 떠서 검증자가 FAIL을 냈지만, 공식 채점은 통과했습니다. 3회차 비용이 중앙값의 약 2.5배였습니다(LLM 요청 113회, 반복 3회).
- **GPT-5.6 Sol** (프론티어 · OpenAI, run당 $0.755): 2·4회차는 서버가 `PORT` 환경 변수 대신 다른 포트에서 떠서 검증자가 FAIL을 냈지만, 공식 채점은 통과했습니다.
- **Kimi K3** (중국 오픈웨이트 · Moonshot AI, run당 $1.422): 5회 모두 첫 반복에서 완주했고, 검증자도 5회 모두 PASS를 냈습니다. 3회차에서 Bedrock 스트림 오류가 2번 났고, pi가 자동으로 다시 요청해 이어졌습니다. 모델 카드는 Converse에서 명시적 프롬프트 캐싱을 제공하지 않는다고 하지만, Bedrock은 캐시 읽기·쓰기 토큰을 보고했습니다(적용 방식 확인 불가).
- **GLM 5.3** (중국 오픈웨이트 · Z.AI, run당 $1.821): 4회차: 첫 번째 반복에서 빌더가 테스트용 node 서버를 포그라운드로 띄운 채 멈췄고, 300초 멈춤 감지로 종료됐습니다. 두 번째 반복은 20분 상한에 걸려 `.ralph-done`을 만들기 전에 끝났습니다. 상한 직후 채점에서 저장소는 13개 파일을 모두 통과했지만, 완주 규칙(`.ralph-done` + 13개 파일 통과)에 따라 미완주로 집계했습니다. 2회차 검증자 세션이 자기 프로세스까지 종료해(exit 143) 판정이 남지 않았습니다. 공식 채점은 통과했습니다.


### 해석

**그룹 간 차이.**

중국 오픈웨이트 모델은 같은 과제를 끝내는 데 LLM 요청을 더 많이 보내고(그룹 대표값 기준 약 1.5배) 출력 토큰을 더 많이 썼으며(약 2.3배), 시간도 더 걸렸습니다(약 1.4배). Bedrock에서의 단가도 낮지 않았습니다.

- Kimi K3의 입력·출력 단가(백만 토큰당 $3.3/$16.5)는 Claude Sonnet 5.5와 GPT-6.1 Sol($2.2/$11)보다 높습니다.
- GLM 5.3은 출력 단가가 $5.808로 낮습니다. 하지만 캐시 읽기 단가가 $0.3432로 Sonnet 5.5($0.11)의 약 3배이고, 캐시 읽기 토큰을 많이 썼습니다(중앙값 3,612,806개). 그래서 run 비용의 약 68%가 캐시 읽기에서 나왔습니다. [계산: 캐시 읽기 토큰 중앙값 × 단가를 run 비용 중앙값으로 나눈 근사치]

그 결과 run당 비용은 프론티어 그룹 대표값의 약 2.0배가 됐습니다. 이 결과에는 두 가지 단서가 있습니다.

- 이 비교는 Bedrock 단가 기준입니다. 오픈웨이트 모델을 직접 호스팅할 때의 비용은 다루지 않았습니다.
- 그룹 2는 모델이 2개뿐이라 그룹 대표값의 신뢰도가 낮습니다.

**모델 간 차이(프론티어).**

- **단가가 비용 차이의 주요인입니다.**
  - GPT-6 Luna와 Claude Haiku 5.5는 입력·출력 단가가 $0.11/$0.55입니다. 전체 토큰을 각각 1,057,982개, 2,156,808개 썼는데도 run당 비용은 $0.027, $0.065였습니다.
  - 입력·출력 단가가 가장 높은 모델은 GPT-6 Astra와 Claude Fable 5.1($11/$55)입니다. 캐시 읽기 단가는 GPT-6 Astra $1.1, Fable 5.1 $0.275입니다. run당 비용은 GPT-6 Astra $3.495, Fable 5.1 $2.566로 GPT-6 Astra 쪽이 더 높았습니다. 출력 토큰은 GPT-6 Astra 22,221개, Fable 5.1 26,693개, 캐시 읽기 토큰은 각각 1,236,901개, 1,096,620개였습니다.
- **같은 단가 등급 안에서는 사용량 차이가 드러납니다.**
  - Claude Sonnet 5와 Sonnet 5.5는 입력·출력 단가가 같습니다($2.2/$11). 캐시 읽기 단가만 Sonnet 5가 $0.22로 2배입니다.
  - Sonnet 5는 LLM 요청 85회, 전체 토큰 3,059,198개를 써서 $1.179였습니다. Sonnet 5.5는 요청 25회, 전체 토큰 445,388개, $0.306로, Sonnet 5가 약 3.9배였습니다.
  - Claude Opus 5.5($0.907)와 Opus 4.8($2.018)의 차이도 두 요인이 겹친 결과입니다. 하나는 단가 차이(입력·출력 $4.4/$22 대 $5.5/$27.5, 캐시 읽기 $0.22 대 $0.55)이고, 다른 하나는 사용량 차이(요청 35회 대 60회)입니다.
- **속도**: 가장 빠른 모델은 GPT-6 Sol(run 시간 3.1분)이고, 출력 토큰도 8,544개로 가장 적었습니다.

**5회 실행의 편차.** 12개 모델은 5회 비용의 최대값이 중앙값의 1.35배 이내였습니다. 예외는 다음과 같습니다.

- Claude Opus 5: 3회차가 LLM 요청 91회, 전체 토큰 3,851,983개, 반복 1회로 $3.726(중앙값의 약 1.9배)였습니다.
- GPT-6 Luna: 3회차가 LLM 요청 113회, 전체 토큰 1,979,669개, 반복 3회로 $0.066(중앙값의 약 2.5배)였습니다.

**멀티 에이전트 구성의 비용과 효과.**

- 검증자 비용 중앙값은 run 비용 중앙값의 약 4%(GLM 5.3)에서 25%(GPT-6 Luna)였습니다. [계산: 모델별 중앙값끼리 나눈 근사치]
- 랄프 반복이 대부분 1회로 끝나서, 빌더가 검증자의 REVIEW.md를 실제로 읽은 run은 반복이 2회 이상이었던 4개뿐입니다.
- 공식 채점을 통과한 반복 69개 중 62개에서 검증자도 PASS를 냈습니다.
  - 5개는 서버가 `PORT` 환경 변수 대신 8000번 포트에서 떠서 검증자가 실패로 본 경우입니다(Claude Sonnet 5.5 2, GPT-6 Luna 1, GPT-5.6 Sol 2).
  - 2개는 검증자 세션이 스스로 종료돼 판정이 없었습니다.
  - 반대로 검증자가 PASS를 냈는데 공식 채점이 13개 파일을 모두 통과하지 못한 반복은 없었습니다.
- 이번 실측에는 검증자 없는 비교군이 없습니다. 그래서 검증자가 완주율이나 비용에 미친 효과는 정량적으로 판단할 수 없습니다(확인 불가).

**같은 모델의 공개 run과의 비교.**

- 4개 모델(Claude Opus 5.5, Claude Sonnet 5.5, Claude Haiku 5.5, GPT-6 Sol)은 검증자 비용이 더해졌는데도 공개 run 환산값과 ±10% 안에서 같았습니다. 이번 빌더 비용만 따로 보면 공개 run의 0.86~0.95배였기 때문입니다.
- GPT-6.1 Sol: 출력 토큰이 20,621개로 공개 run(13,251개)보다 많아, 비용이 약 1.6배였습니다.
- Kimi K3: 출력 토큰이 39,505개로 공개 run(18,667개)보다 많아, 비용이 약 1.9배였습니다.
- 공개 run이 어떤 엔드포인트(Bedrock인지, 제공사 API인지)로 실행됐는지는 확인하지 않았습니다.
- GLM 5.3의 공개 기준값 $0.544는 glm-5.3-flash의 토큰을 빌려 쓴 [추정]입니다. 실측한 GLM 5.3은 출력 토큰이 59,582개로 그 약 2.6배, 비용은 $1.821로 약 3.3배였습니다.

**미완주와 이상 사례.**

- **미완주는 1개입니다.**
  - GLM 5.3 4회차: 첫 번째 반복에서 빌더가 테스트용 node 서버를 포그라운드로 띄운 채 멈췄고, 300초 멈춤 감지로 종료됐습니다. 두 번째 반복은 20분 상한에 걸려 `.ralph-done`을 만들기 전에 끝났습니다. 상한 직후 채점에서 저장소는 13개 파일을 모두 통과했지만, 완주 규칙(`.ralph-done` + 13개 파일 통과)에 따라 미완주로 집계했습니다.
- **멈춤 감지**: GPT-6 Luna 3회차. 첫 번째 반복에서 빌더가 `npm run dev`를 포그라운드로 실행해 세션이 멈췄고, 300초 멈춤 감지로 종료됐습니다. 두 번째 반복 뒤 채점은 13개 파일 중 5개만 통과했고, 세 번째 반복에서 완주했습니다.
- **자기 종료 세션이 3개 있었습니다.** 에이전트가 자기 프로세스까지 종료한 세션입니다(Claude Sonnet 5.5 빌더, Claude Opus 4.8 검증자, GLM 5.3 검증자). 이 중 Claude Sonnet 5.5 5회차만 반복이 1회 늘었습니다.
- **일시적인 Bedrock 스트림 오류**("Bedrock stream ended without a stop reason")가 있었습니다(Kimi K3 3회차 2번). pi가 자동으로 다시 요청해 완주에는 영향이 없었습니다.

## 적용 단가 [출처]

단가는 us-east-1 엔드포인트에서 미국 교차 리전 추론 프로필로 호출할 때의 값입니다. 단위는 USD/백만 토큰이고, 2026-10-12에 확인했습니다. Anthropic과 OpenAI 모델에서 이 단가는 글로벌 교차 리전 추론 단가보다 10% 높습니다.

- **Anthropic**: [Amazon Bedrock 요금 페이지](https://aws.amazon.com/bedrock/pricing/)의 "Geo and In-region Cross-region Inference" 표입니다. 값은 이 페이지가 쓰는 요금 데이터(2026-10-12T08:40:08Z 게시)에서 US East (N. Virginia) 기준으로 읽었습니다.
- **OpenAI**: Bedrock 모델 카드의 표준 단가(입력 272K 토큰 이하) 표에서 US 교차 리전 추론 행을 따랐습니다. 이번 실측에서 요청 하나의 컨텍스트(입력 + 캐시 읽기 + 캐시 쓰기)는 최대 94,172 토큰이었으므로, 272K 토큰을 넘을 때 적용되는 장문 단가는 해당하지 않습니다 [사실].
- **Kimi K3**: Bedrock 모델 카드의 요금 표입니다. 캐시 쓰기는 공개된 유일한 값인 30분 캐시 단가를 썼습니다.
- **GLM 5.3**: Bedrock 요금 페이지의 Z AI GLM 5.3 표입니다.
- 공개 AWS Price List API의 us-east-1 Bedrock 데이터(2026-10-10 게시본)에는 이 모델들의 항목이 없어, 요금 페이지와 모델 카드를 근거로 삼았습니다.

| 모델 | Bedrock 모델 ID | 입력 | 출력 | 캐시 읽기 | 캐시 쓰기 |
|---|---|---|---|---|---|
| Claude Opus 5.5 | `us.anthropic.claude-opus-5-5` | $4.4 | $22 | $0.22 | $5.5 |
| Claude Sonnet 5.5 | `us.anthropic.claude-sonnet-5-5` | $2.2 | $11 | $0.11 | $2.75 |
| Claude Haiku 5.5 | `us.anthropic.claude-haiku-5-5` | $0.11 | $0.55 | $0.011 | $0.1375 |
| Claude Fable 5.1 | `us.anthropic.claude-fable-5-1` | $11 | $55 | $0.275 | $13.75 |
| Claude Opus 5 | `us.anthropic.claude-opus-5` | $5.5 | $27.5 | $0.55 | $6.875 |
| Claude Sonnet 5 | `us.anthropic.claude-sonnet-5` | $2.2 | $11 | $0.22 | $2.75 |
| Claude Opus 4.8 | `us.anthropic.claude-opus-4-8` | $5.5 | $27.5 | $0.55 | $6.875 |
| GPT-6.1 Sol | `us.openai.gpt-6.1-sol` | $2.2 | $11 | $0.11 | $2.75 |
| GPT-6 Astra | `us.openai.gpt-6-astra` | $11 | $55 | $1.1 | $13.75 |
| GPT-6 Sol | `us.openai.gpt-6-sol` | $2.2 | $11 | $0.22 | $2.75 |
| GPT-6 Luna | `us.openai.gpt-6-luna` | $0.11 | $0.55 | $0.011 | $0.1375 |
| GPT-5.6 Sol | `us.openai.gpt-5.6-sol` | $4.4 | $22 | $0.44 | $5.5 |
| Kimi K3 | `us.moonshotai.kimi-k3` | $3.3 | $16.5 | $0.33 | $4.125 |
| GLM 5.3 | `us.zai.glm-5.3` | $1.848 | $5.808 | $0.3432 | $2.31 |

## 실행 비용 [계산]

| 구분 | 비용(보고 토큰 × 단가) | 설명 |
|---|---|---|
| 집계에 쓴 실행 | $88.42 | 격리 컨테이너에서 실행한 70개 run 전체(완주·미완주 포함). Claude Fable 5.1 5회 $12.87 포함 |
| 폐기한 1차 실행 | $17.60 | 에이전트를 호스트에서 직접 실행해 run 간 간섭 가능성이 있어 집계에서 뺀 실행 |
| 합계 | $106.02 | 모델별 사전 확인 호출(모델당 1~2회)은 소액이라 넣지 않았습니다 |

이 금액은 보고된 토큰 수에 단가를 곱한 계산값입니다. 실제 청구액은 AWS Cost Explorer에서 확인해야 하며, AWS Marketplace로 청구되는 모델은 청구서에 각 제공사 항목으로 표시됩니다.

## 한계와 해석 주의

1. **과제는 하나이고, 실행은 모델당 5번입니다.** 순위는 이 과제와 이 구성에서 관측한 결과입니다. 같은 모델에서도 가장 비싼 run이 가장 싼 run의 최대 약 2.7배(GPT-6 Luna)였습니다.
2. **원 리포트와 구성이 다릅니다.** 원 리포트는 모델마다 다른 하네스(Claude Code, Codex CLI, pi 등)로 에이전트 하나를 실행했습니다. 이번에는 모든 모델을 pi와 Bedrock Converse에서 빌더+검증자 2-에이전트로 실행했으므로, 검증자 몫만큼 토큰과 비용이 늘어납니다. 하네스 간 비교가 아니라 같은 하네스 안에서의 모델 비교입니다.
3. **1차 실행을 폐기했습니다.** 처음에는 에이전트를 컨테이너 없이 한 호스트에서 7개까지 동시에 실행했습니다. 세션 기록을 보니 에이전트들이 `pkill -f`, `fuser -k`처럼 호스트 전체를 대상으로 하는 명령을 실행해, 다른 run의 서버나 채점 서버를 멈출 수 있었습니다. 결과가 오염됐을 가능성을 배제할 수 없어 집계에서 빼고, 격리 컨테이너로 다시 실행했습니다. 원 리포트는 run을 하나씩 실행하므로 이 문제가 없습니다.
4. **검증자가 서버 포트를 원래 기준보다 엄격하게 봤습니다.** 검증자 프롬프트는 서버를 `PORT` 환경 변수의 포트로 띄우라고 요구하지만, 원래 완주 기준에는 이 요구가 없습니다. 공식 채점은 서버가 실제로 연 포트를 찾아 테스트하므로, 이 차이는 REVIEW.md의 내용만 바꾸고 완주 판정에는 영향을 주지 않습니다.
5. **에이전트가 자기 프로세스를 종료한 세션이 있습니다(exit 143).** pi는 프롬프트 전체를 명령줄 인자로 받습니다(원 리포트도 같습니다). 그래서 에이전트가 프롬프트 안의 문구로 `pkill -f`를 실행하거나 node 프로세스를 모두 종료하면 자기 자신도 종료됩니다. 검증자 쪽 노출은 이 보고서의 검증자 프롬프트에 `npm run dev` 같은 문구가 들어 있어 생겼습니다. 이미 끝난 run과 비교할 수 있도록 실행 도중에 프롬프트를 바꾸지 않았습니다.
6. **검증자의 효과는 판단할 수 없습니다.** 검증자 없는 비교군이 없고, 대부분 첫 반복에 완주해 빌더가 REVIEW.md를 실제로 읽은 run이 적습니다.
7. **그룹 2는 모델이 2개입니다.** GLM 5.3은 원 리포트에 없는 모델이라, 공개 기준값은 glm-5.3-flash의 토큰을 빌린 [추정]입니다.
8. **Kimi K3의 캐시 동작이 모델 카드 설명과 달랐습니다.** 모델 카드는 명시적 프롬프트 캐싱을 Converse가 아닌 API에서만 제공한다고 적고 있지만, Converse 호출에서도 Bedrock이 캐시 읽기·쓰기 토큰을 보고했습니다. 보고된 그대로 계산했고, 어떤 방식으로 캐시가 적용됐는지는 확인하지 못했습니다(확인 불가).
9. **실행 시점과 동시성이 다릅니다.** Claude Fable 5.1은 다른 13개 모델의 실행이 끝나고 약 4시간 18분 뒤에 단독으로 실행했습니다. Bedrock 쪽 부하와 호스트 동시 실행 수가 달랐을 수 있으며, 이것이 run 시간에 준 영향은 측정하지 않았습니다. 토큰과 비용은 실행 시점의 영향을 덜 받는다고 보지만 검증하지 않았습니다 [추정].
10. **비용은 계산값입니다.** 2026-10-12 단가 기준이며, 단가가 바뀌면 결과도 달라집니다.

## 재현 정보

- **도구 버전**: pi coding agent 0.87.1(Haiku 5.5용 수정 1곳), hurl 8.0.1, Node 22.23.3, Docker 이미지 기반 Amazon Linux 2023
- **설정값**: 사고 설정 medium, 영어 프롬프트, 반복 상한 30회, run 시간 상한 1,200초, 멈춤 감지 300초, 모델당 5회
- **프롬프트**: 빌더는 원 저장소의 `PROMPT-en.md`를 그대로 썼고, 검증자 프롬프트는 이 보고서에서 새로 썼습니다.
- **run별 수치**: 위 "모델별 결과" 차트에서 모델 행을 펼치면 5회 각각의 값이 나옵니다. 같은 값이 이 저장소의 `src/data/ralph-loop-bedrock.json`(`runs` 항목)에 있습니다.
- **하네스 스크립트와 원 데이터**(세션 기록, run별 지표 CSV, 집계 파일)는 이 저장소에 포함하지 않았습니다. 하네스의 기본 구조는 [원 저장소](https://github.com/roboco-io/coding-agent-benchmark)에 있습니다.

## 참고 자료

- 로보코(Roboco) 정도현, [랄프 루프 모델별 완주 비교](https://roboco.io/coding-agent-benchmark/) (원 리포트, 2026-10-12 15:40 UTC 확인)
- [roboco-io/coding-agent-benchmark](https://github.com/roboco-io/coding-agent-benchmark) (원 리포트의 하네스, 프롬프트, 채점용 Hurl 테스트)
- [Amazon Bedrock 요금](https://aws.amazon.com/bedrock/pricing/)
- [Amazon Bedrock 사용자 가이드: Data retention](https://docs.aws.amazon.com/bedrock/latest/userguide/data-retention.html)
- [RealWorld 백엔드 API 명세](https://realworld-docs.netlify.app/specifications/backend/endpoints/)
- [pi coding agent](https://www.npmjs.com/package/@earendil-works/pi-coding-agent)
