Claude Fable 5 vs GPT-5.5: max_tokens 오판이 모델 비교 결론을 바꾼 사례
Crazyrouter OpenAI-compatible API로 claude-fable-5와 gpt-5.5를 수학 추론, 물리 추론, Canvas 애니메이션 장문 코드 과제로 비교했다. 핵심은 max_tokens, finish_reason=length, completion_tokens, 브라우저 검증이 모델 평가 결론을 어떻게 바꾸는지다.

Claude Fable 5 vs GPT-5.5: max_tokens 오판이 모델 비교 결론을 바꾼 사례#
먼저 결론부터 말하면, 이번 테스트는 “Claude Fable 5가 애니메이션을 못 만든다”는 사례가 아니었다. 원인은 원래 테스트에서 설정한 max_tokens가 너무 낮았기 때문에 생긴 오판이었다.
첫 번째 동일 조건 테스트에서 gpt-5.5는 완전한 HTML을 한 번에 출력했고 브라우저 실행 검증도 통과했다. 반면 claude-fable-5의 애니메이션 코드는 중간에서 잘렸고, 처음에는 장문 코드 생성 능력이 부족한 것처럼 보였다. 하지만 응답 메타데이터는 원인을 분명히 보여줬다.
finish_reason = length
completion_tokens = 3200
max_tokens = 3200
이는 출력 예산을 모두 사용했기 때문에 서버가 길이 제한으로 응답을 종료했다는 뜻이다. 이후 claude-fable-5의 max_tokens를 3200에서 8000으로 올려 재테스트하자, 완전한 HTML을 출력했고 finish_reason=stop으로 자연 종료되었으며 브라우저 검증도 통과했다.
이 글은 테스트 설계, 세 가지 문제, 첫 번째 오판, Claude Fable 5 재테스트 결과, 그리고 앞으로 장문 코드 모델 비교에서 반드시 기록해야 할 항목을 정리한다.

Last updated: 2026-07-06.
빠른 결론#
이번 결과는 단순한 승패표로 정리하기 어렵다.
| 영역 | 결론 |
|---|---|
| 수학 추론 | claude-fable-5와 gpt-5.5 모두 정답 |
| 물리 종합 문제 | 둘 다 정답, Claude는 에너지 손실 설명이 더 강했다 |
장문 애니메이션 코드, max_tokens=3200 | gpt-5.5는 완성, Claude는 잘림 |
Claude 재테스트, max_tokens=8000 | Claude도 완성했고 브라우저 검증 통과 |
정확한 결론은 다음과 같다.
낮은 출력 예산에서는 GPT-5.5가 더 안정적이었다.
Claude Fable 5는 능력 실패가 아니라 장문 코드 과제에 더 큰 출력 예산이 필요했다.
짧은 추론, 수학 풀이, 물리 설명에서는 이번 테스트만으로 두 모델의 정확성 차이를 크게 보기 어렵다. 그러나 완전한 페이지, 애니메이션, 도구, 긴 코드 파일을 한 번에 생성해야 한다면 max_tokens, completion_tokens, finish_reason, 실제 실행 검증을 함께 봐야 한다.
Crazyrouter에서 같은 방식의 OpenAI-compatible 요청을 재현할 수 있다.
https://crazyrouter.com/register?utm_source=crazyrouter_blog&utm_medium=article&utm_campaign=model_compare_series_20260706&utm_content=claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026-ko__quick_answer
테스트 환경#
이번 테스트는 Crazyrouter의 OpenAI-compatible API로 진행했다.
Base URL: https://cn.crazyrouter.com/v1
Endpoint: POST /v1/chat/completions
Test date: 2026-07-06
Models:
- claude-fable-5
- gpt-5.5
temperature: 0.2
위 API endpoint에는 UTM 파라미터를 붙이면 안 된다. UTM은 회원가입 링크 같은 사람이 클릭하는 링크에만 사용한다.
최소 요청 예시는 다음과 같다.
curl https://cn.crazyrouter.com/v1/chat/completions \
-H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-fable-5",
"messages": [
{
"role": "user",
"content": "Toss a fair coin until HH appears for the first time. Compute the expected number of tosses and show the derivation."
}
],
"temperature": 0.2,
"max_tokens": 3200
}'
model만 gpt-5.5로 바꾸면 같은 조건으로 비교할 수 있다.
왜 객관식만 묻지 않았나#
모델 비교를 객관식이나 짧은 문답으로만 하면 “둘 다 맞음”이라는 결과가 쉽게 나온다. API가 동작하는지 확인하는 데는 좋지만, 실제 업무에서 생기는 문제를 드러내기에는 약하다.
이번에는 세 가지 유형의 문제를 사용했다.
| 문제 ID | 유형 | 검증 대상 |
|---|---|---|
| MATH-003 | 기대값 문제 | 잘못된 확률 직관 대신 상태 방정식을 세우는지 |
| PHYS-003 | 물리 추론 | 충돌 순간의 운동량 보존과 충돌 후 에너지 관계를 구분하는지 |
| CODE-003-ANIM | 프론트엔드 애니메이션 | 완전하고 실행 가능한 인터랙티브 장문 코드 산출물을 만들 수 있는지 |
앞의 두 문제는 추론 정확성을 본다. 세 번째 문제는 출력 길이, 구조 유지, 코드 완성도, 실제 실행 여부를 본다.
실제 운영에서 흔한 문제는 모델이 완전히 모른다는 것이 아니다. 더 자주 보이는 문제는 다음과 같다.
출력이 중간에서 잘림
이벤트 바인딩이 빠짐
closing tag가 빠짐
코드는 그럴듯하지만 브라우저에서 오류 발생
정적 검사는 통과하지만 Canvas가 움직이지 않음
문제 1: HH가 처음 나올 때까지 동전 던지기#
문제:
공정한 동전을 계속 던져 처음으로 연속 두 번 앞면 HH가 나올 때까지 기다린다.
1. 멈출 때까지 필요한 던지기 횟수의 기대값을 구하라.
2. 상태 방정식 또는 재귀식으로 유도하라.
3. 왜 답이 4가 아닌지 한 문장으로 설명하라.
표준 풀이는 두 상태를 정의한다.
E0: 현재 H 접두사가 없는 상태
E1: 직전 결과가 H이고 다음 H를 기다리는 상태
E0 = 1 + 1/2 E1 + 1/2 E0
E1 = 1 + 1/2 * 0 + 1/2 E0
풀면 E0 = 6
결과:
| 모델 | 결과 | 관찰 |
|---|---|---|
claude-fable-5 | 정답 | 상태 정의가 명확했고 실패 시 진행 상태가 초기화된다는 점을 잘 설명 |
gpt-5.5 | 정답 | 유도 과정이 더 자세했고 왜 4가 아닌지 설명이 더 완전 |
이 문제에서는 차이가 거의 없었다. 두 모델 모두 1 / (1/4) = 4라는 직관적 오류를 피했다.
문제 2: 총알, 나무토막, 용수철, 마찰#
문제 요약:
질량 m = 0.02 kg인 총알이 v = 300 m/s로 정지한 나무토막에 박힌다.
나무토막 질량 M = 1.98 kg, 용수철 상수 k = 800 N/m.
탁자의 운동 마찰 계수 μ = 0.10, g = 9.8 m/s^2.
구할 것:
1. 충돌 직후 공동 속도.
2. 용수철의 최대 압축량.
3. 어디서 운동량 보존을 쓰고, 어디서 에너지 관계를 쓰는지, 왜 전체 과정에 기계적 에너지 보존을 적용할 수 없는지 설명.
표준 계산:
충돌 순간:
mv = (M + m)V
V = 0.02 * 300 / 2.00 = 3.0 m/s
충돌 후 압축 단계:
1/2(M + m)V^2 = 1/2kx^2 + μ(M + m)gx
9 = 400x^2 + 1.96x
x ≈ 0.148 m
결과:
| 모델 | 결과 | 관찰 |
|---|---|---|
claude-fable-5 | 정답 | 충돌 전 운동에너지 900J, 충돌 후 9J라는 비교를 추가해 에너지 손실을 직관적으로 설명 |
gpt-5.5 | 정답 | 단계가 깔끔하고 운동량/에너지 사용 구간을 안정적으로 분리 |
이 문제도 두 모델 모두 정답이었다. 충돌 순간에는 운동량 보존을, 충돌 후 용수철 압축 구간에는 마찰 일을 포함한 에너지 관계를 사용했다.
문제 3: Canvas 애니메이션 생성#
이번 라운드에서 가장 중요한 정보는 세 번째 문제에서 나왔다.
요구사항은 단순한 JavaScript 조각이 아니라 완전한 단일 HTML 파일이었다.
800x500 canvas
중앙 별
최소 5개의 궤도 입자
requestAnimationFrame
반투명 궤적
일시정지/재개 버튼
리셋 버튼
속도 슬라이더
FPS와 속도 HUD
init / update / draw / animate 함수 포함
외부 라이브러리, 이미지, 네트워크 리소스 사용 금지
이 과제는 네 가지를 동시에 확인한다.
| 능력 | 확인 내용 |
|---|---|
| 장문 출력 완성도 | HTML, CSS, JS가 완전히 닫혔는지 |
| 제약 준수 | 컨트롤, 함수명, Canvas 크기가 있는지 |
| 실행 가능성 | 브라우저 콘솔 오류가 없는지 |
| 실제 애니메이션 | 시간이 지난 뒤 Canvas 픽셀이 변하는지 |
첫 번째 결과: GPT-5.5는 완성, Claude는 잘림#
원래 동일 조건 테스트에서 두 모델 모두 max_tokens=3200을 사용했다.
gpt-5.5는 완전한 HTML을 출력했다.
finish_reason = stop
<!DOCTYPE html> 포함
</html> 포함
requestAnimationFrame 포함
init / update / draw / animate 포함
일시정지, 리셋, 속도 슬라이더 포함
canvas = 800x500
브라우저 검증:
콘솔 오류: 없음
canvas 크기: 800x500
컨트롤: 존재
700ms 후 changedPixels = 37512
hasAnimation = true
즉 정적인 그림이 아니라 실제로 움직이는 애니메이션이었다.
claude-fable-5도 방향은 맞았다. 800x500 canvas, 입자 설정, 궤도, 중앙 별, HUD, 컨트롤 스타일, init, update, draw 일부를 작성했다. 그러나 파일이 중간에서 멈췄다.
핵심 메타데이터:
max_tokens = 3200
finish_reason = length
completion_tokens = 3200
HTML was truncated
완전한 </script> 없음
</body> 없음
</html> 없음
“실행 가능한 HTML 애니메이션”을 요구한 과제에서는 이 결과를 완료로 볼 수 없다.
왜 첫 해석이 틀렸나#
출력 파일만 보면 다음과 같은 잘못된 결론을 내리기 쉽다.
GPT-5.5는 애니메이션을 만들 수 있고 Claude Fable 5는 만들 수 없다.
하지만 finish_reason=length가 해석을 바꾼다.
Chat Completions에서 finish_reason=length는 보통 설정된 길이 제한에 도달했다는 뜻이다. 여기에 다음 값이 함께 있었다.
completion_tokens = 3200
max_tokens = 3200
이 경우 응답이 자연스럽게 끝난 것이 아니라 출력 예산을 모두 사용한 것으로 보는 것이 합리적이다.
따라서 첫 실패 결과를 곧바로 “모델 능력 부족”으로 해석하면 안 된다. 더 적절한 가설은 해당 HTML이 3200 output tokens보다 길었다는 것이다.
Claude Fable 5 재테스트: max_tokens를 8000으로 상향#
이를 확인하기 위해 같은 애니메이션 과제로 claude-fable-5를 재테스트했다.
| 테스트 | max_tokens | finish_reason | completion_tokens | HTML 닫힘 |
|---|---|---|---|---|
| 동일 예산 재테스트 | 3200 | length | 3200 | 아니오 |
| 출력 예산 상향 | 8000 | stop | 3975 | 예 |
핵심은 다음과 같다.
max_tokens=3200에서는 Claude가 다시 출력 예산을 모두 사용하고 잘렸다.
max_tokens=8000에서는 3975 completion tokens에서 자연 종료했다.
즉 이 애니메이션 과제는 3200 output tokens보다 조금 더 필요했지만, 8000에 가까운 수준은 아니었다. 원래 설정이 너무 빡빡했다.
Claude Fable 5의 8000 버전도 브라우저 검증을 통과했다.
콘솔 오류: 없음
canvas 크기: 800x500
일시정지 버튼: 존재
리셋 버튼: 존재
속도 슬라이더: 존재
700ms 후 changedPixels = 15795
hasAnimation = true
수정된 결론은 다음과 같다.
Claude Fable 5가 애니메이션 과제를 능력적으로 실패한 것이 아니다.
max_tokens=3200 안에 전체 답변을 담지 못했으며, max_tokens=8000에서는 완성하고 실행됐다.

전체 결과표#
| 지표 | 결과 |
|---|---|
| 테스트 모델 | claude-fable-5, gpt-5.5 |
| Endpoint | POST /v1/chat/completions |
| 원래 테스트 요청 수 | 6 |
| HTTP 200 | 6/6 |
returned_model과 requested_model 일치 | 6/6 |
원래 테스트에서 finish_reason=stop | 5/6 |
| 원래 테스트의 잘림 | claude-fable-5 애니메이션 과제 |
| Claude 재테스트 | max_tokens=8000에서 완성 |
응답 시간:
| 과제 | claude-fable-5 | gpt-5.5 |
|---|---|---|
| MATH-003 | 17.87s | 28.18s |
| PHYS-003 | 23.21s | 43.05s |
| CODE-003-ANIM | 40.84s | 79.22s |
이번 실행에서는 Claude가 더 빨랐다. 하지만 장문 코드 과제에서는 속도만 보면 안 된다. 빠르게 잘린 응답은 완성된 산출물이 아니다.
수동 점수#
| 과제 | claude-fable-5 | gpt-5.5 | 설명 |
|---|---|---|---|
| MATH-003 | 5/5 | 5/5 | 둘 다 기대값 6을 정확히 도출 |
| PHYS-003 | 5/5 | 5/5 | 둘 다 운동량과 에너지 관계를 올바르게 사용 |
CODE-003-ANIM, 원래 max_tokens=3200 | 2/5 | 5/5 | Claude는 잘림, GPT는 완성 및 브라우저 검증 통과 |
CODE-003-ANIM, Claude max_tokens=8000 재테스트 | 5/5 | - | Claude도 완성 및 브라우저 검증 통과 |
이 점수표는 두 질문을 분리한다.
같은 호출 제약에서 모델은 어떻게 동작했는가?
충분한 출력 예산을 주면 모델은 무엇을 할 수 있는가?
첫 번째 질문에서는 max_tokens=3200 조건에서 GPT-5.5가 더 안정적이었다. 두 번째 질문에서는 Claude Fable 5가 애니메이션 능력에서 실패한 것이 아니었다.
실제 모델 선택에 주는 시사점#
다음과 같은 작업에서는 이번 테스트만으로 큰 정확성 차이를 보기 어렵다.
수학 유도
물리 설명
짧은 코드
구조화된 설명
짧은 JSON
반면 다음 작업에서는 눈에 보이는 답변만 비교하면 안 된다.
완전한 HTML 생성
긴 JavaScript 파일
인터랙티브 프론트엔드 데모
도구 페이지 전체 생성
긴 설정 파일 또는 테스트 코드
다음 항목을 함께 기록해야 한다.
| 필드 | 중요한 이유 |
|---|---|
max_tokens | 이번 요청에서 허용한 최대 출력량 |
completion_tokens | 출력이 제한에 가까웠는지 확인 |
finish_reason | 자연 종료인지 잘림인지 판단 |
content_chars | 출력 분량을 대략적으로 파악 |
| 정적 검사 | 함수, 컨트롤, 태그, 필수 필드 존재 여부 |
| 실행 검증 | 브라우저, 콘솔, 픽셀 변화 등 실제 실행 여부 |
이 필드가 없으면 장문 코드 비교는 쉽게 왜곡된다.
권장 기록 형식#
장문 코드 모델 비교에서는 다음과 같은 메타데이터를 저장하는 것이 좋다.
{
"task_id": "CODE-003-ANIM",
"model": "claude-fable-5",
"endpoint": "/v1/chat/completions",
"max_tokens": 8000,
"temperature": 0.2,
"http_status": 200,
"requested_model": "claude-fable-5",
"returned_model": "claude-fable-5",
"finish_reason": "stop",
"completion_tokens": 3975,
"validation": {
"console_errors": 0,
"canvas": "800x500",
"changed_pixels_after_700ms": 15795,
"has_animation": true
}
}
결론은 모델 출력 텍스트만이 아니라 이러한 메타데이터와 실행 증거를 함께 봐야 한다.
Crazyrouter OpenAI-compatible API로 유사한 테스트를 실행할 수 있다.
https://crazyrouter.com/register?utm_source=crazyrouter_blog&utm_medium=article&utm_campaign=model_compare_series_20260706&utm_content=claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026-ko__api_example
관련 비교 글#
이 글은 모델 비교 시리즈의 방법론 보정에 가깝다.
관련 Crazyrouter 글:
- Claude Fable 5 vs Claude Sonnet 5 API behavior test
- Claude Sonnet 5 vs GPT-5.4 API comparison
- DeepSeek V4 Pro compatibility with Codex and Claude Code
- Common gpt-image-2 ecommerce failure reasons
- OpenRouter alternatives for production teams
공통 원칙은 단순하다. 모델 비교는 홍보 문구나 HTTP 200만 보고 판단하면 안 된다. 실제 payload, 실제 응답, 실패 메타데이터, 실행 검증을 함께 봐야 한다.
FAQ#
이번 결과가 GPT-5.5가 항상 Claude Fable 5보다 강하다는 뜻인가?#
아니다. 이번 결과는 원래 애니메이션 과제의 max_tokens=3200 조건에서 GPT-5.5가 더 안정적이었다는 뜻이다. Claude Fable 5는 출력 예산을 늘리자 같은 과제를 완성했다.
finish_reason=length가 왜 중요한가?#
응답이 자연 종료된 것이 아니라 길이 제한에 걸렸다는 신호이기 때문이다. 장문 코드에서는 closing tag, 이벤트 바인딩, 함수 끝부분이 빠질 수 있다.
completion_tokens만 보면 안 되는 이유는?#
completion_tokens=3200만으로는 부족하다. max_tokens=3200과 같을 때 출력 예산을 모두 사용했다는 의미가 된다.
왜 브라우저 검증이 필요한가?#
코드 생성 과제는 텍스트 검사만으로 부족하다. 브라우저 검증은 콘솔 오류, Canvas 크기, 컨트롤 존재 여부, 실제 픽셀 변화까지 확인한다.
장문 코드에서 max_tokens는 얼마나 커야 하나?#
고정 답은 없다. 다만 HTML, CSS, JavaScript를 모두 포함한 페이지는 너무 낮은 출력 예산을 쓰면 위험하다. finish_reason=length가 보이면 먼저 예산을 올려 재테스트해야 한다.
이 테스트로 production routing을 결정할 수 있나?#
참고는 가능하지만 단독 기준으로는 부족하다. 비용, 지연 시간, 컨텍스트 길이, 구조화 출력 안정성, 실패율, 재시도 전략, 업무 유형을 함께 봐야 한다.
최종 결론#
이번 비교의 핵심은 한 모델이 영구적으로 다른 모델을 이겼다는 것이 아니다. 핵심은 첫 결론이 너무 빠른 판단이었다는 점이다.
원래 테스트:
GPT-5.5: max_tokens=3200, 완전한 HTML, 브라우저 검증 통과.
Claude Fable 5: max_tokens=3200, finish_reason=length, completion_tokens=3200, 출력 잘림.
재테스트:
Claude Fable 5: max_tokens=8000, finish_reason=stop, completion_tokens=3975, 완전한 HTML, 브라우저 검증 통과.
최종 결론:
낮은 출력 예산에서는 GPT-5.5가 더 안정적이었다.
충분한 출력 예산에서는 Claude Fable 5도 애니메이션 과제를 완성할 수 있었다.
장문 코드 모델 비교에는 max_tokens, completion_tokens, finish_reason, 실행 검증이 반드시 필요하다.
앞으로 모델 비교에서는 이 네 가지 항목을 필수 증거로 기록해야 한다. 그렇지 않으면 출력 예산 문제를 모델 능력 문제로 잘못 기록할 수 있다.





