
AI가 JSON으로 답했는데 자동화가 멈췄나요? 중괄호보다 먼저 다음 단계에 필요한 항목이 모두 들어 있는지 보세요. JSON 문법이 맞아도 담당자 하나가 빠지면 처리할 수 없거든요.
이번 글은 회의록에서 할 일·담당자·마감일을 뽑는 가상 예시입니다. API 호출이나 유료 결제 없이, Python으로 출력 형식을 검사하는 방법을 다룹니다.
할 일은 task, 담당자는 owner, 마감일은 due_date로 받는다고 해볼게요. 날짜가 없으면 임의로 채우지 않고 null로 남깁니다.
JSON Schema는 이렇게 “어떤 항목을 어떤 형식으로 받을지” 적어 둔 규칙입니다. 아래 예시의 required는 빠지면 안 되는 항목, additionalProperties: false는 정하지 않은 항목을 받지 않겠다는 뜻이에요.
{
"type": "object",
"properties": {
"task": {"type": "string"},
"owner": {"type": "string"},
"due_date": {"type": ["string", "null"]}
},
"required": ["task", "owner", "due_date"],
"additionalProperties": false
}
due_date라는 항목은 꼭 있어야 하지만 값은 null일 수 있습니다. 항목 자체가 없는 것과 “아직 모른다”를 구분하는 셈이죠. 담당자도 모를 수 있는 업무라면 owner에도 null을 허용할지 먼저 정하세요.
Python과 jsonschema 패키지가 있는 환경에서 확인할 수 있습니다. 위 JSON을 schema.json 파일로 저장하고 같은 폴더에서 아래 코드를 실행해 보세요. 실제 고객 자료 대신 가상 데이터를 쓰면 됩니다.
import json
from jsonschema import Draft202012Validator
with open("schema.json", encoding="utf-8") as f:
schema = json.load(f)
raw = '{"task":"자료 검토","owner":"담당자 A","due_date":null}'
try:
data = json.loads(raw)
errors = list(Draft202012Validator(schema).iter_errors(data))
print("PASS" if not errors else f"SCHEMA_FAIL: {errors[0].validator}")
except json.JSONDecodeError:
print("JSON_PARSE_FAIL")
이 글의 가상 데이터 네 개를 로컬 검증기로 확인한 결과, 세 항목이 있으면 PASS, owner를 지우면 required 오류, priority를 추가하면 additionalProperties 오류가 나왔습니다. 닫는 중괄호를 빼면 JSON_PARSE_FAIL이고요.
이 검사는 AI의 답변 성능을 측정한 테스트가 아닙니다. API를 호출하지 않고, 준비한 문자열을 검증기에 넣어 본 결과입니다. 사용한 환경은 jsonschema 4.26.0입니다.
OpenAI API의 JSON mode는 JSON 형식을 얻는 기능이고, 지정한 항목까지 맞추려면 지원 모델의 Structured Outputs를 확인해야 합니다. 공식 문서에서는 strict 스키마의 필드를 required로 지정하고, 선택적인 값은 null을 허용하는 방식으로 설명합니다.
Responses API와 Chat Completions API는 설정 위치가 다르니, 사용 중인 API의 공식 예시를 확인하세요. 거절되거나 응답이 중간에 끊긴 경우도 따로 처리해야 합니다. 이 글에서는 API 계정별 동작이나 요금은 시험하지 않았습니다.
스키마를 통과해도 내용은 틀릴 수 있어요. 위 예시의 due_date는 문자열만 검사하므로 “2026-99-99”도 그대로 통과합니다. 실제 날짜인지, 회의록에 근거가 있는지는 다음 검사에서 확인해야 합니다.
지금 쓰는 자동화에서 꼭 필요한 항목 하나를 골라보세요. 정상 출력과 그 항목을 지운 출력을 나란히 넣어 누락을 실제로 잡는지 확인하는 것부터 시작하면 됩니다.
확인일: 2026년 10월 9일. 근거: OpenAI Structured Outputs, JSON Schema 객체 규칙, jsonschema 검증기 문서.
| Codex AGENTS.md가 안 먹힐 때, 파일 위치부터 확인하세요 (0) | 2026.10.09 |
|---|---|
| 솔로 GP와 AI — 혼자 운용할 때 끝까지 남는 투자 판단의 책임 (0) | 2026.10.08 |
| 노트북LM 자료 동기화 — 원문을 고친 뒤 답변까지 확인하는 순서 (0) | 2026.10.08 |
| 커서 프라이버시 모드 — 학습 제외와 코드 전송은 다른 조건입니다 (0) | 2026.10.05 |
| 엔비디아 팔란티어 공급망 AI — 전문가 판단을 학습하는 구조 (0) | 2026.10.04 |