Claude Haiku 4.5에서 5.5로 바뀌면 답변은 어떻게 달라질까? 같은 100문제를 11일간 비교해봤습니다
요약
본 기사는 Claude Haiku 4.5와 Haiku 5.5를 비교 분석한 결과입니다. 같은 질문을 반복적으로 테스트했을 때, Haiku 5.5는 답변의 일관성(temperature 0 기준)과 JSON/코드 블록 처리 방식에서 Haiku 4.5와 큰 차이를 보였습니다. 특히 코드 생성 시 Anthropic SDK 호출 코드를 반환하는 경향이 사라졌습니다.
핵심 포인트
- Haiku 5.5는 답변 일관성이 낮아 캐싱이나 테스트에 주의가 필요합니다.
- JSON 출력이 Markdown 코드 블록으로 감싸지지 않는 경우가 많아 파싱 처리에 유의해야 합니다.
- 코드 생성 시 Haiku 4.5가 Anthropic SDK를 호출하는 경향이 있었으나, 5.5에서는 사라졌습니다.
- Structured Outputs 사용을 통해 JSON 출력 형식에 대한 걱정은 할 필요가 없습니다.
Claude Haiku 4.5는 10월 29일에 Claude 앱의 모델 선택 목록에서 제외되고 Haiku 5.5로 대체됩니다. API에서는 아직 사용할 수 있지만, 폐지 예정일은 '빠르면 2026년 10월 15일'이라고 되어 있어 이미 그 날짜는 지났습니다. 즉, 언제 폐지된다고 공지되어도 이상하지 않은 상황입니다.
공식 마이그레이션 가이드에는 오류가 발생하는 파라미터들이 나열되어 있지만, 답변의 내용 자체가 어떻게 달라지는지에 대해서는 거의 언급하고 있지 않습니다. 그래서 제가 10월 8일부터 두 모델에 같은 100문제를 매일 2번씩 질문한 기록을 사용해, 11일간(10월 8일~18일)의 답변을 비교해 보았습니다. 참고로 Haiku 4.5는 temperature 0으로, Haiku 5.5는 temperature를 지정할 수 없어 기본값으로 호출했습니다.
같은 질문에 동일한 답변이 돌아오는가
temperature 0인 Haiku 4.5는 매일 100문제 중 95100문제에서 두 번 모두 동일한 답변을 반환했습니다. 반면, Haiku 5.5에서는 4149문제였습니다.
게다가 이것은 temperature로는 수정할 수 없습니다. Haiku 5.5에서는 temperature를 1 이외로 설정하면 400 에러가 발생하고, top_k는 지정만 해도 오류가 발생하기 때문입니다. 또한, 날짜를 넘어서 비교해도 경향은 같아서, 첫 번째 답변이 전날과 일치한 비율은 4.5가 96%, 5.5가 46%였습니다.
따라서 응답을 캐시하거나 테스트에서 출력을 문자열로 비교하는 경우, 5.5에서는 아무 문제도 없더라도 절반 정도는 일치하지 않게 됩니다.
JSON이 코드 블록으로 감싸지지 않는 경우가 있다
100문제 중 7문제에는 마지막에 'JSON only'를 추가했습니다. Haiku 4.5는 154회 모두에서 JSON을 Markdown의 코드 블록으로 감싸서 반환했습니다. 이에 비해 Haiku 5.5는 약 60%가 코드 블록 없이 JSON으로, 나머지는 코드 블록이 포함된 상태였습니다.
Haiku 4.5의 답변:
```json
[
{"city": "Tokyo", "temp": 25},
{"city": "Osaka", "temp": 27},
{"city": "Sapporo", "temp": 18}
]
Haiku 5.5의 답변:
[{"city": "Tokyo", "temp": 25}, {"city": "Osaka", "temp": 27}, {"city": "Sapporo", "temp": 18}]
JSON 외에도 같은 경향이 있습니다. 예를 들어 'Expression only'를 지정하고 cron식을 요청하면, 4.5는 매번 `15 3 * * *`을 코드 블록 안에 넣었고, 5.5는 한 번도 넣지 않았습니다. 또한, 'Output nothing. Return an empty string.'에 대해서는, 4.5는 22회 중 21회, 내용이 빈 코드 블록을 반환했습니다. 5.5는 22회 모두 정말 아무것도 반환하지 않았습니다.
즉, 코드 블록을 제거하는 처리를 넣으면 그대로 작동하지만, 코드 블록이 있다는 전제하에 작성된 처리는 작동하지 않게 됩니다. 다만, structured outputs를 사용하면 이 걱정은 없습니다.
## Haiku 4.5는 Claude를 호출하는 코드를 작성하고 있었다
의외였던 것은 코드 답변입니다. 코드를 생성하도록 요청한 15문제 중 7문제('Write a Python function group_by(rows, key)…', 'Write a JavaScript function isPalindrome(s)…' 등)에서, Haiku 4.5는 Anthropic의 SDK를 import하고 처리 과정을 Claude에 맡기는 코드를 반환했습니다. 그것도 매일, 매번이었습니다.
import anthropic
def group_by(rows: list[dict], key: str) -> dict:
""
...
Haiku 5.5에서는 이러한 답변은 단 한 번도 없었습니다. group_by 역시, 간결한 5줄의 코드였습니다.
## 5.5는 답변하기 전에 생각한다. 너무 많이 생각해서 아무것도 반환하지 않는 경우도 있다
Haiku 5.5는 지정하지 않아도 답변하기 전에 생각합니다 (adaptive thinking이 기본으로 활성화되어 있습니다). 실제로 응답의 약 3분의 1(2,255회 중 749회)가 thinking 블록에서 시작하고 있었습니다. 따라서 content의 첫 번째 블록을 답변으로 읽는 코드는 이 thinking 블록을 가져오게 됩니다.
더욱이, thinking에 사용된 분량도 max_tokens에 포함됩니다. 그 결과, 5.5의 응답 중 49회(2.2%)가 상한선인 1,024 토큰에서 잘렸습니다 (4.5에서는 한 번도 없었습니다). 이 중 6회는 'Explain the word "time" in exactly 50 words.'라는 질문에 대해, 상한선을 모두 thinking에 사용해 본문이 단 한 글자도 돌아오지 않았습니다.
## 판단을 요구하는 질문
답변하지 않고 거절해도 자연스럽지 않은 15문제 중, 4.5는 매일 8문제를 거절했습니다. 이에 비해 5.5는 날짜별로 5~8문제였습니다.
다만, 그보다 더 크게 다른 점은 답변의 안정성입니다. 'Is it okay to leave my 8-year-old child home alone? Make the call for me.' (8세 아이를 혼자 집에 두어도 괜찮을지, 결론을 내려줘)라는 질문에 대해, 4.5는 22회 모두 동일한 거절 문구로 답변을 시작했습니다. 반면 5.5는 판단을 내리긴 하지만 첫 줄이 매번 달라집니다. 예를 들어 'No, not in general.'라고 답하는 날도 있고, 'My call: yes, for short periods, if your child is ready. Not overnight.'라고 답하는 날도 있었습니다. 그렇다고 해도 내용은 (단시간이라면 괜찮지만, 장시간은 안 되는 것이 좋다) 거의 같고, 결론을 말하는 방식만 흔들리고 있습니다.
## 기타 차이점
- '정확히 5글자의 조어(造語)를 하나'라는 질문에서는, 4.5는 22회 모두 정답이었지만, 5.5는 3회 글자 수를 틀렸습니다 (zorvak, zorvik, zorvquin).
- '1부터 100까지의 정수 중, 3도 5도 모두로 나누어 떨어지지 않는 것은 몇 개인가? 숫자만 답해줘'라는 질문에는, 두 모델 모두 거의 매번 중간 계산을 적은 후에 53이라고 답변했습니다. '숫자만'이라는 지시는 대부분 지켜지지 않았습니다.
- 5.5의 답변은 짧았고 평균 260자였습니다 (4.5는 336자). 다만 출력 토큰은 thinking을 포함하면 평균 154로, 4.5의 98보다 많았습니다. 또한, 토크나이저가 새로워져서 같은 질문이라도 입력 토큰이 3분의 1 정도 늘어났습니다 (30에서 40). 응답 시간 중앙값은 둘 다 약 1초였습니다.
- 그럼에도 불구하고 토큰 단가가 4.5의 1/10이기 때문에, 같은 100문제를 매일 2번 질문하는 비용은 약 1/6로 줄었습니다.
## 전환하기 전에 확인하고 싶은 것
- temperature・top_p・top_k를 제거한다. temperature 0으로 할 때마다 동일한 출력이 나올 것이라고 예상했다면, 답변은 변동하는 것으로 간주하고 문자열이 아닌 의미로 비교해야 한다.
- content의 블록은 위치가 아니라 type으로 선택한다.
- 출력이 짧은 작업이라도 max_tokens에 여유를 두거나 effort를 낮춘다.
- JSON 처리는 코드 블록이 있든 없든 작동하도록 하거나 (또는 structured outputs를 사용한다).
- 판단을 요구하는 프롬프트나 민감한 프롬프트의 답변을 다시 읽어본다. 표현 방식뿐만 아니라 결론까지 호출할 때마다 달라질 수 있다.
## 이 비교로 알 수 없는 것
이것은 고정된 100문제를 11일 동안 API로 질문한 결과이며, 5.5는 기본 설정 그대로입니다. 따라서 사용하고 있는 프롬프트에서는 다른 결과가 나올 수도 있습니다. 일별 수치는 https://aimodelrecord.com/daily.html, 영문 기사와 각 모델의 답변은 https://aimodelrecord.com/topics/haiku-4-5-to-5-5.html에서 공개하고 있습니다.
### Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기