AI / LLM Dev Tools

구조화 출력 스키마 검사

JSON 스키마 본문과 대상 프로필을 선택하면 경로별 진단을 보여 줍니다. 함수는 parameters 객체만 입력하세요.

구조화 출력 스키마

JSON Schema

검증 보고서

JSON 스키마를 입력해 검사를 시작하세요.

입력과 참조는 이 브라우저에서 처리하며 검증 데이터를 전송하거나 원격 참조를 가져오지 않습니다.

스키마 본문을 붙여 넣으세요. 함수는 parameters 안의 객체만 입력합니다.

규칙 확인일: 2026-09-15. 공식 규칙

로컬 사전 검사이며 API 수락 여부나 특정 모델의 지원을 보증하지 않습니다.

JSON 스키마를 입력해 검사를 시작하세요.

응답 타입을 잘 정의했는데도 모델 API에서 거절되는 경우가 있습니다. 구조화 출력 스키마 검사는 JSON 문법이나 메타 구조의 문제와 제공업체가 요구하는 조건을 나누어 보여 줍니다. 먼저 진단 경로를 보고 어느 객체의 계약을 바꿔야 하는지 확인하세요.

JSON 스키마 검증을 통과한 선택 필드가 strict 모드에서는 필수 속성이 될 수 있습니다. 구조화된 출력이나 함수 호출을 다른 모델로 옮길 때 특히 중요한 차이입니다. 원본을 유지한 채 대상을 바꾸면 어떤 문제가 제공업체에 따라 달라지는지 비교할 수 있습니다.

구조화 출력 스키마 사전 검사가 필요한 이유

유효한 정의와 대상 조건을 따로 확인

일반 JSON Schema는 선택 필드나 추가 키를 허용할 수 있습니다. OpenAI strict에 쓰는 구조화 출력 스키마에는 별도 조건이 붙습니다. 메타 구조 판정과 대상 진단을 나누면 쉼표만 고친 뒤 같은 API 오류를 만나는 일을 줄일 수 있습니다.

동일한 구조 트리가 일반 검사를 통과하지만 다른 검사에서는 두 가지 분기에 주의 표시가 나타납니다.

계약을 보존하면서 프로필 비교

OpenAI에서 Gemini로 바꾸면 결과를 다시 계산합니다. required를 자동으로 추가하거나 알 수 없는 키워드를 지우지는 않습니다. 원문이 그대로 남으므로 제안을 읽은 뒤 수신 코드가 새로운 데이터 범위를 처리할 수 있는지 판단하고 수정할 수 있습니다.

변하지 않은 스키마가 두 대상 프로필로 나뉘며 서로 다른 진단 표시가 나타납니다.

예제로 필수 조건과 갱신 시점 익히기

01

매개변수 본문만 준비

OpenAI 함수 프로필에는 parameters 안의 객체만 붙여 넣습니다. name, strict 또는 function을 포함한 전체 요청은 검사 대상이 아닙니다. 함수 이름과 호출 방식은 실제 통합 코드에서 확인해야 하며, 이 화면은 도구를 실행하지 않습니다.

02

두 예제를 번갈아 확인

정상 예제에는 필수이면서 null을 허용하는 값이 있습니다. 문제 예제는 OpenAI 객체 조건이 빠져 있어 진단이 나오며 Gemini로 바꾸면 결과가 달라집니다. 예제와 지우기는 대체될 내용을 미리 본 뒤 적용하므로 원본을 확인할 기회가 있습니다.

03

현재 입력의 보고서만 사용

자동 검사는 편집이 멈춘 뒤 350ms 후 실행됩니다. 끄면 검사 버튼과 Ctrl/Cmd + Enter를 사용할 수 있습니다. 입력이나 대상이 바뀌면 이전 결과의 복사와 다운로드가 즉시 비활성화됩니다. 실행 취소는 입력, 대상 및 결과를 함께 복원합니다.

진단과 근거를 함께 검토

메타 구조부터 검사

번들에 포함된 2020-12 메타 스키마가 키워드 값의 타입과 구조를 검사합니다. 중복 키와 JavaScript에서 반올림될 숫자는 거부합니다. 주석, 마지막 쉼표, 코드 블록은 조용히 고치는 대신 문법 오류로 처리하고 위치를 표시합니다.

중첩 정의의 경로 표시

JSON Pointer 경로를 사용하며 속성명에 들어 있는 슬래시와 물결표를 이스케이프합니다. 같은 문서 안의 참조 대상이 실제 스키마 위치인지 확인합니다. allOf라는 업무 속성명은 조합 키워드와 구분하며 enum 문자열을 스키마로 재해석하지 않습니다.

검사하지 못한 규칙도 표시

두 OpenAI 프로필은 미세 조정되지 않은 strict 모드를 대상으로 합니다. Gemini는 공개 JSON Schema 지원 범위를 사용합니다. 확인하지 못한 키워드와 format은 검토 필요로 남기므로, 조용히 무시된 규칙을 지원 보증으로 오해하지 않습니다.

전체 진단을 JSON으로 저장

보고서에는 대상, 규칙 확인일, 메타 구조 판정, 속성 수와 진단 코드가 담깁니다. 긴 목록은 먼저 50개를 보여 주고 필요하면 더 펼칠 수 있습니다. 복사하거나 다운로드할 때는 화면에 보이는 부분뿐 아니라 전체 보고서가 포함됩니다.

검사가 다루는 범위와 한도

실제 API 테스트는 별도
규칙 확인일은 2026-09-15입니다. 계정 권한, 엔드포인트, SDK 정규화, 거절 응답과 특정 모델 동작을 인증하지 않습니다. 미세 조정 OpenAI, Anthropic, Gemini 함수 호출과 프록시는 프로필이 없으며 실제 통합 환경에서 확인해야 합니다.
2020-12와 로컬 포인터
다른 draft가 명시되면 지원 범위 밖으로 보고하며 자동 마이그레이션하지 않습니다. 외부 참조나 이름 있는 앵커는 가져오지 않습니다. 재귀 정의는 유한하게 검사하지만 가능한 모든 응답을 펼쳐 원격 복잡도 예산까지 증명하는 것은 아닙니다.
브라우저 처리 예산
입력은 500000자, 파싱 노드 50000개, JSON 중첩 40단계까지입니다. Worker가 5초를 넘거나 진단이 1000개를 넘으면 성공으로 잘라 내지 않고 검사를 멈춥니다. 이 한도는 OpenAI의 속성, 열거, 문자열, 중첩 한도와 구분해 표시합니다.
의미를 바꾸는 자동 수정 제외
required 추가, null 허용 또는 추가 키 금지는 데이터 계약을 바꿉니다. 이 도구는 제안만 합니다. null을 허용해도 키 생략이 허용되지는 않습니다. enum이 있는 경우 null이 열거에도 필요한지 확인한 뒤 호출 측 처리와 함께 수정하세요.
모델 응답값 검증은 별도
검사하는 것은 모델에 보낼 정의입니다. 응답 인스턴스를 검증하거나 샘플에서 스키마를 추론하지 않으며, 답변 생성과 JSON 복구도 하지 않습니다. 응답이 문법상 유효해도 업무적으로 틀릴 수 있으므로 실제 값을 받은 뒤 도메인 검증을 이어 가세요.

구조화 출력 스키마 질문과 답변

OpenAI strict 모드가 모든 필드를 required로 요구하는 이유는 무엇인가요?

엄격한 출력에서는 객체의 형태를 고정하기 위해 선언된 키를 필수로 만듭니다. 알 수 없는 값은 계약에 맞는 경우 null로 표현하세요. enum을 지정했다면 열거 값에도 null을 허용해야 할 수 있습니다. 선택 필드를 생략하는 것과 필수 필드에 null을 넣는 것은 다릅니다.

제공업체 API로 보내기 전에 스키마를 검사할 수 있나요?

문법과 메타 구조 검사 후 대상별 규칙을 사전 검사할 수 있습니다. 오류뿐 아니라 미확인 항목도 검토하세요. 마지막에는 실제 사용할 엔드포인트와 모델에서 요청을 시험해야 합니다. 로컬에서 문제가 없다는 결과만으로 계정이나 모델의 동작까지 보증할 수는 없습니다.

구조화된 출력과 도구 사용은 어떻게 다른가요?

구조화된 출력은 모델의 최종 답변 형식을 정합니다. 도구 사용은 애플리케이션이 실행할 함수의 인수를 만듭니다. 이 페이지의 OpenAI 프로필은 공통 strict 스키마 조건을 검사하며, 함수 프로필은 parameters만 받고 실제 함수나 외부 서비스를 실행하지 않습니다.

완전한 스키마 대신 JSON 샘플을 넣어도 되나요?

샘플만으로는 어떤 필드를 생략할 수 있는지, 추가 키가 허용되는지, 값의 범위가 무엇인지 알 수 없습니다. type와 properties 등으로 계약을 표현한 스키마가 필요합니다. 포함된 예제를 시작점으로 사용하되 실제 소비자 코드가 필요로 하는 조건을 직접 정의하세요.

JSON.parse()나 린터로 충분하지 않나요?

파서는 JSON 문법을 확인합니다. properties와 required의 스키마 구조, 참조 대상의 존재, 제공업체의 조합 키워드 지원 여부는 확인하지 않습니다. 따라서 문법상 유효한 문서도 이 도구에서는 구조 오류 또는 대상별 진단을 만들 수 있으며 응답값의 업무 검증도 별도로 필요합니다.

누락된 사례가 있나요?

첫 진단부터 계약을 점검하세요

구조화 출력 스키마 검사기로 돌아가 실제 사용할 대상을 고르세요. 필수 여부, null 허용과 추가 키 규칙을 바꾸기 전에 데이터를 받는 코드가 변경된 계약을 처리할 수 있는지 함께 확인하세요.