Claude Mythos 5와 Claude Fable 5로 마이그레이션
Claude Mythos 5와 Claude Fable 5로 마이그레이션 (Migrating to Claude Mythos 5 and Claude Fable 5)
Claude Mythos Preview, Claude Opus 5, 또는 Claude Opus 4.8에서 Claude Mythos 5와 Claude Fable 5로 옮길 때 필요한 모델 ID, API 변경, 마이그레이션 체크리스트를 정리한 가이드예요. 두 모델은 까다로운 추론과 장기 에이전트 작업을 위해 설계됐죠.
출처: 문서
본문
/claude-api migrate this project to claude-fable-5
이 스킬이 코드베이스 전체에 걸쳐 모델 ID 교체와, 필요에 따라 대상 모델에 맞는 파괴적 파라미터 변경, 프리필 교체, effort 보정을 적용한 뒤, 수동으로 확인할 항목 체크리스트를 만들어 줘요. 파일을 편집하기 전에 마이그레이션 범위(전체 작업 디렉터리, 하위 디렉터리, 특정 파일 목록)를 확인해 달라고 물어보죠. Amazon Bedrock과 Claude Platform on AWS 클라이언트도 감지해서 해당 플랫폼의 모델 ID 형식과 기능 변경을 맞춰 조정해 줘요.
Claude Fable 5는 까다로운 추론과 장기 에이전트 작업을 위해 만들어졌어요. Claude Fable 5.1이 여기에 기반을 두죠. Claude Fable 5는 Claude API, Amazon Bedrock, Claude Platform on AWS, Google Cloud, Microsoft Foundry에서 제공돼요. Claude Mythos 5는 같은 성능을 공유하지만 Project Glasswing의 승인된 고객에게만 제공되죠.
claude-fable-5와 claude-mythos-5가 공유하는 기본 설정:
- 생각(Thinking): 적응형 생각은 항상 켜져 있어요. 모델이 각 요청에서 언제, 얼마나 생각할지 정하며,
thinking설정이 필요 없어요.thinking: {type: "disabled"}와 수동 확장 생각(thinking: {type: "enabled", budget_tokens: N})은 모두 400 오류를 반환해요. - 프리필(Prefill): 어시스턴트 메시지를 프리필하면 400 오류가 나요. 대신 시스템 프롬프트 지침을 쓰세요.
- 컨텍스트 윈도우와 출력: 기본 1M 토큰 컨텍스트 윈도우, 요청당 최대 128k 출력 토큰.
- 가격: 백만 입력 토큰당 $10, 백만 출력 토큰당 $50. Claude 가격 참고.
- 데이터 보존: 두 모델 모두 30일 데이터 보존이 필요하고, Anthropic이 명시적으로 승인하지 않는 한 제로 데이터 보존(ZDR) 체제에서는 사용할 수 없어요. 둘 다 Covered Models로 지정됐죠. Claude API에서 이 요건을 충족하지 못하는 조직의 Claude Fable 5 요청은 400
invalid_request_error를 반환해요. ZDR 체제의 조직은 Anthropic 계정 팀에 문의해 데이터 보존 구성을 논의하거나, 워크스페이스별로 데이터 보존을 구성하세요. 플랫폼별 세부사항은 모델별 데이터 보존 요건을 참고하세요.
두 모델이 갈리는 부분:
- 제공 범위: Claude Fable 5는 접근 승인이 필요 없어요. Claude Mythos 5는 Project Glasswing의 승인된 고객에게만 제공돼요.
- 안전성 분류기: Claude Fable 5는
stop_reason: "refusal"로 요청을 거절할 수 있는 안전성 분류기를 실행해요. Claude Mythos 5에는 이 분류기가 없죠. Refusals and fallback 참고. - Priority Tier: Priority Tier는 Claude Fable 5에서 지원되지만 Claude Mythos 5에서는 지원되지 않아요.
Claude Mythos Preview에서 Claude Mythos 5와 Claude Fable 5로 마이그레이션
Claude Mythos 5는 초대 전용 리서치 프리뷰인 Claude Mythos Preview의 접근 제한 후속 모델이에요. Claude Fable 5는 같은 성능을 제공하고 접근 승인이 필요 없죠. 이 섹션의 변경은 두 대상 모두에 동일하게 적용돼요.
마이그레이션은 대부분 드롭인(drop-in)이에요. Claude Mythos 5와 Claude Fable 5는 Claude Mythos Preview와 같은 Messages API와 도구 사용 패턴을 쓰고, 세 모델 모두 같은 토크나이저를 쓰므로 토큰 수는 거의 동일해요. 확인할 핵심 변경은 더 이상 사용할 수 없는 기능(다음 섹션에 나열)과 생각 출력이에요. Claude Fable 5로 마이그레이션한다면 Claude Mythos Preview와 Claude Mythos 5에는 없는 안전성 분류기 거절도 계획해야 해요. Refusals and fallback 참고.
Claude Mythos Preview 폐기 일정은 모델 폐기를 참고하세요.
모델 이름 업데이트
model = "claude-mythos-preview" # Before
model = "claude-mythos-5" # After
# Or, for the model with the same capabilities and no access approval requirement:
model = "claude-fable-5" # After
Claude Mythos 5와 Claude Fable 5에서 사용할 수 없는 기능
-
확장 생각(extended thinking)과 생각 토큰 예산: 수동 확장 생각(
thinking: {type: "enabled", budget_tokens: N})은claude-mythos-5와claude-fable-5에서 지원되지 않고 400 오류를 반환해요. 적응형 생각이 항상 켜져 있으니, 모델이 각 요청에서 언제, 얼마나 생각할지 정하고thinking설정이 필요 없어요.thinking: {type: "disabled"}는 오류를 반환해요.budget_tokens에는 직접적인 대체물이 없어요: 생각은 적응형이고, effort 파라미터는 생각 예산이 아니라 별도의 출력 수준 제어장치예요.이전(Claude Mythos Preview):
```bash cURL curl https://api.anthropic.com/v1/messages \ -H "x-api-key: $ANTHR...KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-mythos-preview", "max_tokens": 16000, "thinking": { "type": "enabled", "budget_tokens": 10000 }, "messages": [ { "role": "user", "content": "..." } ] }' ``` ant messages create <<'YAML' model: claude-mythos-preview max_tokens: 16000 thinking: type: enabled budget_tokens: 10000 messages: - role: user content: "..." YAMLclient.messages.create( model="claude-mythos-preview", max_tokens=16000, thinking={"type": "enabled", "budget_tokens": 10000}, messages=[{"role": "user", "content": "..."}], )await client.messages.create({ model: "claude-mythos-preview", max_tokens: 16000, thinking: { type: "enabled", budget_tokens: 10000 }, messages: [{ role: "user", content: "..." }] });using Anthropic; using Anthropic.Models.Messages; AnthropicClient client = new(); var parameters = new MessageCreateParams { Model = "claude-mythos-preview", MaxTokens = 16000, Thinking = new ThinkingConfigEnabled(budgetTokens: 10000), Messages = [new() { Role = Role.User, Content = "..." }] }; var response = await client.Messages.Create(parameters); Console.WriteLine(response);client := anthropic.NewClient() response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{ Model: "claude-mythos-preview", MaxTokens: 16000, Thinking: anthropic.ThinkingConfigParamOfEnabled(10000), Messages: []anthropic.MessageParam{ anthropic.NewUserMessage(anthropic.NewTextBlock("...")), }, }) if err != nil { log.Fatal(err) } fmt.Println(response)AnthropicClient client = AnthropicOkHttpClient.fromEnv(); MessageCreateParams params = MessageCreateParams.builder() .model("claude-mythos-preview") .maxTokens(16000L) .enabledThinking(10000L) .addUserMessage("...") .build(); Message response = client.messages().create(params); IO.println(response);$client = new Client(); $message = $client->messages->create( maxTokens: 16000, messages: [['role' => 'user', 'content' => '...']], model: 'claude-mythos-preview', thinking: ['type' => 'enabled', 'budget_tokens' => 10000], );client = Anthropic::Client.new message = client.messages.create( model: "claude-mythos-preview", max_tokens: 16000, thinking: { type: "enabled", budget_tokens: 10000 }, messages: [ { role: "user", content: "..." } ] )이후(Claude Mythos 5):
```bash cURL curl https://api.anthropic.com/v1/messages \ -H "x-api-key: $ANTHR...KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-mythos-5", "max_tokens": 16000, "messages": [ { "role": "user", "content": "..." } ] }' ``` ant messages create <<'YAML' model: claude-mythos-5 max_tokens: 16000 messages: - role: user content: "..." YAMLclient.messages.create( model="claude-mythos-5", max_tokens=16000, messages=[{"role": "user", "content": "..."}], )await client.messages.create({ model: "claude-mythos-5", max_tokens: 16000, messages: [{ role: "user", content: "..." }] });using Anthropic; using Anthropic.Models.Messages; AnthropicClient client = new(); var parameters = new MessageCreateParams { Model = "claude-mythos-5", MaxTokens = 16000, Messages = [new() { Role = Role.User, Content = "..." }] }; var response = await client.Messages.Create(parameters); Console.WriteLine(response);client := anthropic.NewClient() response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{ Model: "claude-mythos-5", MaxTokens: 16000, Messages: []anthropic.MessageParam{ anthropic.NewUserMessage(anthropic.NewTextBlock("...")), }, }) if err != nil { log.Fatal(err) } fmt.Println(response)AnthropicClient client = AnthropicOkHttpClient.fromEnv(); MessageCreateParams params = MessageCreateParams.builder() .model("claude-mythos-5") .maxTokens(16000L) .addUserMessage("...") .build(); Message response = client.messages().create(params); IO.println(response);$client = new Client(); $message = $client->messages->create( maxTokens: 16000, messages: [['role' => 'user', 'content' => '...']], model: 'claude-mythos-5', );client = Anthropic::Client.new message = client.messages.create( model: "claude-mythos-5", max_tokens: 16000, messages: [ { role: "user", content: "..." } ] )Claude Fable 5도 모델 이름만
claude-fable-5로 바꾸면 동일하게 적용돼요. -
어시스턴트 프리필(Assistant prefill):
claude-mythos-5와claude-fable-5에서 어시스턴트 메시지 프리필은 지원되지 않고, Claude Mythos Preview와 마찬가지로 400 오류를 반환해요. 대신 시스템 프롬프트 지침을 쓰세요. -
생각 출력(Thinking output):
claude-mythos-5와claude-fable-5에서는 원시 사고 과정(raw chain of thought)이 절대 반환되지 않아요. 대신thinking.display를summarized로 설정하면 생각 블록에 읽을 수 있는 요약 텍스트가 담겨요. 같은 모델에서 대화를 이어갈 때는 생각 블록을 그대로 다시 전달하세요. Fable·Mythos 모델의 생각 출력 참고.
토큰 계산과 결제 (Token counting and billing)
claude-mythos-5와 claude-fable-5는 claude-mythos-preview와 같은 토크나이저(Claude Opus 4.7에서 도입된 것)를 써요. claude-mythos-preview에서 마이그레이션하면 토큰 수는 거의 동일해요. Claude Opus 4.7 이전 모델과 비교하면 같은 콘텐츠가 약 30% 더 많은 토큰으로 토크나이즈될 수 있고, 콘텐츠와 워크로드 형태에 따라 달라져요.
/v1/messages/count_tokens는 claude-mythos-preview와 비교해 claude-mythos-5와 claude-fable-5에서 거의 동일한 값을 반환해요. 자체 워크로드에서 비용과 지연 시간을 다시 기준 삼으세요.
마이그레이션 체크리스트
- 모델 이름을
claude-mythos-preview에서claude-mythos-5로, 또는 같은 성능을 제공하고 접근 승인이 필요 없는claude-fable-5로 업데이트. - 수동 확장 생각 설정(
thinking: {type: "enabled", budget_tokens: N}) 제거. 적응형 생각은 항상 켜져 있고thinking필드가 필요 없어요. thinking: {type: "disabled"}설정 제거.claude-mythos-5와claude-fable-5에서 생각 비활성화는 오류를 반환해요.budget_tokens제거. 직접적인 대체물이 없어요: 생각은 적응형이고,effort파라미터는 생각 예산이 아닌 별도의 출력 수준 제어장치예요.thinking필드를 파싱하는 코드가 표시 텍스트로만 취급하는지, 같은 모델에서 계속할 때 생각 블록을 그대로 다시 전달하는지 확인.thinking.display는claude-mythos-5와claude-fable-5에서 Claude Mythos Preview와 마찬가지로 기본"omitted"예요. 읽기 좋은 요약을 받으려면display: "summarized"로 설정하세요. Fable·Mythos 모델의 생각 출력 참고.- 이전 모델에서 대화 이력을 재생한다면, 이전 어시스턴트 턴에서
thinking과redacted_thinking블록을 먼저 제거하세요.claude-fable-5와claude-mythos-5의 생각 블록은 그것을 만든 모델이나 더 새로운 모델만 읽을 수 있어요: 이전 모델은 조용히 무시하고, Claude Fable 5.1과 Claude Mythos 5.1은 읽으므로, 대화를 그 모델들로 올릴 때는 유지하세요(모델 전환 참고). 제거하면 이전 모델로의 요청이 최소화되고 균일해져요. - Claude Fable 5로 마이그레이션한다면
stop_reason: "refusal"을 처리하고stop_details.category필드를 읽으세요. Claude Fable 5는 Claude Mythos Preview와 Claude Mythos 5에 없는 안전성 분류기를 실행해요. Refusals and fallback 참고. - 자체 워크로드에서 토큰 수와 비용을 다시 기준 삼으세요.
claude-mythos-preview에서 마이그레이션하면 토큰 수는 거의 동일해요.
Claude Opus 5에서 Claude Mythos 5와 Claude Fable 5로 마이그레이션
Claude Fable 5와 Claude Mythos 5는 Claude Opus 5와 같은 Messages API와 도구 사용 패턴을 써요. 기본 1M 토큰 컨텍스트 윈도우와 같은 128k 최대 출력 토큰을 공유하죠. 프리필·샘플링 파라미터 제한과 생각 표시 동작은 Claude Opus 5에서 그대로 이어져요. 확인할 변경은 항상 켜진 생각, 가격, Priority Tier, 데이터 보존이에요.
모델 이름 업데이트
model = "claude-opus-5" # Before
model = "claude-fable-5" # After
# Or, for the Project Glasswing model with the same capabilities:
model = "claude-mythos-5" # After
달라진 점
-
생각을 더 이상 비활성화할 수 없어요: Claude Opus 5에서는 생각이 기본 켜져 있고,
high이하의 effort 수준에서thinking: {type: "disabled"}로 끌 수 있었어요.claude-fable-5와claude-mythos-5에서는 적응형 생각이 항상 켜져 있고, 어떤 effort 수준에서도thinking: {type: "disabled"}는 400 오류를 반환해요.thinking: {type: "disabled"}설정을 제거하고, 토큰 지출을 통제하려면 더 낮은 effort 수준을 쓰세요.Claude Opus 5 요청이 생각을 비활성화했다면 응답 형태가 달라져요: 응답이 첫
text블록 앞에 하나 이상의thinking블록으로 시작할 수 있고, 기본display: "omitted"에서 빈thinking필드로 반환돼요(Claude Opus 5와 같은 기본값).content[0].text처럼 위치로 답변을 읽는 코드나 첫 콘텐츠 블록을 텍스트로 취급하는 스트림 핸들러는type필드로 콘텐츠 블록을 선택해야 해요. 도구 사용 루프는 도구 결과와 함께thinking블록을 완전하게, 수정하지 않은 채로 다시 전달해야 해요. API는 편집·재정렬·일부 누락된 생각 블록을 400 오류로 거부해요(생각 블록 보존 참고). 생각 토큰은 생각 텍스트가 반환되지 않아도 출력 토큰으로 청구돼요. -
가격: Claude Fable 5와 Claude Mythos 5는 백만 입력 토큰당 $10, 백만 출력 토큰당 $50로, Claude Opus 5의 $5 / $25와 비교돼요. Claude 가격 참고.
-
Priority Tier: Priority Tier는 Claude Opus 5에서 지원되지 않으므로 기존 트래픽에는 영향이 없어요. 조직에 Priority Tier 약정이 있다면 Claude Fable 5는 지원하고 Claude Mythos 5는 지원하지 않아요.
-
데이터 보존: Claude Fable 5와 Claude Mythos 5는 30일 데이터 보존이 필요하고, Anthropic이 명시적으로 승인하지 않는 한 제로 데이터 보존(ZDR) 체제에서는 사용할 수 없어요. 둘 다 Covered Models로 지정됐죠. 모델별 데이터 보존 요건 참고.
마이그레이션 체크리스트
- 모델 이름을
claude-opus-5에서claude-fable-5(또는claude-mythos-5)로 업데이트. thinking: {type: "disabled"}설정 제거.claude-fable-5와claude-mythos-5에서 400 오류를 반환해요. 토큰 지출을 통제하려면 더 낮은 effort 수준을 쓰고, Claude Opus 5에서 생각을 끈 채 돌렸던 워크로드는max_tokens를 다시 검토하세요.- 그 워크로드가
content[0].text처럼 위치로 콘텐츠를 읽는다면type으로 콘텐츠 블록을 선택하도록 업데이트하세요:thinking블록이 이제text블록보다 먼저 도착해요. 도구 사용 루프에서thinking블록을 완전하고 수정 없이 다시 전달하세요. 수정된 블록은 400 오류를 반환해요. - 조직에 제로 데이터 보존(ZDR) 체제가 있다면 마이그레이션 전에 자격을 확인하세요. 이 모델은 Anthropic이 명시적으로 승인하지 않는 한 ZDR에서는 사용할 수 없어요. 모델별 데이터 보존 요건 참고.
- 자체 워크로드에서 비용을 다시 기준 삼으세요. 토큰 수는 거의 동일하고, 토큰당 가격이 다르며, 생각을 끈 채 돌렸던 워크로드는 이제 출력 토큰으로 청구되는 생각 토큰을 만들어요.
Claude Opus 4.8에서 Claude Mythos 5와 Claude Fable 5로 마이그레이션
마이그레이션은 대부분 드롭인이에요. Claude Fable 5와 Claude Mythos 5는 Claude Opus 4.8과 같은 Messages API와 도구 사용 패턴을 쓰고, 기본 1M 토큰 컨텍스트 윈도우와 같은 128k 최대 출력 토큰을 공유해요. 모델들이 같은 토크나이저를 쓰므로 토큰 수는 거의 동일하죠. 확인할 핵심 변경은 항상 켜진 적응형 생각, 생각 출력, 안전성 분류기 거절(Claude Fable 5만), 가격이에요.
모델 이름 업데이트
model = "claude-opus-4-8" # Before
model = "claude-fable-5" # After
# Or, for the Project Glasswing model with the same capabilities:
model = "claude-mythos-5" # After
달라진 점
이 섹션의 항목들은 모델 ID를 바꾼 뒤 확인할 만한 API·동작 차이를 설명해요. 명시된 경우를 제외하면 claude-fable-5와 claude-mythos-5에 동일하게 적용돼요.
-
적응형 생각이 항상 켜져 있어요: 적응형 생각은
claude-fable-5와claude-mythos-5의 유일한 생각 모드예요. 모델이 각 요청에서 언제, 얼마나 생각할지 정하며thinking설정이 필요 없어요.thinking: {type: "disabled"}는 오류를 반환해요. 생각 깊이를 조절하려면 effort 파라미터를 쓰세요.확인할 동작 변경: Claude Opus 4.8에서는
thinking필드 없이 요청하면 생각 없이 실행됐지만,claude-fable-5와claude-mythos-5에서는 같은 요청이 적응형 생각으로 실행돼요.max_tokens는 생각과 응답 텍스트를 합친 총 출력에 대한 하드 한도로 남아 있으므로, Claude Opus 4.8에서 생각 없이 돌렸던 워크로드는max_tokens를 다시 검토하세요. 비용 통제 참고. 응답이 첫text블록 앞에 하나 이상의thinking블록으로 시작할 수도 있으므로, 위치로 답변을 읽는 코드(content[0].text또는 첫 콘텐츠 블록을 텍스트로 취급하는 스트림 핸들러)는type필드로 콘텐츠 블록을 선택해야 해요. 생각 토큰은 생각 텍스트가 반환되지 않아도 출력 토큰으로 청구되므로, Claude Opus 4.8에서 생각 없이 돌렸던 워크로드는 토큰당 가격 차이에 더해 요청당 더 많은 출력 토큰을 만들어요.도구 사용 루프를 돌린다면, 각 어시스턴트 응답의
thinking블록을 도구 결과와 함께 완전하고 수정하지 않은 채로 다시 전달하세요.thinking필드가 빈 블록도 포함해요. 어시스턴트 메시지를 받은 그대로 반영하고, 콘텐츠 블록을type으로 걸러내거나 재구성하지 마세요. API는 편집·재정렬·일부 누락된 생각 블록을 400 오류로 거부해요. 생각 블록 보존 참고.이전(Claude Opus 4.8):
```bash cURL curl https://api.anthropic.com/v1/messages \ -H "x-api-key: $ANTHR...KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-opus-4-8", "max_tokens": 16000, "thinking": { "type": "adaptive" }, "output_config": { "effort": "high" }, "messages": [ { "role": "user", "content": "..." } ] }' ``` ant messages create <<'YAML' model: claude-opus-4-8 max_tokens: 16000 thinking: type: adaptive output_config: effort: high messages: - role: user content: "..." YAMLclient.messages.create( model="claude-opus-4-8", max_tokens=16000, thinking={"type": "adaptive"}, output_config={"effort": "high"}, messages=[{"role": "user", "content": "..."}], )await client.messages.create({ model: "claude-opus-4-8", max_tokens: 16000, thinking: { type: "adaptive" }, output_config: { effort: "high" }, messages: [{ role: "user", content: "..." }] });using Anthropic; using Anthropic.Models.Messages; AnthropicClient client = new(); var parameters = new MessageCreateParams { Model = "claude-opus-4-8", MaxTokens = 16000, Thinking = new ThinkingConfigAdaptive(), OutputConfig = new OutputConfig { Effort = Effort.High }, Messages = [new() { Role = Role.User, Content = "..." }] }; var response = await client.Messages.Create(parameters); Console.WriteLine(response);client := anthropic.NewClient() response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{ Model: "claude-opus-4-8", MaxTokens: 16000, Thinking: anthropic.ThinkingConfigParamUnion{ OfAdaptive: &anthropic.ThinkingConfigAdaptiveParam{}, }, OutputConfig: anthropic.OutputConfigParam{ Effort: anthropic.OutputConfigEffortHigh, }, Messages: []anthropic.MessageParam{ anthropic.NewUserMessage(anthropic.NewTextBlock("...")), }, }) if err != nil { log.Fatal(err) } fmt.Println(response)AnthropicClient client = AnthropicOkHttpClient.fromEnv(); MessageCreateParams params = MessageCreateParams.builder() .model("claude-opus-4-8") .maxTokens(16000L) .thinking(ThinkingConfigAdaptive.builder().build()) .outputConfig(OutputConfig.builder() .effort(OutputConfig.Effort.HIGH) .build()) .addUserMessage("...") .build(); Message response = client.messages().create(params); IO.println(response);$client = new Client(); $message = $client->messages->create( maxTokens: 16000, messages: [['role' => 'user', 'content' => '...']], model: 'claude-opus-4-8', thinking: ['type' => 'adaptive'], outputConfig: ['effort' => 'high'], );client = Anthropic::Client.new message = client.messages.create( model: "claude-opus-4-8", max_tokens: 16000, thinking: { type: "adaptive" }, output_config: { effort: "high" }, messages: [ { role: "user", content: "..." } ] )이후(Claude Fable 5):
```bash cURL curl https://api.anthropic.com/v1/messages \ -H "x-api-key: $ANTHR...KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-fable-5", "max_tokens": 16000, "output_config": { "effort": "high" }, "messages": [ { "role": "user", "content": "..." } ] }' ``` ant messages create <<'YAML' model: claude-fable-5 max_tokens: 16000 output_config: effort: high messages: - role: user content: "..." YAMLclient.messages.create( model="claude-fable-5", max_tokens=16000, output_config={"effort": "high"}, messages=[{"role": "user", "content": "..."}], )await client.messages.create({ model: "claude-fable-5", max_tokens: 16000, output_config: { effort: "high" }, messages: [{ role: "user", content: "..." }] });using Anthropic; using Anthropic.Models.Messages; AnthropicClient client = new(); var parameters = new MessageCreateParams { Model = "claude-fable-5", MaxTokens = 16000, OutputConfig = new OutputConfig { Effort = Effort.High }, Messages = [new() { Role = Role.User, Content = "..." }] }; var response = await client.Messages.Create(parameters); Console.WriteLine(response);client := anthropic.NewClient() response, err := client.Messages.New(context.TODO(), anthropic.MessageNewParams{ Model: "claude-fable-5", MaxTokens: 16000, OutputConfig: anthropic.OutputConfigParam{ Effort: anthropic.OutputConfigEffortHigh, }, Messages: []anthropic.MessageParam{ anthropic.NewUserMessage(anthropic.NewTextBlock("...")), }, }) if err != nil { log.Fatal(err) } fmt.Println(response)AnthropicClient client = AnthropicOkHttpClient.fromEnv(); MessageCreateParams params = MessageCreateParams.builder() .model("claude-fable-5") .maxTokens(16000L) .outputConfig(OutputConfig.builder() .effort(OutputConfig.Effort.HIGH) .build()) .addUserMessage("...") .build(); Message response = client.messages().create(params); IO.println(response);$client = new Client(); $message = $client->messages->create( maxTokens: 16000, messages: [['role' => 'user', 'content' => '...']], model: 'claude-fable-5', outputConfig: ['effort' => 'high'], );client = Anthropic::Client.new message = client.messages.create( model: "claude-fable-5", max_tokens: 16000, output_config: { effort: "high" }, messages: [ { role: "user", content: "..." } ] )Claude Mythos 5도 모델 이름만
claude-mythos-5로 바꾸면 동일하게 적용돼요. -
확장 생각과 생각 예산(변경 없음): 수동 확장 생각(
thinking: {type: "enabled", budget_tokens: N})은claude-fable-5와claude-mythos-5에서 지원되지 않고, Claude Opus 4.8과 마찬가지로 400 오류를 반환해요.budget_tokens에는 직접적인 대체물이 없어요: 생각은 적응형이고, effort 파라미터는 생각 예산이 아닌 별도의 출력 수준 제어장치예요. -
어시스턴트 프리필(변경 없음):
claude-fable-5와claude-mythos-5에서 어시스턴트 메시지 프리필은 지원되지 않고, Claude Opus 4.8과 마찬가지로 400 오류를 반환해요. 대신 시스템 프롬프트 지침을 쓰세요. -
생각 출력:
claude-fable-5와claude-mythos-5에서는 원시 사고 과정이 절대 반환되지 않지만,thinking.display를summarized로 설정하면 생각 블록에 읽을 수 있는 요약 텍스트가 담겨요. 같은 모델에서 대화를 이어갈 때는 생각 블록을 그대로 다시 전달하세요. Fable·Mythos 모델의 생각 출력 참고. -
안전성 분류기와
refusal중지 이유(Claude Fable 5만):claude-fable-5는 요청과 응답 생성 중에 안전성 분류기를 실행해요. Claude Mythos 5에는 이 분류기가 없죠. 분류기가 요청을 거절하면 Messages API는 오류가 아니라 성공적인 HTTP 200 응답으로stop_reason: "refusal"을 반환해요.stop_details.category필드는 어떤 분류기가 발동했는지 보고하며,"cyber","bio","reasoning_extraction"같은 범주나, 거절이 이름 없는 범주에 매핑되면null이 돼요. 전체 집합은 거절 범주 표를 참고하세요.출력이 생성되기 전에 거절된 요청의 입력 토큰은 청구되지 않아요. 분류기가 스트림 중간에 발동하면 입력과 이미 스트리밍된 출력이 청구되고, 부분 출력은 폐기하세요.
거절된 요청을 다른 클로드 모델에서 자동으로 다시 실행하려면 옵트인
fallbacks파라미터를 전달하세요. Claude API에서 베타예요. 이 파라미터는 Message Batches API와 Amazon Bedrock, Google Cloud, Microsoft Foundry에서는 사용할 수 없고, 그 세 플랫폼에서는 클라이언트 쪽에서 재시도하거나 SDK 거절 폴백 미들웨어를 쓰세요. Refusals and fallback 참고. -
higheffort에서 시작: effort 파라미터 기본값은high로 유지돼요. Claude Opus 4.8에서 코딩·고자율 작업에는xhigh를 명시적으로 설정할 것을 권장했어요.claude-fable-5와claude-mythos-5에서는 대부분의 작업에high를 기본으로 쓰고, 가장 성능 민감한 워크로드에만xhigh를 아끼세요. 더 낮은 effort 설정도 잘 작동하고 이전 모델의xhigh성능을 능가하는 경우가 많아요. 작업이 완료됐지만 필요 이상으로 오래 걸린다면 effort를 낮추세요. Prompting Claude Fable 5 참고. -
더 낮은 프롬프트 캐싱 최소 길이:
claude-fable-5와claude-mythos-5의 최소 캐시 가능 프롬프트 길이는 512 토큰으로, Claude Opus 4.8의 1,024 토큰보다 낮아요. Claude Opus 4.8에서 캐시하기엔 너무 짧았던 프롬프트가 이제 코드 변경 없이 캐시 항목을 만들 수 있어요. 모델별 최소 길이는 프롬프트 캐싱을 참고하세요.
마이그레이션 체크리스트
- 조직에 제로 데이터 보존(ZDR) 체제가 있다면 마이그레이션 전에 자격을 확인하세요.
claude-fable-5와claude-mythos-5는 30일 데이터 보존이 필요하고, Anthropic이 명시적으로 승인하지 않는 한 ZDR에서는 사용할 수 없어요. Claude API에서 이 요건을 충족하지 못하는claude-fable-5요청은 400invalid_request_error를 반환해요. Claude Opus 4.8은 ZDR에서 제공돼요. 모델별 데이터 보존 요건 참고. - 모델 이름을
claude-opus-4-8에서claude-fable-5(또는claude-mythos-5)로 업데이트. thinking: {type: "disabled"}설정 제거.claude-fable-5와claude-mythos-5에서 생각 비활성화는 오류를 반환하고,thinking필드 없는 요청은 적응형 생각으로 실행돼요.content[0].text처럼 위치로 콘텐츠를 읽는 응답 파싱 업데이트: 적응형 생각이 항상 켜져 있으므로thinking블록이text블록보다 먼저 도착해요. 대신type으로 콘텐츠 블록을 선택하고, 도구 사용 루프에서thinking블록을 완전하고 수정 없이 다시 전달하세요. 수정된 블록은 400 오류를 반환해요. 생각 블록 보존 참고.- 이전 마이그레이션에서 수동 확장 생각과 어시스턴트 프리필을 제거했다면 조치할 필요가 없어요. 둘 다
claude-fable-5와claude-mythos-5에서 미지원 상태로 유지돼요. thinking필드를 파싱하는 코드가 표시 텍스트로만 취급하는지, 같은 모델에서 계속할 때 생각 블록을 그대로 다시 전달하는지 확인.thinking.display는claude-fable-5와claude-mythos-5에서 Claude Opus 4.8과 마찬가지로 기본"omitted"예요. 읽기 좋은 요약을 받으려면display: "summarized"로 설정하세요. Fable·Mythos 모델의 생각 출력 참고.- 이전 모델에서 대화 이력을 재생한다면, 이전 어시스턴트 턴에서
thinking과redacted_thinking블록을 먼저 제거하세요.claude-fable-5와claude-mythos-5의 생각 블록은 그것을 만든 모델이나 더 새로운 모델만 읽을 수 있어요. 이전 모델은 조용히 무시하고, Claude Fable 5.1과 Claude Mythos 5.1은 읽으므로, 대화를 그 모델들로 올릴 때는 유지하세요(모델 전환 참고). 제거하면 이전 모델로의 요청이 최소화되고 균일해져요. 예외는 폴백 크레딧(fallback credit) 상환으로, 그 기능의 정확한 규칙에 따라 요청 본문을 반사해야 해요. - Claude Fable 5로 마이그레이션한다면
stop_reason: "refusal"을 처리하고stop_details.category필드를 읽으세요. 거절된 요청을 다른 모델에서 자동으로 다시 실행하려면 옵트인fallbacks파라미터(베타)를 고려하세요. Refusals and fallback 참고. effort설정을 다시 평가하세요. Claude Opus 4.8에서xhigh로 돌렸던 워크로드를 포함해 대부분의 작업은high에서 시작하세요.- 자체 워크로드에서 비용과 지연 시간을 다시 기준 삼으세요.
claude-opus-4-8에서 마이그레이션하면 토큰 수는 거의 동일하고, 토큰당 가격이 다르며, 생각 토큰이 출력 토큰으로 청구되므로 생각 없이 돌렸던 워크로드는 요청당 더 많은 출력 토큰을 만들어요.