AI Prompt Engineering · 강의

구조화된 출력이 필요한 이유

신뢰할 수 있는 기계 판독 가능 결과

레슨 1/413개 단계

구조화된 출력이 필요한 이유은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Prompt Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

자유 형식 텍스트 문제

자연어 LLM 출력은 구문 분석이 모호합니다. 모델은 한 번은 The price is $42라고 답하고 다음에는 It costs forty-two dollars라고 답할 수 있습니다. 숫자를 예상하는 후속 코드가 중단됩니다.

구조화된 출력은 모델이 기계가 읽을 수 있는 형태(JSON, 형식이 지정된 객체)로 데이터를 출력하도록 제한하는 것을 의미하므로, 구문 분석이 휴리스틱이 아니라 결정론적으로 이루어집니다.

구문 분석은 숨은 비용입니다

팀은 프롬프트 작성보다 취약한 텍스트 후처리에 더 많은 엔지니어링 노력을 들이는 경우가 많습니다. 정규식 추출, 퍼지 문자열 일치, 구문 분석 실패 시 재시도 반복문은 구조화되지 않은 출력의 징후입니다.

  • 정규식은 표현이 바뀌면 작동하지 않습니다.
  • 퍼지 일치는 조용한 오류를 일으킵니다.
  • 새 필드가 추가될 때마다 구문 분석 대상 범위가 배로 늘어납니다.

구조화된 생성은 이 계약을 요청의 상위 단계로 옮깁니다.

구조의 세 가지 수준

강제 수준에는 연속적인 범위가 있습니다.

  • 부드러운 프롬프트 작성 — 프롬프트에서 JSON을 요청하지만 보장되지 않습니다.
  • 스키마 기반 — JSON 스키마를 전달하면 제공업체가 검증합니다.
  • 제약된 디코딩 — 문법/FSM이 잘못된 토큰을 마스킹하여 유효한 JSON만 생성할 수 있습니다.

각 수준은 유연성과 신뢰성을 맞바꿉니다.

제약된 디코딩 내부 구조

가장 강력한 수준에서는 디코더가 각 단계에 토큰 마스크를 적용합니다. 문법(대개 유한 상태 머신으로 컴파일됨)이 출력의 유효성을 유지하는 다음 토큰을 계산하고, 샘플러는 해당 집합에서만 선택할 수 있습니다.

따라서 잘못된 JSON은 단순히 억제되는 것이 아니라 구조적으로 불가능해집니다.

# Conceptual: logit masking against a grammar FSM
def masked_sample(logits, fsm_state, grammar):
    allowed = grammar.allowed_token_ids(fsm_state)
    mask = full_like(logits, NEG_INF)
    mask[allowed] = 0.0
    return sample(logits + mask)

제공업체 기본 구조화 출력

최신 API는 엄격한 JSON 스키마를 사용하는 response_format을 제공합니다. 제공업체가 응답의 준수를 보장하므로 방어 코드 없이 역직렬화할 수 있습니다.

client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': 'Extract the invoice fields.'}],
    response_format={
        'type': 'json_schema',
        'json_schema': {
            'name': 'invoice',
            'strict': True,
            'schema': {
                'type': 'object',
                'properties': {
                    'total': {'type': 'number'},
                    'currency': {'type': 'string'}
                },
                'required': ['total', 'currency'],
                'additionalProperties': False
            }
        }
    }
)

계약으로서의 신뢰성

스키마를 모델과 시스템 사이의 API 계약으로 생각하십시오. 타입이 지정된 함수 서명처럼 의도를 문서화하고 컴파일 시점과 유사한 보장을 제공합니다.

이렇게 하면 LLM 출력을 코드가 해석해야 하는 제안에서 코드가 신뢰할 수 있는 타입이 지정된 값으로 바꿀 수 있습니다.

결정성과 창의성의 절충

구조는 형태를 제한하지만, 반드시 내용까지 제한하지는 않습니다. 자유로운 summary: string 필드가 있는 스키마는 해당 필드 안에서 창의적인 산문을 여전히 허용합니다.

권장 방법은 외부 구조(필드, 형식, 열거형)를 엄격하게 구조화하고, 지정된 문자열 필드 안에서만 창의성을 발휘할 여지를 남기는 것입니다.

열거형은 전체 실패 유형을 제거합니다

자유 형식 텍스트 분류(sentiment: 'kind of positive')는 구문 분석할 수 없습니다. 열거형은 고정된 집합 중 하나를 강제하여 정규화 버그의 한 부류 전체를 제거합니다.

{
  'type': 'object',
  'properties': {
    'sentiment': {
      'type': 'string',
      'enum': ['positive', 'neutral', 'negative']
    }
  },
  'required': ['sentiment'],
  'additionalProperties': False
}

관찰 가능성과 스키마 버전 관리

구조화된 출력은 기록하고, 비교하고, 모니터링하기가 훨씬 쉽습니다. 필드 단위 지표를 계산하고, 분포 변화를 감지하며, 누락된 필드에 대해 경고할 수 있습니다.

스키마를 버전이 지정된 산출물로 다루십시오. 필드는 먼저 선택 사항으로 추가하고, 제거하기 전에 사용 중단 처리하며, 각 응답에 해당 응답을 생성한 스키마 버전을 태그로 지정하십시오.

구조를 강제하지 않을 때(NOT)

과도한 제약은 품질을 저하시킬 수 있습니다. 추론 단계에서 복잡한 스키마를 강제하면 사고 과정을 억제할 수 있습니다.

  • 모델이 먼저 자유 형식 텍스트로 추론하도록 하십시오.
  • 그런 다음 결론을 형식화하기 위한 두 번째 구조화된 호출을 수행하십시오.

추론과 형식화를 분리하는 것이 과도하게 제약된 한 번의 호출보다 나은 경우가 많습니다.

비용과 지연 시간 고려 사항

구조화된 출력은 일반적으로 총비용을 줄입니다: 재시도 횟수가 줄고, 산문 형식에 사용하는 토큰이 줄며, 별도의 구문 분석 서비스가 필요하지 않습니다. 그러나 엄격한 스키마 모드는 서버 측에서 약간의 추가 처리 부담을 일으킬 수 있고 첫 시도를 거부할 수도 있으므로, 항상 복구 전략과 함께 사용하십시오(뒤에서 다룹니다).

빠른 확인

단순히 권장하지 않는 수준이 아니라 잘못된 JSON을 구조적으로 불가능하게 만드는 기법은 무엇입니까?

복습

이제 구조화된 출력이 왜 중요한지 이해하셨을 것입니다.

  • 취약한 구문 분석을 타입이 지정된 계약으로 대체합니다.
  • 강제 수준은 부드러운 프롬프트 작성부터 제약된 디코딩까지 이어집니다.
  • 열거형과 엄격한 외부 구조는 전체 버그 유형을 제거합니다.
  • 구조는 관찰 가능성과 버전 관리를 돕습니다.
  • 품질 저하를 피하려면 추론과 형식화를 분리하십시오.

다음 내용에서는 프롬프트에서 JSON 스키마로 이 계약을 정확하게 표현하는 방법을 다룹니다.

무료로 시작

AI 튜터와 함께 AI Prompt Engineering을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
53
레슨
199

자주 묻는 질문

“구조화된 출력이 필요한 이유” 강의는 무료인가요?

네 — “구조화된 출력이 필요한 이유” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Prompt Engineering 강의 전체를 잠금 해제할 수 있습니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

“구조화된 출력이 필요한 이유”에서 뭘 배우나요?

신뢰할 수 있는 기계 판독 가능 결과 브라우저에서 직접 실행하는 실습 코드로 AI Prompt Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Prompt Engineering을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Prompt Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“구조화된 출력이 필요한 이유” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 구조화된 출력이 필요한 이유
  2. 프롬프트의 JSON 스키마
  3. 도구 및 함수 스키마
  4. 수정 및 검증 반복 과정
← AI Prompt Engineering(으)로 돌아가기