CCAR-P 개념 카드

■ structured outputs

출력 형식 강제 · enum 도구 · prefill 400 은 모델별2.2 본편

표시가 없는 문장은 공식 문서에서 확인한 내용이에요. 다른 표시는 읽는 법

왜 배우나 — 시험이 요구하는 것

시험 목표 2.2 시스템 프롬프트와 가드레일 · D2 모델·프롬프트 13%
Design system prompts, templates, and guardrails

이 개념으로 푸는 판단 (할 수 있어야 하는 것)

  • 2.2② JSON 모양·금지 규칙을 꼭 지켜야 한다 — 프롬프트? prefill? 스키마? — 유도(프롬프트) vs 강제(스키마·enum 도구·훅) · prefill 400 을 만났을 때의 수리
  • 1.2① 입력·처리·출력·피드백, 각 칸은 무슨 일을 맡나? — 단계마다 책임 나누기 (입력 선별 → 보강된 LLM 처리 → 모양이 정해진 출력 → 평가 결과를 되돌리는 길)
  • 4.4③ 형식이 매번 깨진다 vs 더 강한 설정에서만 풀린다 — prompt failure vs model mismatch 가르기
  • 5.4① 병원 환자 메시지를 Claude API 로 — BAA·HIPAA readiness 면 되나, ZDR 도? — HIPAA 구성 고르기 (BAA + HIPAA readiness + PHI 경계) vs ZDR

한눈에

JSON 모양은 부탁(프롬프트)이 아니라 structured outputs 의 제약 디코딩(constrained decoding)으로 보장한다. 응답 모양은 JSON outputs(output_config.format)로, 도구 입력은 strict tool use(strict: true)로 보장한다. 한 요청에 둘 다 쓸 수 있다

옛 수단 prefill(마지막 assistant 턴에 "{" 채우기)은 Claude 4.6 이후 모델에서 400 이 난다

비유 출력을 grep 으로 긁어 검사하던 것을 스키마 검증(admission 정책)으로 바꾸는 것과 같다. 폐기된 API 버전을 부르면 에러가 나는 것과도 같다

JSON 모양은 부탁이나 prefill(4.6 이후 400)이 아니라 structured outputs 로 보장하며, 응답은 output_config.format, 도구 입력은 strict: true 로 건다.
그림으로 보기 (AI 생성 · Codex · 누르면 크게)

ELI5

택배 상자를 부탁으로 맞추느냐, 틀에 넣어 찍어 내느냐예요.

  • "네모나게 싸 주세요" 라고 부탁하면 대부분 네모지만 가끔 찌그러져요.
  • 틀에 넣어 찍으면 늘 네모예요. 그게 structured outputs 예요.
  • 예전엔 상자 뚜껑을 미리 반쯤 접어 두는 요령(prefill)을 썼는데, 새 기계는 그걸 받지 않아요.
  • 틀이 있어도 기계가 "이건 못 싸요" 하거나 중간에 멈추면 상자가 비어 올 수 있어요.

개념 설명

영상 — JSON 모양, 부탁하면 늘 맞을까? (약 43초 · 소리 없음 · 자막). 5번 중 2번 깨짐·후보 글자·재시도 결과는 그림용 가정(실측 아님) 작은 화면에서는 전체화면(⛶)으로 보세요.

원리

부탁 vs 보장

  • 프롬프트로 "JSON 으로" 라고 하면 대개 맞는다. 그러나 파싱 오류, 필수 필드 누락, 타입 불일치가 섞일 수 있다.
  • structured outputs 는 스키마를 문법으로 컴파일한다. 그래서 생성 단계에서 벗어난 토큰을 고르지 못하게 한다(constrained decoding). 결과는 항상 유효하고 타입이 안전하다. 스키마 위반 재시도도 필요 없다.
  • 두 갈래가 있다. 응답 전체 모양은 JSON outputs(output_config.format)로 정한다. 도구 입력 모양은 strict tool use(strict: true)로 정한다. 한 요청에 둘 다 쓸 수 있다.

prefill 은 왜 막혔나

  • prefill 은 마지막 assistant 턴에 답의 앞머리("{", "```json")를 넣어 이어 쓰게 하던 요령이다.
  • Claude 4.6 이후 모델과 Mythos Preview 는 이것을 400 으로 거절한다. 모델의 지시 따르기가 좋아져 대부분 필요 없어졌다. 모양은 structured outputs 가 전담한다.
  • 이전 모델(4.5 세대)은 계속 된다. 단 thinking 을 켠 동안에는 모델과 상관없이 prefill 을 못 한다. JSON outputs 와도 같이 못 쓴다.

강제 도구 호출도 모델별

  • tool_choice any·tool 은 내부적으로 prefill 로 도구 호출을 강제한다. 그래서 tool_use 앞에 설명 문장이 나오지 않는다.
  • Opus 5.5 · Fable 5.1 · Mythos 5.1 은 이 강제 자체를 400 으로 거절한다. 대신 auto 와 strict tool use 를 쓰거나, structured outputs 를 쓴다. 어느 도구를 고를지는 프롬프트가 좌우한다.

보장의 경계

  • 모양만 보장한다. refusal(HTTP 200)이나 max_tokens 잘림이면 스키마와 안 맞을 수 있다. enum 대소문자도 보장하지 않는다.
  • 값의 뜻(합계·필드 위치)은 스키마 밖이다. 그래서 뒤쪽에서 검증한다.

규칙과 판단

prefill 코드가 400 이면 모델 세대를 보고, 4.6 이후면 JSON·분류는 structured outputs, 머리말은 시스템 프롬프트, 이어 쓰기는 user 메시지로 옮기는 결정 나무.
그림으로 보기 (AI 생성 · Codex · 누르면 크게)

갈림길

①② 무엇의 모양? [2.2②] [1.2①]

무엇을 고정하나?
응답 전체 (추출·보고서 JSON)

JSON outputs

output_config.format 에 type: "json_schema" 를 넣는다

도구 입력 (함수 인자)

strict tool use

도구 정의 최상위에 strict: true 를 넣는다

정해진 라벨 중 하나 (분류)

enum

enum 필드가 있는 도구나 structured outputs 를 쓴다. 대소문자는 보장하지 않는다. 그래서 대소문자를 무시하고 비교한다

③④ prefill 코드가 400 [2.2②] [4.4③]

모델이 4.6 이후인가?지금 Active 중 prefill 되는 모델은 Opus 4.5 · Sonnet 4.5 · Haiku 4.5 뿐이다
예
prefill 로 무엇을 했나?
JSON·분류 모양

structured outputs

분류에는 enum 도구도 쓸 수 있다

머리말 건너뛰기

시스템 프롬프트 지시

시스템 프롬프트에 "Respond directly without preamble" 을 넣는다. XML 태그도 쓴다. 그래도 머리말이 가끔 나오면 후처리로 뗀다

끊긴 답 잇기

user 메시지로

끊긴 끝을 user 턴에 넣고 이어 쓰라고 한다

아니오 (4.5 세대)

thinking·JSON outputs 여부를 먼저 본다

이전 모델은 prefill 을 계속 지원한다. 단 thinking 을 켠 동안에는 prefill 을 못 한다. JSON outputs 와도 같이 못 쓴다. 최소 지원 기한이 정해진 상태다

⑤ 강제 도구 호출이 400 [2.2②]

모델이 Opus 5.5 · Fable 5.1 · Mythos 5.1 인가?
예

auto + strict

tool_choice any·tool 은 400 이다. auto 와 strict tool use 를 쓰거나, structured outputs 를 쓴다 시험 뒤 변경

아니오

any·tool 을 그대로 쓴다

단 수동 extended thinking 과는 같이 못 쓴다

흐름

그림 속 이름·금액·시간·토큰 수는 예시예요. 공식 한도·동작은 카드 본문 값이 기준.

장면 글로 보기

칸 : 앱 → API → 모델

질문 : 모양은 누가 보장할까?

① structured outputs ✓

  1. 시작 : 앱 — 쪽지 : 메일: "우산 2개, / 내일까지 보내 주세요"
  2. 요청 : 앱 → API : output_config.format + 스키마 — 쪽지 : format: type "json_schema" / + 스키마 {상품, 수량}
  3. 생성 : 모델 : 제약 디코딩(constrained decoding) — 쪽지 : 스키마대로만 생성 / {"상품": "우산", …
  4. 응답 : 모델 → 앱 : 스키마에 맞는 JSON 이 온다 — 쪽지 : {"상품": "우산", / "수량": 2}
  5. 끝 : 항상 유효하다. 스키마 위반 재시도가 필요 없다

② prefill "{" ≠

  1. 시작 : 앱 — 쪽지 : 메일: "우산 2개, / 내일까지 보내 주세요"
  2. 요청 : 앱 → API : 마지막 assistant 턴에 "{" 를 채운다 — 쪽지 : 모델: Sonnet 5 / 마지막 턴: / {role: "assistant", "{"}
  3. 거절 : API : 400 invalid_request_error — 쪽지 : HTTP 400 / invalid_request_error
  4. 건너뜀 : 모델
  5. 끝 : Claude 4.6 이후 모델과 Mythos Preview 는 prefill 에 400 을 낸다

③ 보장의 구멍 ≠

  1. 시작 : 앱 — 쪽지 : 메일: 주문 180건 목록 / (아주 김)
  2. 요청 : 앱 → API : output_config.format + 스키마 — 쪽지 : format: type "json_schema" / max_tokens: 1024
  3. 생성 : 모델 : 잘림(max_tokens)이나 거절(refusal)이 생긴다 — 쪽지 : … {"상품": "장
  4. 응답 : 모델 → 앱 : 스키마와 안 맞을 수 있다 — 쪽지 : stop_reason: "max_tokens" / [{"상품": "우산", …, / {"상품": "장
  5. 끝 : 보장에도 예외가 있다. stop_reason 을 먼저 본다

나머지 규칙

  1. 보장의 구멍 : 아래 두 경우에는 스키마와 안 맞을 수 있다

    • stop_reason: "refusal" : HTTP 200 이고 과금된다
    • "max_tokens" : 잘린 것이다. 더 큰 max_tokens 로 재시도한다

    자세한 것은 ■ stop_reason 으로 분기 에 있다

    모양만 보장한다. 값의 뜻(항목 합계 ≠ 총액, 엉뚱한 필드)은 못 막는다 업계 일반 CCA-F 노트 4.3

    형식이 자꾸 깨질 때 프롬프트 탓인지 모델 탓인지 가르는 법은 ◆ prompt failure vs model mismatch 에 있다. 행동을 꼭 막아야 할 때(삭제 금지 등)는 ◆ 안내(프롬프트) vs 강제(구성·코드) 에 있다

  2. 지원 모델은 지금 Active 모델 전부다(4.5 세대 포함). Amazon Bedrock 에서는 Opus 4.6 · Sonnet 4.6 · Sonnet 4.5 · Opus 4.5 · Haiku 4.5 만 지원한다 (2026-09-28 조회)

    비용과 제약은 아래와 같다 [5.4①]

    • 새 스키마의 첫 요청은 문법 컴파일 지연(latency)이 있다. 컴파일 결과는 마지막 사용 뒤 24시간 캐시된다
    • output_config.format 을 바꾸면 그 대화의 프롬프트 캐시가 무효가 된다
    • 요청당 한도는 strict 도구 20 · 선택 파라미터 24 · union 타입 16 이다
    • Citations 와 같이 켜면 400 이다
    • PHI 는 스키마(속성 이름·enum·const·pattern)에 넣지 않는다
규칙 원문 ①②③④⑤ (갈림길로 그린 규칙)
  1. 모양 강제는 structured outputs 로 한다 [2.2②] [1.2①]

    JSON outputs : output_config.format 에 type: "json_schema" 와 스키마를 넣는다. 그러면 text 블록에 스키마에 맞는 JSON 이 온다 (옛 output_format 은 output_config.format 으로 바뀌었다, 2026-01-29 GA)

    strict tool use : 도구 정의 최상위에 strict: true 를 넣는다. 그러면 tool_use 의 input 이 input_schema 를 그대로 따른다. name 도 항상 유효하다

    둘 다 한 요청에 쓸 수 있다. 그러면 도구 호출을 믿을 수 있고, 최종 답도 구조화된다

    공식 마이그레이션 글은 "먼저 모델에게 구조를 따르라고 말해 보기(재시도 포함)" 도 든다. 새 모델은 말하면 복잡한 스키마도 잘 맞춘다. **보장**이 필요하면 structured outputs 를 쓴다

  2. 분류에는 enum 필드를 가진 도구나 structured outputs 를 쓴다

    enum·const 값의 대소문자는 보장하지 않는다. 값이 오류나 특별 stop_reason 없이 그대로 온다. 그래서 대소문자를 무시하고 비교한다. 대소문자만 다른 값은 두지 않는다

  3. prefill 400 : Claude 4.6 이후 모델과 Mythos Preview 는 마지막 assistant 턴 prefill 에 400 invalid_request_error 를 낸다. 이전 모델은 계속 지원한다. 대화 중간의 assistant 메시지는 영향이 없다 [2.2②] [4.4③]

    그래서 지금 Active 중 prefill 되는 모델은 Opus 4.5 · Sonnet 4.5 · Haiku 4.5 뿐이다 (모델 목록 대조 계산, 2026-09-28 조회)

    thinking 을 켠 동안에는 모델과 상관없이 prefill 을 못 한다. JSON outputs 와 prefill 은 호환되지 않는다

    옮기는 법은 아래와 같다

    • 모양 : structured outputs
    • 분류 : enum 도구
    • 머리말 : 시스템 프롬프트 지시(+XML 태그·후처리)
    • 이어 쓰기 : user 메시지로
    • 맥락 다시 넣기 : user 턴·도구·compaction
  4. 옛 모델 고정은 길이 아니다 : prefill 되는 4.5 세대는 은퇴 "하한일"(Not sooner than)만 잡힌 Active 다 (2026-09-28 조회)

    • Sonnet 4.5 : 2026-09-29 이후
    • Haiku 4.5 : 2026-10-15 이후
    • Opus 4.5 : 2026-11-24 이후

    공개 모델은 은퇴 최소 60일 전에 통보한다. 은퇴 날짜가 지난 모델에 보낸 요청은 실패한다

  5. 강제 도구 호출(tool_choice any·tool) : Opus 5.5 · Fable 5.1 · Mythos 5.1 은 모든 요청에서 400 을 낸다. 대신 auto 와 strict tool use 를 쓴다. 고정 JSON 응답이면 structured outputs 를 쓴다. auto 가 어느 도구를 고를지는 여전히 프롬프트가 좌우한다 시험 뒤 변경 Fable 5.1 2026-09-01 · Opus 5.5 2026-09-22, 2026-09-28 조회

    다른 모델에서는 수동 extended thinking(type: "enabled")과 any·tool 을 같이 못 쓴다. any·tool 이면 API 가 prefill 해서 tool_use 앞에 설명 문장이 나오지 않는다

더 깊이 : 판단 규칙 · 상황 변수 (설명)

판단 규칙

조건답등급근거
뒤쪽 코드가 응답을 JSON 으로 파싱해야 한다JSON outputs 를 쓴다 (output_config.format + type: "json_schema")structured-outputs
도구 인자 타입이 자꾸 틀린다("2" vs 2)strict tool use 를 쓴다 (strict: true)strict-tool-use
분류 라벨을 정해진 값 중 하나로 받는다enum 필드를 가진 도구나 structured outputs 를 쓴다prompting-best-practices en-full
prefill 코드가 새 모델에서 400 이 난다모양은 structured outputs 로 옮긴다. 머리말은 시스템 프롬프트 지시로, 이어 쓰기는 user 메시지로 옮긴다en-full · errors
지문 모델이 4.5 세대이고 thinking 이 꺼져 있다prefill 이 동작한다(옛 코드가 틀린 것이 아니다)en-full "Earlier models continue to support prefills" · thinking
Opus 5.5·Fable 5.1·Mythos 5.1 에 tool_choice any·tool 을 쓴다400 이 난다. auto 와 strict tool use 를 쓰거나 structured outputs 를 쓴다시험 뒤 변경define-tools · errors · 릴리스 노트
stop_reason 이 refusal·max_tokens 다스키마와 안 맞을 수 있다. stop_reason 으로 먼저 분기하고, max_tokens 면 늘려서 재시도한다structured-outputs
enum 을 비교한다대소문자를 무시하고 비교한다. 대소문자만 다른 값은 두지 않는다structured-outputs
출력 JSON 에 근거 인용(Citations)도 달고 싶다같이 켤 수 없다(400)structured-outputs
HIPAA 조직에서 structured outputs 를 쓴다쓸 수 있다. PHI 는 스키마(속성 이름·enum·const·pattern)에 넣지 않는다structured-outputs

상황 변수

변수값답 쪽등급근거
모델 세대Claude 4.6 이후 · Mythos Previewprefill 에 400 이 난다errors
모델 세대Opus 4.5 · Sonnet 4.5 · Haiku 4.5prefill 이 된다 (thinking 이 꺼져 있을 때)계산"4.6 이후" 규칙 × model-deprecations 목록 en-full
모델Opus 5.5 · Fable 5.1 · Mythos 5.1강제 도구 호출에 400 이 난다시험 뒤 변경define-tools
thinking수동 extended thinking(type: "enabled")any·tool 을 쓸 수 없다define-tools
thinking켜져 있다(어느 방식이든)prefill 을 쓸 수 없다thinking
필요한 것보장이 필요하다(뒤쪽 파서가 재시도하지 못한다)structured outputs 를 쓴다structured-outputs
필요한 것대체로 맞으면 된다. 재시도할 수 있다프롬프트로 구조를 요청하고 재시도하는 것도 공식 경로다en-full "Try asking the model to conform… especially if implemented with retries"
스키마자주 바뀐다바꿀 때마다 첫 요청에 컴파일 지연(latency)이 있고, 프롬프트 캐시가 무효가 된다structured-outputs
스키마strict 도구 20개 초과 · 선택 파라미터 24 초과 · union 16 초과한도를 넘는다. 중요한 도구만 strict 로 둔다. 선택 파라미터를 되도록 required 로 바꾼다. 요청을 나눈다structured-outputs
플랫폼Amazon Bedrockstructured outputs 는 Opus 4.6·Sonnet 4.6·Sonnet 4.5·Opus 4.5·Haiku 4.5 만 지원한다(해석은 미해결 2)structured-outputs en-full

연습 문제

주문 메일에서 JSON 을 뽑던 파이프라인을 Sonnet 5 로 옮기자4.6 이후 모델 모든 요청이 400 invalid_request_error 다. 코드는 마지막 assistant 턴에 "{" 를 채워 JSON 을 받던prefill 방식이다. 팀은 "prefill 되는 옛 모델로 고정하자"고 한다. 무엇으로 옮길까?

시험 대비

함정

  • "prefill 을 더 길게 채운다" 는 함정이다. 4.6 이후 모델은 마지막 assistant 턴 prefill 자체가 400 이다. 길이와 상관없다
  • "prefill 되는 옛 모델로 영구 고정한다" 는 함정이다. 4.5 세대는 최소 지원 기한만 정해진 상태다. 은퇴 뒤에는 요청이 실패한다
  • "prefill 이 보이면 모델 불문 무조건 틀렸다" 는 함정이다. 이전 모델(4.5 세대)은 prefill 을 지원한다. 지문의 모델명과 thinking 을 켰는지부터 본다
  • "JSON 을 정규식으로 긁고 재시도 횟수를 늘린다" 는 함정이다. structured outputs 면 스키마 위반 재시도가 필요 없다
  • "structured outputs 면 무조건 스키마대로 오고, enum 도 글자 그대로 온다" 는 함정이다. refusal·max_tokens 예외가 있다. enum 대소문자도 보장하지 않는다
  • "분류 도구를 tool_choice: tool 로 못 박는다" (CCA-F 식) 는 함정이다. Opus 5.5·Fable 5.1·Mythos 5.1 에서는 400 이다. auto 와 strict 를 쓴다 시험 뒤 변경
  • "근거도 달게 Citations 를 같이 켠 JSON" 은 함정이다. output_config.format 과 Citations 를 같이 켜면 400 이다
  • Skilljar API 강의(2025 제작 추정)의 "prefill "``json" + stop sequence "``" 로 깨끗한 JSON" 은 함정이다. 4.6 이후 모델에서는 400 이다. 지금은 structured outputs 를 쓴다

신호

"Structured outputs guarantee schema-compliant responses through constrained decoding"

"Requests with prefilled assistant messages to these models return a 400 error."

"Earlier models continue to support prefills, and adding assistant messages elsewhere in the conversation is not affected."

"For classification tasks, use either tools with an enum field containing your valid labels or structured outputs."

"Structured outputs don't guarantee the capitalization of string enum and const values"

"Claude Opus 5.5, Claude Fable 5.1, and Claude Mythos 5.1 don't support forced tool use." (docs errors)

보통은 JSON 모양을 structured outputs 로 보장하지만, 4.6 이전 모델은 prefill 이 아직 돌고, 재시도해도 되는 사내 도구는 프롬프트로 되며, Citations 와 같이 켜면 400.
그림으로 보기 (AI 생성 · Codex · 누르면 크게) — 자세한 조건은 아래 '더 깊이'에 있어요
더 깊이 : 뒤집히는 때 · 오답 재료 (설명)

뒤집히는 때

1. prefill 코드가 아직 맞는 때

  • 조건 : 지문은 "Haiku 4.5 · thinking 꺼짐 · prefill '{' 로 받는 분류 파이프라인이 잘 돈다" 고 한다. 보기는 "prefill 은 무조건 400 이니 즉시 지운다" 다.
  • 판단 : Haiku 4.5 는 4.6 이전 모델이라 prefill 이 동작한다. "즉시 지운다" 는 과하다. 다만 옮길 계획은 필요하다(은퇴 경로).
  • 계산 : Haiku 4.5 는 2026-09-28 에 Active 이고, 은퇴 "하한일"은 2026-10-15 다. 공개 모델은 은퇴 최소 60일 전에 통보한다. 그래서 오늘(9/28) 통보가 나와도 실제 은퇴는 빨라야 11/27 이다. 하한일(10/15)보다 60일 규칙이 더 늦다.
  • 전제 : 60일 통보 규칙이 그대로 지켜진다고 본다. Anthropic 운영 플랫폼 기준이다(Bedrock·Google Cloud 는 자체 일정).
  • 등급 : (규칙·날짜) · 계산(11/27)
  • 근거 : prompting-best-practices en-full · model-deprecations en-full

2. CCA-F 식 "첫 턴 tool_choice: tool 로 못 박기" 가 틀리는 때

  • 조건 : 지문 모델이 Opus 5.5(또는 Fable 5.1)다. 추출 도구를 반드시 부르게 하려고 {"type": "tool", "name": "extract_invoice"} 를 쓴다.
  • 판단 : 모든 요청에서 400 이 난다. auto 와 strict tool use 로 입력 모양을 보장하고, 부를지는 프롬프트로 이끈다. 응답 모양만 필요하면 structured outputs 를 쓴다.
  • 등급 : 시험 뒤 변경(Fable 5.1 2026-09-01 · Opus 5.5 2026-09-22). 가이드(2026-07) 기준 시험은 옛 동작(tool 강제 가능)으로 물을 가능성이 있다
  • 근거 : define-tools · errors · 릴리스 노트

3. 스키마 보장보다 프롬프트 + 재시도가 충분한 때

  • 조건 : 사내 도구이고 하루 요청이 적다. 형식 실패가 나면 다시 부르면 되는 흐름이다. 실패율은 2%(가정)다.
  • 계산 : 재시도로 기대 호출 수 = 1 / (1 − 0.02) ≈ 1.02 다. 그래서 토큰이 약 2% 더 든다. 두 번 연속 실패할 확률은 0.02² = 0.04% 다. structured outputs 는 매 요청에 형식 설명 시스템 프롬프트 토큰이 더 붙는다. 스키마를 바꾸면 첫 요청에 컴파일 지연도 있다.
  • 판단 : 공식 마이그레이션 글도 "먼저 구조를 따르라고 말해 보기(재시도 포함)" 를 든다. 그래서 보장이 필요 없는 곳에서는 프롬프트가 설 자리가 있다. 뒤쪽 파서가 재시도할 수 없거나 실패가 사고로 이어지면 structured outputs 를 쓴다.
  • 전제 : 실패율 2% 는 가정값이다(공식 숫자 없음). 재시도 지연은 문제가 되지 않는다고 본다.
  • 등급 : 계산(가정 포함)
  • 근거 : en-full · structured-outputs

4. 근거 인용이 꼭 필요한 때

  • 조건 : 문서 질의 답을 JSON 으로 받고, 인용(Citations)도 달고 싶다.
  • 판단 : output_config.format 과 Citations 를 같이 켜면 400 이다. 둘 중 하나를 고르거나 다른 경로가 필요하다.
  • 등급 : (400) · 대안은 미해결 3
  • 근거 : structured-outputs

오답 재료

오답왜 끌리나왜 틀리나등급근거
"prefill 을 더 길게 채운다"더 많이 채우면 더 잘 따를 것 같다4.6 이후는 마지막 assistant 턴 prefill 자체가 400 이다errors
"prefill 되는 옛 모델로 영구 고정"코드를 안 고쳐도 된다4.5 세대는 최소 지원 기한이 정해진 상태다. 은퇴 뒤에는 요청이 실패한다model-deprecations en-full
"prefill 이 보이면 모델 불문 오답"'4.6 부터 400' 을 과하게 일반화했다이전 모델은 지원한다. 지문의 모델명과 thinking 을 먼저 본다en-full
"JSON 을 정규식으로 긁고 재시도 횟수를 늘림"당장 고치기 쉽다structured outputs 면 스키마 위반 재시도가 필요 없다structured-outputs
"structured outputs 면 무조건 스키마대로"'보장' 이라는 말 때문이다refusal·max_tokens 예외가 있다structured-outputs
"enum 이니 글자 그대로 비교"제약 디코딩이니 정확할 것 같다대소문자는 보장하지 않는다. 다른 대소문자가 오류 없이 온다structured-outputs
"Opus 5.5 에서 tool_choice: tool 로 추출 강제"CCA-F 에서 배운 정답이다400 이 난다. auto 와 strict 를 쓴다시험 뒤 변경define-tools
"Citations 도 켜서 근거 달린 JSON"둘 다 좋은 기능이다같이 켜면 400 이다structured-outputs
"환자별 값을 enum 에 넣어 분류"스키마로 딱 맞출 수 있다스키마는 따로 캐시돼 PHI 보호가 없다structured-outputs
"스키마를 통과했으니 값도 맞음"검증을 통과했다는 느낌이 든다모양만 보장한다. 합계와 필드 위치는 뒤쪽에서 검증한다업계 일반CCA-F 노트 4.3
"prefill "```json" + stop sequence" (Skilljar 2025)공식 강의 요령이다4.6 이후 모델에서 400 이다. 지금은 structured outputs 를 쓴다Skilljar API 287732 · errors

참고

더 깊이 : CCA-F · 출처 · 상태 · 미해결 (참고)

CCA-F

겹침. CCA-F 는 tool_use + JSON 스키마를 구현으로 물었다(tool_choice tool/any 강제 · strict · enum 대소문자 · 필수 vs nullable). 여기서는 "prefill 이 400 난 코드를 무엇으로 옮기나 · 옛 모델 고정이 답인가"를 모델 수명·마이그레이션 판단으로 묻는다. CCA-F 식 tool_choice 강제가 Opus 5.5·Fable 5.1 에서는 400 이라는 것이 새 함정이다

출처

상태

  • 시험 뒤 변경 1곳(⑤ 강제 도구 호출 400)
  • 업계 일반 1줄

미해결

  1. 목록은 행동을 막는 수단으로 "strict 도구 사용" 을 훅(PreToolUse)과 함께 들었다. 그러나 공식 strict 는 도구 입력 모양만 보장한다(어떤 도구를 부를지·부르지 말지는 아니다, strict-tool-use). 카드에서는 행동 차단을 ◆ 안내(프롬프트) vs 강제(구성·코드) 로 넘겼다.
  2. Bedrock 지원 모델 줄이 "Claude in Amazon Bedrock"(새 플랫폼)과 "Bedrock legacy" 중 어디를 뜻하는지 원문만으로는 모호하다. 확인 방법은 claude-in-amazon-bedrock 페이지의 기능 표를 대조하는 것이다.
  3. Citations 와 구조화 JSON 을 함께 원할 때의 공식 대안 문장은 못 찾았다(structured-outputs 원문에는 "incompatible" 까지만 있다).
  4. 목록 영어 신호 "Claude treats them as context, not enforced configuration." 은 원문에 있다(claude-code-memory). 그러나 Claude Code 메모리 문맥이다. 이 카드가 아니라 D5 ◆ 안내(프롬프트) vs 강제(구성·코드) 몫이라 인용하지 않았다.