콘텐츠로 이동

프롬프트·JSON Schema 검증기

프롬프트 템플릿은 본문에 쓴 변수와 실행 시 제공하는 변수 정의가 일치해야 한다. 구조화 출력을 요청한다면 JSON 문법뿐 아니라 필수 속성, 타입, 열거값과 추가 속성 허용 여부를 JSON Schema로 명시하는 편이 안전하다. 이 도구는 두 검사를 한 화면에서 수행한다.

프롬프트와 변수

변수는 {{variable_name}} 또는 ${variable_name}로 표기한다. 입력 내용은 브라우저 밖으로 전송하거나 저장하지 않는다.

구조화 출력

JSON Schema Draft 2020-12를 검사한다. 예시 출력은 스키마와 실제 값 한 건이 맞는지 확인할 때 사용한다.

예시 프롬프트와 JSON Schema를 검사할 수 있다.

프롬프트 변수는 {{variable_name}}${variable_name} 두 형식을 인식한다. 본문에서 사용했지만 정의하지 않은 변수, 정의만 하고 사용하지 않은 변수, 허용되지 않는 이름과 중복 정의를 구분한다.

변수 정의 JSON은 다음 두 형식을 지원한다.

[
{
"name": "customer_message",
"required": true,
"description": "분류할 고객 문의 원문"
}
]
{
"customer_message": {
"required": true,
"description": "분류할 고객 문의 원문"
}
}

출력 스키마는 JSON Schema Draft 2020-12 메타스키마로 검사한다. 스키마가 유효하고 예시 출력 JSON을 입력한 경우 예시가 required, type, enum, additionalProperties, 수치·문자열 범위와 형식 제약을 만족하는지 검사한다.

  • 차단 오류: JSON 문법, 변수 정의 구조 또는 JSON Schema 자체가 유효하지 않아 해당 검사를 완료할 수 없다.
  • 주의: 미정의 변수나 스키마와 맞지 않는 예시 출력처럼 실행 전에 수정해야 할 가능성이 높다.
  • 정보: 정의했지만 사용하지 않은 변수처럼 결과를 바로 차단하지 않지만 정리할 수 있는 항목이다.

오류 위치의 / 경로는 JSON Pointer와 같은 방식으로 읽는다. example:/items/0/name은 예시 출력의 items 배열 첫 항목에 있는 name 값을 가리킨다. prompt:3:5는 프롬프트 3행 5열 부근을 뜻한다.

이 도구는 프롬프트의 사실성, 업무 적합성, 탈옥 내성이나 모델별 지시 이행률을 평가하지 않는다. JSON Schema와 예시 한 건이 일치해도 실제 모델이 항상 유효한 JSON을 생성한다는 뜻은 아니다. 모델 API가 지원하는 구조화 출력 키워드의 범위도 공급자와 버전에 따라 다르므로 실제 API 문서를 함께 확인해야 한다.

원격 $ref는 네트워크에서 불러오지 않는다. 검사할 정의는 같은 스키마의 $defs에 넣거나 로컬에서 해석 가능한 참조로 구성해야 한다. 비동기 스키마도 지원하지 않는다.

검사는 브라우저 안에서만 수행한다. 프롬프트, 변수 정의, 출력 스키마와 예시 출력은 서버로 전송하거나 브라우저 저장소에 기록하지 않으며 URL에도 포함하지 않는다. 원문 제외 보고서 복사는 문자 수, 변수 이름, 오류와 가정만 복사하고 프롬프트 및 입력 JSON 원문은 제외한다.

검사 버전은 prompt-schema-v1이다. JSON Schema 해석은 Draft 2020-12를 기준으로 하며, 프롬프트 변수 규칙은 AI Learning Wiki의 템플릿 표기 계약을 따른다.

실제 서비스에서는 이 검사와 별도로 모델 응답을 런타임에서 다시 검증하고, 실패 시 재시도·수정 요청·안전한 기본값 처리 정책을 둬야 한다. 스키마가 지나치게 크거나 정규식 제약이 복잡하면 브라우저와 모델 API 양쪽에서 처리 비용이 늘어날 수 있다.