본문 바로가기
C.W.K.
Stream
Lesson 08 of 10 · published

출력 수리 반복

~14 min · outputs, repair

Level 0수련생
0 XP0/100 lessons0/14 achievements
0/120 XP to next level120 XP to go0% complete

엄격 모드도 값의 뜻까지 보장하지는 않아

구조화 출력의 엄격 모드는 JSON 문법과 스키마 모양을 지켜줘. 하지만 열거값을 잘못 고르거나 범위를 벗어나거나 업무 규칙을 어기는 일까지 막지는 못해. 그래서 검증기와 수리 반복은 여전히 필요해.

수리 반복의 기본 순서

  1. 출력을 생성해.
  2. Pydantic, Zod, JSON Schema 검증기로 의미 규칙까지 검사해.
  3. 틀렸다면 검증 오류를 모델에 돌려주고 고치게 해.
  4. 재시도는 보통 두세 번으로 제한해.
  5. 그래도 틀리면 사용자에게 구조화된 오류를 돌려줘.

검증 규칙을 미리 알려주면 재시도가 줄어

“reason_codes는 [low_confidence, missing_evidence, policy_block, ok] 가운데 하나여야 하고, 맞는 값이 없으면 notes와 함께 ok를 써”처럼 규칙을 프롬프트에서 먼저 설명해. 모델이 거절을 당하며 규칙을 알아내게 하는 것보다 훨씬 싸.

Code

검증기가 이끄는 출력 수리·python
from pydantic import ValidationError

for attempt in range(3):
    raw = call_model(prompt, messages)
    try:
        parsed = VerdictSchema.model_validate_json(raw)
        return parsed
    except ValidationError as e:
        prompt = f"{prompt}\n\nLast attempt failed validation:\n{raw}\nError:\n{e}\nReturn a corrected JSON."
raise RuntimeError("validation failed")

External links

Exercise

기존 구조화 출력 프롬프트에 최대 두 번 재시도하는 수리 반복을 붙여봐. 두 번째 시도에서 성공한 비율을 기록하고, 비율이 높다면 첫 프롬프트에 빠진 규칙을 보태.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.