문제점

LLM은 텍스트 생성에 뛰어나지만, 애플리케이션은 종종 JSON 객체, 배열, 타입 값 등 구조화된 데이터가 필요합니다. 신뢰할 수 있는 구조화된 출력을 얻으려면 구체적인 기법이 필요합니다.

접근 1: 프롬프트 엔지니어링

모델에게 JSON 형식으로 응답하도록 요청하세요:

  • 프롬프트에서 정확한 스키마를 명시하세요.
  • 입출력 쌍의 예시를 포함하세요.
  • "유효한 JSON 로만 응답하세요. 설명은 없어."

접근법 2: 함수 호출 / 도구 사용

대부분의 주요 API는 이제 함수 호출을 지원합니다:

  • 기대 출력에 대한 JSON 스키마를 정의합니다.
  • 모델은 스키마에 맞는 출력으로 제한됩니다.
  • OpenAI, Anthropic, Google 및 대부분의 제공업체와 협력합니다.

접근법 3: 제한된 디코딩

아웃라인과 LMQL과 같은 라이브러리는 모델이 유효한 출력을 내도록 강제합니다:

  • Pydantic 모델 또는 JSON 스키마를 정의합니다.
  • 디코딩 과정은 토큰 방식으로 스키마 토큰을 강제합니다.
  • 유효한 출력 구조의 100% 보장.

접근 4: 강사 도서관

Instructor 라이브러리는 모든 LLM API를 Pydantic 검증으로 감싸줍니다:

  • Pydantic으로 데이터 모델을 정의하세요.
  • 강사는 재시도와 검증을 자동으로 처리합니다.
  • OpenAI, Anthropic, Gemini, 로컬 모델을 지원합니다.

모범 사례

  • 항상 출력을 스키마와 대조하여 검증합니다.
  • 제한된 옵션이 있는 필드에는 열거 유형을 사용한다.
  • 잘못된 응답에 대한 재시도 논리를 포함합니다.
  • 스키마를 단순하게 유지하세요 — 중첩된 구조는 오류율을 증가시킵니다.
  • 신뢰성을 측정하기 위해 50+ 예제로 테스트합니다.