Claude Haiku 5.5 출시: 온도(temperature), Prefill, Thinking Blocks 없이 Haiku 4.5 분류기
요약
Anthropic이 Claude Haiku 5.5를 출시하며 기존 모델 대비 여러 가지 중요한 변경 사항을 적용했습니다. 특히 분류기 사용 시 temperature, top_p 등의 샘플링 매개변수 설정 방식에 하드 에러가 발생합니다. 또한 Thinking 블록의 작동 방식과 토크나이저 변화 등 개발자가 반드시 숙지해야 할 내용들이 포함되어 있습니다.
핵심 포인트
- temperature와 top_p를 함께 전송하는 것이 실패하며, 결정론적 레이블을 위해 temperature=0 설정은 오류입니다.
- 어시스턴트 prefill 기능 사용이 거부되므로 구조화된 출력이나 도구(tool) 사용이 권장됩니다.
- Thinking 블록의 작동 방식과 토큰 계산에 변화가 생겼으므로, 응답 처리 로직을 업데이트해야 합니다.
컴파일 및 소규모 오프라인 스모크 테스트 완료
주요 출처 (Anthropic, 2026-10-07): Claude Haiku 5.5 소개 (Anthropic); Claude Platform 문서 Claude Haiku 5.5의 새로운 기능, 마이그레이션 가이드, 그리고 Claude Haiku 5.5 프롬프팅
보조 출처: Aamna Najmi, Dani Mitchell, Alfredo Castillo, and Sofian Hamiti가 작성한 AWS Machine Learning Blog의 AWS에서 Claude Haiku 5.5 소개 (2026-10-07)
가격, 벤치마크 주장 및
분류기에게 실제로 바뀐 점
Anthropic의 마이그레이션 가이드에는 여러 가지 변경 사항(breaking changes)이 나열되어 있습니다. 이 중 세 가지는 일반적인 분류기에 직접 영향을 미치고, 나머지 세 가지는 오류 없이 동작을 변화시킵니다.
하드 에러 (문서에 따르면 HTTP 400):
- 샘플링 매개변수(Sampling parameters).
temperature는 생략하거나 정확히1이어야 합니다.top_p는 생략하거나 정확히0.99여야 하며 (1도 실패함),top_k는 어떤 값으로 보내든 거부됩니다. 또한,temperature와top_p를 함께 전송하는 것도 실패합니다. '결정론적 레이블을 위해 temperature를 0으로 설정한다'는 습관적인 방식은 이제 오류가 됩니다. - 어시스턴트 프리필(Assistant prefill). 모델이 계속 진행할 수 있도록 마지막 어시스턴트 턴(turn)을 요청하는 것이 거부됩니다. 문서에서는 분류를 위해 구조화된 출력(structured outputs)이나 열거형 필드(enum field)가 있는 도구(tool) 사용을 권장합니다.
- 수동 사고 예산(Manual thinking budgets).
thinking: {"type": "enabled", "budget_tokens": N}구문이 사라졌습니다. 대신{"type": "adaptive"}를 사용하고output_config.effort로 제어해야 합니다.
사일런트 변경 사항 (Silent changes):
- 기본적으로 Thinking이 활성화됨. 따라서 요청하지 않았더라도 응답이
thinking블록으로 시작할 수 있습니다. 기본적으로 이 블록은 빈thinking필드와 오직signature만 가지고 도착합니다.content[0].text를 읽는 코드는 아무것도 얻지 못하게 됩니다. - Thinking 토큰이
max_tokens에 포함됨.max_tokens=20으로 요청하더라도, Thinking 블록 이후 그리고 텍스트가 나오기 전에stop_reason: "max_tokens"로 중단될 수 있습니다. - 토크나이저(tokenizer)가 변경됨. Anthropic에 따르면 같은 텍스트라도 Haiku 4.5에서보다 약 30% 더 많은 토큰을 차지합니다. 따라서 토큰 기반 예산, 자르기 제한(truncation limits), 비용 대시보드 등이 모두 변동됩니다.
또한 새로운 실패 경로가 생겼습니다: Haiku 5.5는 안전 분류기(safety classifiers)를 실행하며 이로 인해 stop_reason: "refusal"과 함께 stop_details.category를 반환할 수 있습니다. 문서에 따르면 재시도하는 경우 보통 다시 거부됩니다. 만약 Haiku 4.5에서 Priority Tier를 사용했다면, 가이드에서는 Priority Tier가 5.5에서는 지원되지 않는다고 언급합니다.
스모크 테스트: API 키 없이 확인할 수 있는 것들
SDK 확인. 저는 Linux 환경(Python 3.13)에 새로운 virtualenv를 만들고 pip install anthropic을 실행했으며, 오늘 anthropic 1.12.1 버전으로 해결되었습니다. client.messages.create를 검사해 보니 thinking, output_config, tool_choice 매개변수는 보였지만, temperature, top_p, 또는 top_k 매개변수는 전혀 없었습니다. 여기에 temperature=0을 호출하자 다음과 같은 오류가 발생했습니다:
TypeError: Messages.create() got an unexpected keyword argument 'temperature'
이것은 네트워크 호출 전에 클라이언트 측에서 발생하는 문제입니다. 따라서 서비스가 어떤 SDK 버전에 고정되어 있느냐에 따라, 동일한 레거시 코드가 호출 시 Python TypeError로 실패하거나, Anthropic 문서에 따르면 서버 측 400 오류로 실패합니다. 둘 다
응답 리더(Response reader). 마침내 문서에서 설명하는 방식대로 네 가지 모의 응답을 직접 만들었습니다: 사고 과정 후 텍스트(thinking-then-text), 강제 도구 호출(forced tool call), 사고 과정 후 max_tokens, 그리고 거절(refusal)입니다. 이들은 SDK 자체의 Message pydantic 타입을 기준으로 검증되었습니다. 타입 인지 리더는 네 가지 경우를 모두 처리했습니다:
def read_answer(resp):
if resp["stop_reason"] == "refusal":
return {"status": "refused", "category": (resp.get("stop_details") or {}).get("category")}
...
Haiku 4.5 시대에는 content[0].text가 세 가지 모의 응답에서는 None을 반환했고, 거절 모의 응답(빈 content 리스트를 준 경우)에서는 IndexError를 발생시켰습니다. 이것들은 모델 출력이 아니라 모의 응답입니다. 이들은 Haiku 5.5가 실제로 각 형태를 얼마나 자주 생성하는지보다는, 문서화된 구조에 따라 파싱 코드가 어떻게 작동하는지를 보여줍니다.
비용 계산(On the cost math)
가격 책정은 매력적이지만, Haiku 4.5의 수치를 재사용하기보다 새로운 토큰 수를 사용하여 다시 계산해야 합니다. Anthropic의 목록 가격과 약 30% 추정치를 사용한 예시로 보면: 4.5에서 400 입력 토큰으로 측정된 프롬프트는 5.5에서는 대략 520토큰이 됩니다. 이러한 요청 백만 건당, 입력 비용은 약 $400에서 약 $52로 줄어듭니다. 여전히 큰 폭의 절감이지만, 토큰당 가격 하락폭이 암시하는 것보다는 적습니다. 노력(effort)도 중요합니다. Anthropic의 프롬프팅 가이드에 따르면 low에서 medium으로 이동하면 긴 에이전트 프롬프트에서의 조기 종료가 대략 절반으로 줄어들고, 시도당 출력 토큰은 두 배 이상 증가한다고 합니다. Medium은 API의 기본값이므로, 노력 설정을 절대 하지 않는 고용량 분류기는 생각할 필요가 없을 수도 있는 비용을 지불하게 됩니다.
실제 프롬프트 샘플에 대해 model="claude-haiku-5-5"로 count_tokens를 실행하여 콘텐츠의 30% 수치만 신뢰하지 마십시오.
적합한 사용처와 다른 고려 사항(Where it fits, and where something else might)
Anthropic과 AWS 모두 Haiku 5.5를 Opus나 Sonnet 아래에서 라우팅(routing), 분류(classification), 추출(extraction), 요약(summaries), 서브 에이전트(subagents)에 사용되는 빠른 레이어(fast layer)로 제시합니다. Anthropic은 복잡한 에이전트 코딩에는 여전히 Sonnet과 Opus가 더 나은 선택이라고 말합니다. 순수한 유한 선택 결정(pure bounded-choice decisions)의 경우, OpenAI가 하루 전에 gpt-6-luna에서 타입화된 술어(typed predicates), 선택지(choices), 점수(scores)를 반환하는 Decisions API를 퍼블릭 베타로 출시했다는 것을 아는 것이 좋습니다. 저는 둘 다 테스트하지 않았습니다. 만약 귀하의 워크로드가 'N개의 레이블 중 하나 선택하기'라면, 전념하기 전에 자체 라벨링된 세트로 두 모델을 모두 평가해 보세요.
마이그레이션 체크리스트
- 모델 ID를 변경합니다 (
claude-haiku-5-5; Bedrock에서는anthropic.claude-haiku-5-5또는 지역 추론 프로필 사용). temperature,top_p,top_k를 삭제하고, 고정된 SDK가 여전히 이를 허용하는지 확인합니다.- 프리필(prefills)을 열거형 도구(enum tool)나 구조화된 출력(structured outputs)으로 대체합니다.
budget_tokens를 적응형 사고(adaptive thinking)와 명시적인effort로 대체합니다. 분류기(classifier)는low에서 시작합니다.- 작은
max_tokens값을 높이거나, 사고 블록(thinking block)이 없도록 도구 호출을 강제합니다. - 콘텐츠 블록은 위치가 아닌
type별로 읽습니다. - `stop_reason:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기