T.UZUN_
YAPAY ZEKA

Gemma 4 26B JSON Güvenliği: Zod Validasyonu

Gemma 4 26B ve LLM'lerde JSON tool-call biçimlendirme hatalarını önleme. Zod şema doğrulaması, otomatik retry ve fallback prompt stratejileriyle güvenli AI mimarisi.

Paylaş
LLM-Output-Validation.jpg

Yapay zeka modellerini üretim ortamına alırken karşılaşılan en büyük zorluklardan biri, modelin beklenilen JSON veya Tool-Call formatını %100 kararlılıkla üretememesidir. Son dönemde açık kaynaklı yapay zeka topluluklarında ve Türkiye'deki yazılım geliştirme ekiplerinde sıkça tartışılan konulardan biri de Gemma 4 26B gibi gelişmiş modellerde yaşanan JSON biçimlendirme ve şema kaçaklarıdır.

AI Agent veya mikro servis mimarinizde doğrulanmamış AI çıktısı nedeniyle yaşanan sistem çökmelerinin önüne nasıl geçebilirsiniz?

Bu yazıda, Zod şema doğrulaması, otomatik retry mekanizmaları ve fallback prompt stratejileriyle üretim ortamında sarsılmaz bir LLM çıktı güvenliği mimarisinin nasıl kurulacağını inceliyoruz.

Gemma 4 26B ve LLM'lerde JSON Biçimlendirme Hatası Nedir?

Büyük Dil Modelleri doğaları gereği olasılıksal çalışan sistemlerdir. Gemma 4 26B gibi yüksek parametreli modeller, Karma Karmaşıklık (MoE) yapısı ve gelişmiş yeteneklerine rağmen belirli uç durumlarda şu hataları yapabilir:

  1. JSON Syntax Hataları: Yanıtın başına/sonuna fazladan metin (Markdown ```json vb.) ekleme veya tırnak işaretlerini kapatmama.

  2. Schema Drift: Beklenen veri tipinin (örneğin number) string olarak döndürülmesi veya zorunlu alanların atlanması.

  3. Eksik Tool-Call Argümanları: Fonksiyon çağrılarında parametrelerin eksik veya yanlış tiplerle iletilmesi.

Bu durum, uygulamanızın backend katmanında JSON.parse() hatası almanıza ve tüm zincirin (agent chain) kopmasına neden olur.

Production Sınıfı LLM Savunma Mimarisi (3 Katmanlı Koruma)

Doğrulanmamış bir AI çıktısının veritabanınıza, API çağrılarınıza veya iş mantığınıza erişmesini engellemek için üç kademeli bir Guardrail katmanı şarttır:

1. Zod Şema Doğrulaması (Schema Validation)

LLM'den gelen yanıtı ham haliyle kabul etmek yerine, TypeScript tarafında Zod gibi katı bir tip ve şema doğrulayıcıdan geçirmek gerekir.

import { z } from "zod";

// Beklenen Tool-Call şemasını tanımlıyoruz
export const ToolCallSchema = z.object({
  action: z.string(),
  parameters: z.object({
    userId: z.string().uuid(),
    limit: z.number().min(1).max(100),
    tags: z.array(z.string()).optional()
  })
});

export type ToolCallInput = z.infer<typeof ToolCallSchema>;

2. Fallback Prompt ve Hata Bildirimi

Zod doğrulaması başarısız olduğunda, modele sadece "Hata aldın" demek yeterli değildir. Modelin yaptığı hatayı (Zod error array) açıkça sistem promptuna geri beslemek (feedback loop) gerekir.

function generateFallbackPrompt(rawOutput: string, errors: z.ZodError) {
  return `
Ürettiğin yanıt beklenen JSON şemasına uymadı.

HATALI YANIT:
${rawOutput}

ZOD DOĞRULAMA HATALARI:
${JSON.stringify(errors.issues, null, 2)}

LÜTFEN DİKKAT:
1. Sadece ve sadece geçerli JSON formatında yanıt ver.
2. Markdown blokları (\`\`\`json) veya ekstra açıklama metni ekleme.
3. Yukarıda belirtilen veri tiplerine ve zorunlu alanlara tam uy.
  `;
}

3. Otomatik Retry (Yeniden Deneme) Döngüsü

Şema hatası durumunda uygulamanın çökmesini engellemek için sınırlı bir otomatik deneme (örn. maksimum 3 deneme) döngüsü kurgulanır.

async function safeExecuteLLMCall(prompt: string, maxRetries = 3) {
  let currentPrompt = prompt;

  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    const rawResponse = await callGemmaModel(currentPrompt);

    try {
      // 1. JSON parse dene
      const parsedJson = JSON.parse(rawResponse);
      
      // 2. Zod ile şemayı doğrula
      const validatedData = ToolCallSchema.parse(parsedJson);
      
      // Başarılı: Doğrulanmış veriyi güvenle döndür
      return validatedData;
    } catch (error) {
      console.warn(`[Deneme ${attempt}/${maxRetries}] Hatalı LLM Çıktısı.`);

      if (attempt === maxRetries) {
        throw new Error("Maksimum yeniden deneme sınırına ulaşıldı. AI Çıktısı doğrulanamadı.");
      }

      // Zod hatası ise spesifik feedback prompt oluştur
      if (error instanceof z.ZodError) {
        currentPrompt = generateFallbackPrompt(rawResponse, error);
      }
    }
  }
}

Özet Bilgi Matrisi:

Kavram / Terim

Temel Odak Noktası

Sağladığı Avantaj / Çıktı

Zod Validasyonu

Çalışma zamanı (runtime) tip ve şema kontrolü

JSON.parse() sonrası tip güvenliği ve anında hata tespiti

Fallback Prompting

Zod hata dizisini (error issues) modele geri besleme

Modelin kendi hatasını düzelttiği kendi kendini onaran (self-healing) akış

Auto Retry Execution

Sınırlı döngüde yeniden deneme mekanizması

Geçici model hatalarında %99.9+ kesintisiz çalışma oranı (uptime)

Schema Drift Koruması

Beklenen tiplerin ve zorunlu alanların denetimi

Veritabanı ve backend iş mantığında bozulmaları (data pollution) önleme

Görüş:

Gemma 4 26B veya diğer açık kaynaklı LLM'leri (Llama 3, Mistral, Qwen, Kimi vb.) yazılım projelerinize entegre ederken dikkat etmeniz gereken temel kural bunlardır. Çünkü; Yapay zeka modelleri asla doğrudan güvenilir bir veri kaynağı değildir.

Zod şema doğrulaması, otomatik retry mekanizmaları ve fallback promptlar kullanarak sistemlerinizi runtime hatalarından koruyabilirsiniz, AI agent mimarilerinizi kurumsal seviyede güvenli hale getirebilirsiniz.

Sık Sorulan Sorular

Gemma 4 26B gibi modeller neden JSON çıktılarında syntax hatası yapar?

LLM'ler metinleri olasılık tabanlı tahmin ederek ürettikleri için edge case durumlarda Markdown çitleri ekleyebilir, tırnak işaretlerini unutabilir veya formatı bozabilirler.

Zod validasyonu sadece JSON biçimini mi kontrol eder?

Hayır; Zod, JSON biçiminin ötesinde veri tiplerini (string, number, UUID), minimum/maksimum değer sınırlarını ve zorunlu alanların mevcudiyetini de doğrulayan kapsamlı bir çalışma zamanı kütüphanesidir.

Fallback prompt içinde Zod hatalarını modele göndermek neden önemlidir?

Modele sadece "Hata yaptın" demek yerine tam olarak hangi alanda tip veya alan eksikliği yaşandığını iletmek, modelin ikinci denemede doğru şemayı üretme olasılığını katlanarak artırır.

Bu içerik sana ne hissettirdi?

İlgili Yazılar