iBetter Books
수정

15장. 구조화 출력 JSON

앞 장에서 프롬프트만으로 출력 형식을 서술하는 방법을 다뤘다면, 이 장은 그 위 단계인 API 수준의 강제를 다룬다. 사람이 읽을 산문은 프롬프트 지시로 충분하지만, 다른 시스템이 기계적으로 파싱해야 하는 데이터는 "대체로 맞는" 형식으로는 부족하다. 한 번이라도 키가 빠지거나 타입이 어긋나면 후속 파이프라인이 깨진다. 구조화 출력은 모델이 지정된 JSON 스키마를 위반하는 토큰을 애초에 생성하지 못하도록 제약 디코딩을 적용해, 응답이 항상 유효한 형식을 따르도록 보장하는 기능이다. 현행 Anthropic API에서는 응답 형식을 output_config의 format으로 지정하며, 도구 입력에는 strict 옵션으로 같은 보장을 적용한다.

CCA-F 시험은 이 영역에서 "언제 프롬프트 지시 대신 스키마 강제를 선택하는가", "어떤 JSON Schema 키워드가 지원되고 어떤 것이 무시되는가", "스키마를 만족했는데도 출력이 깨지는 경우는 무엇인가"를 묻는다. 단순한 문법 암기가 아니라, 신뢰성이 필요한 자리에 올바른 메커니즘을 배치하는 의사결정을 평가한다. 이 장은 claude-opus-4-8 모델과 현행 Anthropic API의 동작을 전제로 서술하며, 구조화 출력이 지원되는 모델은 Claude Fable 5, Opus 4.8, Sonnet 4.6, Haiku 4.5다.

이 장을 마치면 다음을 할 수 있다.

  • 프롬프트로 형식을 서술하는 방식과 output_config의 format으로 스키마를 강제하는 방식을 구분하고, 각각이 적합한 상황을 판단할 수 있다.
  • JSON 스키마의 기본 구조와 필수 규약(additionalProperties false, required 배열)을 작성하고, 객체·배열·열거를 조합한 계층적 스키마를 설계할 수 있다.
  • 구조화 출력이 지원하는 JSON Schema 키워드와 지원하지 않는 제약(재귀, 수치·문자열 길이 제약 등)을 구분하고, 검증이 어느 계층에서 일어나는지 설명할 수 있다.
  • 스키마를 만족해도 출력이 깨지는 실패 모드(거부, 토큰 한도 초과)와 그 대처를 시험 관점에서 설명할 수 있다.
순서 절 제목 핵심 내용
01 JSON 스키마 정의 output_config.format, json_schema 형식, 기본 타입과 필수 규약
02 계층적 스키마 설계와 검증 중첩 객체·배열, 미지원 제약, 검증 계층, strict 도구
03 구조화 출력 신뢰성 확보 거부·토큰 한도, 스키마 컴파일과 캐시, 호환성과 조합