Bir yapay zekâdan görev sonucu istediğinizde yanıtın başına açıklama, sona Markdown kod bloğu veya eksik alanlar eklenebilir. Bu metni doğrudan başka bir programa aktarmak; ayrıştırma hatalarına, yanlış türde verilere ve beklenmeyen sonuçlara yol açar. Çözüm, modele yalnızca biçimi tarif etmek değil, gelen veriyi uygulama tarafında ayrıca doğrulamaktır.
Örneğin oyun backlog’unu sınıflandıran küçük bir otomasyonda modelden şu yapıyı istemek daha güvenlidir:
{
"category": "bug|feature|question",
"priority": 1,
"summary": "Kısa açıklama"
}
İstekte kuralları açıkça belirtin: Yalnızca geçerli JSON döndürmesi, category alanının izin verilen üç değerden biri olması, priority değerinin 1 ile 3 arasında bulunması ve summary alanının boş bırakılmaması. Gerçek verilerde özel karakterler bulunabileceği için alanları elle birleştirmek yerine JSON ayrıştırıcı kullanın.
Uygulama tarafında asgari doğrulama
Python’un standart kütüphanesiyle temel kontrol şöyle yapılabilir:
import json
allowed_categories = {"bug", "feature", "question"}
def validate_ai_result(text):
try:
data = json.loads(text)
except json.JSONDecodeError:
return None, "Yanıt geçerli JSON değil."
if not isinstance(data, dict):
return None, "Kök veri bir nesne olmalı."
required = {"category", "priority", "summary"}
if set(data) != required:
return None, "Alanlar eksik veya beklenmeyen alan içeriyor."
if data["category"] not in allowed_categories:
return None, "Geçersiz kategori."
if not isinstance(data["priority"], int) or not 1 <= data["priority"] <= 3:
return None, "Öncelik 1 ile 3 arasında tam sayı olmalı."
if not isinstance(data["summary"], str) or not data["summary"].strip():
return None, "Özet boş olamaz."
return data, None
Doğrulama başarısız olursa yanıtı doğrudan çalıştırmak veya veritabanına yazmak yerine kontrollü bir hata üretin. İsterseniz modele tekrar gönderilecek kısa bir düzeltme isteği hazırlayabilirsiniz; ancak tekrar gelen yanıtı da aynı kontrolden geçirin. Modelin “güvenilir görünüyor” olması, doğrulama adımını kaldırmak için yeterli değildir.
- Yanıtı ile çalıştırmayın.
eval() - Beklenen alanları ve veri türlerini uygulama tarafında kontrol edin.
- Serbest metin alanlarına uzunluk sınırı koyun.
- Eksik veya geçersiz yanıtta güvenli bir varsayılan davranış belirleyin.
- Testlerde boş yanıt, kod bloğu içine alınmış JSON, eksik alan ve yanlış tür örneklerini deneyin.
