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:
JSON Syntax Hataları: Yanıtın başına/sonuna fazladan metin (Markdown ```json vb.) ekleme veya tırnak işaretlerini kapatmama.
Schema Drift: Beklenen veri tipinin (örneğin
number) string olarak döndürülmesi veya zorunlu alanların atlanması.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ü |
|
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.




