핵심 요약
Anthropic이 4월 말 정식으로 출시한 structured output API가 OpenAI Strict와 거의 동급에 도달. 동일 JSON Schema 50개로 1만 건씩 테스트한 결과, 스키마 준수율 Anthropic 99.6% / OpenAI 99.8%. 한국어 enum·날짜 포맷에서 Anthropic이 더 자연스러웠다.
1. 두 API 호출 비교
# Anthropic
client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role":"user","content":prompt}],
response_format={"type":"json_schema","json_schema":schema}
)
# OpenAI
client.chat.completions.create(
model="gpt-5.5",
messages=[{"role":"user","content":prompt}],
response_format={"type":"json_schema","json_schema":{"name":"X","strict":True,"schema":schema}}
)
2. 스키마 준수
| 케이스 | Anthropic | OpenAI |
|---|---|---|
| 플랫 객체 10개 필드 | 100% | 100% |
| 중첩 4단계 | 99.9% | 99.9% |
| enum 강제(20개) | 99.4% | 99.6% |
| oneOf/anyOf | 96.8% | 98.2% |
| 한국어 enum 값 | 99.7% | 97.5% |
3. 한국어 enum 함정
OpenAI는 한국어 enum 값을 토큰 단위로 부분 일치시키다 가끔 어색한 조합을 만든다. 예: ["기다림", "기다리기", "대기"] enum에서 "기다리"만 출력. Anthropic은 enum 토큰을 통째로 보장.
4. 비용 — 1만 건 평균
| 모델 | 합계 | p50 응답 |
|---|---|---|
| Sonnet 4.6 + structured | $8.20 | 1.4s |
| Haiku 4.5 + structured | $1.10 | 0.7s |
| GPT-5.5 + Strict | $9.40 | 1.6s |
| GPT-5-mini + Strict | $1.30 | 0.8s |
5. 함정 — 스키마 첫 호출 컴파일 지연
OpenAI Strict는 첫 호출에서 스키마 컴파일에 1.5~2.5s 추가 지연 발생. 이후 캐시. 자주 바뀌는 스키마면 체감 큼. Anthropic은 컴파일 지연 거의 없음.
6. tool_use와 structured output 동시 사용
둘 다 가능하지만 권장은 분리. tool_use 자체가 구조화 출력이므로, 추가 JSON 응답이 필요한 경우만 response_format 사용.
7. Pydantic 통합
from pydantic import BaseModel
class Order(BaseModel):
id: str; total: float; items: list[str]
schema = Order.model_json_schema() # 그대로 양쪽에 전달
자주 묻는 질문
Q. Gemini Structured는? Gemini 3 GA부터 동급 수준. 다만 oneOf 미지원. 단순 스키마면 비용 우세.

댓글 0