API & Backend

LLM Structured Outputs: Pydantic v2 ve JSON Schema ile Sıfır Hatalı Çıktı Üretimi

LLM çıktılarının kırılmasını önlemek için Pydantic v2, Instructor ve yerel JSON Schema modları ile %100 tip güvenli veri çıkarma rehberi.

3 dk

Neden Normal Regex veya String Parser Yetmez?

LLM'ler bazen JSON'ın başına tırnak ekler veya eksik virgül bırakır. 'Structured Outputs' özelliği, modelin gramer tabanlı örnekleme (grammar-constrained sampling) ile sadece şemaya uyan token'ları üretmesini garanti eder.

structured_output.py
from pydantic import BaseModel, Field
import instructor
from openai import OpenAI

class InvoiceItem(BaseModel):
    name: str
    price: float = Field(gt=0)
    quantity: int = Field(default=1)

class InvoiceExtraction(BaseModel):
    vendor: str
    items: list[InvoiceItem]
    total: float

client = instructor.from_openai(OpenAI())

invoice = client.chat.completions.create(
    model="gpt-4o-mini",
    response_model=InvoiceExtraction,
    messages=[{"role": "user", "content": "Fatura metni: Acme Corp 2 adet sunucu USD 500, 1 adet domain USD 20"}],
)

print(f"Satıcı: {invoice.vendor}, Toplam: USD {invoice.total}")