Şu an neler oluyor?

Tüm akışa dön
Prompt Engineering ile Üretim Ortamında JSON Çıktı Garantileme ve Hata Ayıklama
Yapay Zeka 3 Ekim 2026 · 1 gün önce 176 karakter

Prompt Engineering ile Üretim Ortamında JSON Çıktı Garantileme ve Hata Ayıklama

Haberin özeti

Promptunuza defalarca 'Sadece JSON formatında cevap ver, açıklama yazma' dediğiniz halde modelin başına 'Tabii ki, işte istediğiniz JSON:' yazıp tüm backend akışınızı patlatmasından bıktınız mı?

↳
Olay örgüsü

Ne oldu, nasıl gelişti?

### 1. LLM Neden JSON Formatını Bozar? Büyük dil modelleri olasılıksal (probabilistic) metin üreteçleridir. Eğitim verisindeki diyalog kalıpları nedeniyle kibarlık cümleleri eklemeye veya markdown blokları (```json ... ```) açıp kapatmaya meyillidirler.

### 2. Modern Çözüm: Instructor ve Pydantic Kütüphanesi İstemci tarafında regex yazmak yerine Python'ın en güçlü veri doğrulama kütüphanesi olan Pydantic ile şemanızı tanımlayıp `instructor` kütüphanesi ile modeli otomatik yeniden denemeye (retry) zorlayabilirsiniz.

```python import instructor from pydantic import BaseModel, Field from openai import OpenAI from typing import List

# 1. Pydantic ile Katı Şema Tanımla class HaberAnalizi(BaseModel): baslik: str = Field(description="En fazla 80 karakterlik vurucu başlık") kategori: str = Field(description="gundem, ekonomi veya teknoloji") etiketler: List[str] = Field(min_items=2, max_items=5) duygu_puani: float = Field(ge=-1.0, le=1.0, description="-1 negatif, +1 pozitif")

# 2. Instructor ile OpenAI İstemcisini Sarmala client = instructor.from_openai(OpenAI())

# 3. Tip Garantili Çağrı analiz: HaberAnalizi = client.chat.completions.create( model="gpt-4o-mini", response_model=HaberAnalizi, max_retries=3, messages=[ {"role": "user", "content": "TCMB faiz kararını sabit tuttu haberi için analiz üret."} ] )

print(analiz.baslik) print(analiz.duygu_puani) ```

### 3. API Seviyesinde 'Strict: True' Parametresi OpenAI ve modern LLM sağlayıcılarının sunduğu `response_format: {"type": "json_schema", "json_schema": {"strict": true}}` parametresi, modelin sampling adımında sadece şemada tanımlı token'ları üretmesini sağlayan gramer kısıtı (Constrained Decoding) uygular. Bu sayede hata payı matematiksel olarak %0'a iner.

### 4. 4 Adımda Üretim Hazırlığı 1. Şema alanlarında `Optional` kullanımını minimumda tutun. 2. Her alana net `description` ekleyin. 3. `max_retries=3` ile şema hatasında modelin hatayı görüp kendini düzeltmesini sağlayın. 4. Çıktıyı doğrudan veritabanı ORM modeline map edin.

Etkileri

Kimi, nasıl etkiliyor?

Yazılım ekiplerinin prompt kaynaklı exception handling maliyetlerini sıfıra indirir.

Sırada ne var?

Bundan sonra ne olacak?

Projenize `pip install instructor pydantic` kurarak legacy string promptlarınızı Pydantic modellerine taşıyın.

Bunu Neden Bilmelisin?

LLM çıktısını veritabanına yazan veya bir mikroservise girdi olarak besleyen sistemlerde tek bir geçersiz tırnak işareti tüm zinciri çökertebilir. Yapılandırılmış çıktı (Structured Outputs) determinizm sağlar.

Geçmişi Ne?

İlk dönemlerde 'Lütfen sadece JSON dön' promptları kullanılırken günümüzde API seviyesinde şema zorlama (Constrained Decoding) standart hale gelmiştir.

Büyük Resim

Yapay zekanın yazılım mimarilerine entegrasyonu, doğal dilden yapılandırılmış veri tiplerine güvenli dönüşüm mekanizmalarına bağlıdır.

Kaynak (neleroluyor. Özel Analiz)

📰 İlgili Haberler