strict=True 는 production default 야. Strict 없이는 모델이 가끔 schema 와 거의 매칭하는 parameters 를 돌려줘 — almost. Strict 에선 API 가 모델의 첫 시도를 거부하고 corrected 시도 강제. Cost 살짝 더, defensive 파싱이 영원히 사라짐.
additionalProperties: false 필수
Strict mode 는 모든 object schema 에 additionalProperties: false 요구. 빠뜨리면 API 가 tool 정의 자체를 reject — 모델 호출 전.
Failure case 직접 봐
enum field 가진 tool, strict 없이 invalid enum 유도하는 prompt 보내. 가끔 invalid 값 돌아옴. Strict 켜고 같은 prompt — API 가 bad call 을 dev 에 도달 전 reject. 한 번 보면 strict 없는 tool 못 박아.
Trade-off
Strict 는 모델의 첫 시도가 거부될 때 internally retry — slightly higher latency, slightly higher cost. 그 cost 를 내고 'JSON output 에 쓰레기 끼는 사고' 가 통째로 사라지는 게 거래.