보장된 구조를 위한 Instructor / Outlines
Instructor(Python)와 Outlines로 디코딩을 제한하여 모델이 유효하지 않은 JSON을 문자 그대로 생성할 수 없게 해보세요.
보장된 구조를 위한 Instructor / Outlines은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
두 가지 주요 라이브러리
구조화된 출력을 보장하는 대표적인 두 가지 접근 방식은 다음과 같습니다:
- 인스트럭터(제이슨 리우) — OpenAI, 앤트로픽 및 여러 제공자를 위한 파이단틱 래퍼
- 아웃라인스(.txt) — OSS 모델을 위한 제약 디코딩
Instructor Basics
# pip install instructor openai
import instructor
from openai import OpenAI
from pydantic import BaseModel
client = instructor.from_openai(OpenAI())
class User(BaseModel):
name: str
age: int
user = client.chat.completions.create(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)
print(user.name, user.age)인스트럭터의 마법
인스트럭터는 내부적으로 다음 작업을 수행합니다:
- 파이단틱 모델에서 JSON 스키마를 생성합니다
- OpenAI 호출에 도구로 추가합니다
- 해당 도구가 호출되도록 강제합니다
- 인수를 구문 분석하여 파이단틱 인스턴스를 반환합니다
- 검증 오류가 발생하면 수정과 함께 재시도합니다
Instructor with Validation
from pydantic import field_validator
class User(BaseModel):
name: str
age: int
@field_validator('age')
@classmethod
def positive(cls, v):
if v <= 0:
raise ValueError('Age must be positive')
return v
# Instructor catches ValidationError and retries automaticallyStreaming Instructor
for partial in client.chat.completions.create_partial(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
):
print(partial)
# Streams partial Pydantic instances as fields fill in.Instructor with Anthropic
from anthropic import Anthropic
client = instructor.from_anthropic(Anthropic())
user = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=1024,
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)OSS 모델용 아웃라인스
아웃라인스는 문법 제약 디코딩을 사용합니다. HuggingFace, vLLM, llama.cpp에서 작동합니다:
# pip install outlines
import outlines
model = outlines.models.transformers('mistralai/Mistral-7B-Instruct-v0.2')
generator = outlines.generate.json(model, User)
user = generator('Alice, 30')제약 디코딩을 사용하는 이유
아웃라인스는 스키마에 따라 각 단계에서 허용되는 토큰을 확인하고 허용되지 않는 토큰을 차단합니다. 따라서 모델은 잘못된 JSON을 실제로 생성할 수 없습니다.
아웃라인스 정규식 / choice
정규식이나 선택지 목록으로 제한할 수 있습니다:
import outlines.text.generate as g
yes_no = g.choice(model, ['yes', 'no'])
result = yes_no('Are bananas fruits?') # 'yes'두 가지 결합하기
최대한의 신뢰성을 확보하려면 다음과 같이 하십시오:
- 관리형 또는 폐쇄형 모델(OpenAI, 앤트로픽)에는 인스트럭터를 사용합니다
- 직접 호스팅하는 모델에는 아웃라인스를 사용합니다
- 두 방식에서 파이단틱 모델을 공유합니다
비용 비교
- 엄격한 출력(OpenAI 기본 기능) — 가격에 포함됩니다
- 인스트럭터 — 검증 재시도로 인해 약간의 추가 비용이 발생합니다
- 아웃라인스 — 마스킹으로 처리량이 약간 감소하지만 추가 호출은 없습니다
상황에 따른 선택
| 사용 사례 | 도구 |
|---|---|
| OpenAI/앤트로픽 | 인스트럭터 + 파이단틱 |
| 직접 호스팅하는 OSS | 아웃라인스 |
| 지연 시간에 민감한 경우 | OpenAI 구조화된 출력(기본 기능) |
아웃라인스 접근 방식
아웃라인스는 구조화된 출력을 어떻게 보장하나요?
복습
OpenAI와 앤트로픽에는 기본 구조화된 출력이나 인스트럭터를 사용하십시오. OSS에는 아웃라인스를 사용하십시오. 파이단틱 모델이 모든 요소를 연결해 줍니다.
자주 묻는 질문
“보장된 구조를 위한 Instructor / Outlines” 강의는 무료인가요?
네 — “보장된 구조를 위한 Instructor / Outlines” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.
“보장된 구조를 위한 Instructor / Outlines”에서 뭘 배우나요?
Instructor(Python)와 Outlines로 디코딩을 제한하여 모델이 유효하지 않은 JSON을 문자 그대로 생성할 수 없게 해보세요. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Agents을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“보장된 구조를 위한 Instructor / Outlines” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- JSON 모드 및 도구 호출 출력
- Pydantic 스키마 검증
- 형식이 잘못된 출력을 위한 수정 반복
- 보장된 구조를 위한 Instructor / Outlines