AI 출력이 JSON을 뒤집는 가장 흔한 이유는 "JSON을 이해하지 못해서"가 아니라, 당신이 제시한 목표가 너무 넓고, 필드가 너무 느슨하며, 내결함성이 보완되지 않기 때문입니다. 모델은 구조적으로 말하는 법을 배울 수 있지만, 자연스럽게 신뢰할 수 있는 직렬화 프로그램은 아닙니다. 필드, 타입, 누락 값 처리를 제한하지 않고 "json을 반환해 주세요"만 요청하고, 마지막에는 설명이 나오고, 인용문 하나가 줄어들며, 필드 이름이 갑자기 다시 쓰이는데, 이 모든 결과가 고빈도 결과입니다.
일반적인 롤오버 지점은 보통 이곳에서 발생합니다
| 질문 | 표면 현상 | 더 가능성이 높은 출처 |
|---|---|---|
| 다중 출력 캡션 | JSON은 전후로 자연어가 더 많습니다 | 구조체만 반환하는 것을 명시적으로 허용하지는 않았습니다 |
| 이 분야는 더 많다가 적은 것 사이를 오가며 변동합니다 | 때로는 열쇠가 없고, 때로는 이름이 바뀌기도 합니다 | 필드 정의와 필수 규칙은 명확하지 않습니다 |
| 이 유형은 불안정합니다 | 숫자는 문자열이 되고, 배열은 단일 값이 됩니다 | 제약 타입이나 널 정책은 없습니다 |
| 내용이 합법적이긴 하지만 쓸 만한 수준은 아니에요 | 형식은 맞지만 값이 더러워 | 비즈니스 체크섬 재시도 누락 |
더 안정적인 접근법은 즉각적인 단어가 아니라 소수의 제약 조건입니다
- 먼저, 영역을 좁히고, 정말 사용하고 싶은 키만 유지하며, 모델이 중첩된 객체 레이어를 10개 이상 생성하지 않도록 하세요.
- 각 필드는 타입에 대해 명확하게 명확히 작성되어 있으며, 필요한지 여부와 빈 문자열, 빈 배열, null 등 누락 시 채워야 할 항목이 명확히 적혀 있습니다.
- 모델에게 명확히 말하세요: JSON만 반환하고, 설명하지 말고, 마크다운하지 말고, 코드를 차단하지 마세요.
- 접근 쪽에서 파싱 검사를 하고, 실패하면 오류 메시지를 다시 보내고, 첫 번째 결과를 직접 믿지 않고 다시 시도하게 하세요.
"JSON 출력"을 "데이터는 신뢰할 수 있다"로 혼동하지 마세요.
구조는 맞지만, 셸이 JSON과 비슷하다는 점만 다릅니다; 필드가 빠졌는지, 값이 더럽은지, 의미가 틀렸는지 여부를 결정하는 것이 무엇일까요? 자동화된 프로세스의 경우, 프롬프트는 첫 번째 계층일 뿐이며, 그 다음에는 스키마 검사, 기본 정책, 실패한 재시도가 있습니다. AI를 안정적으로 만드는 핵심은 '더 조심하라'고 권유하는 것이 아니라, 형식적 제약과 프로그램 검증을 함께 보완하는 것입니다.