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}")