Ajanınızın Daha İyi Bir İstemden Ziyade Bir Şemaya İhtiyacı Var
Kaynak: dev.to

İçindekiler 5 başlık
Kimsenin Demoda Göstermediği Hata#
Ajan (agent) demoları her zaman kusursuz çalışır. Müşteri para iadesi ister, ajan doğru aracı (tool) çağırır ve para transfer edilir. Ancak sistem canlıya alındıktan bir hafta sonra ajan, hiç teslim edilmemiş bir siparişin ücretini iade eder, satın alma tutarından daha büyük bir ödeme çıkarır veya kendisine bağlı hiçbir çalışanı olmayan bir "yönetici" için masraf onaylar.
Bunların hiçbiri akıl yürütme (reasoning) hatası değildir. Model gayet iyi akıl yürütmüştür; yalnızca işletmenizde geçerli olmayan bir durum üzerine aksiyon almıştır. Çünkü sistemdeki hiçbir bileşen ona neyin "doğru" olduğunu kesin olarak tanımlamamıştır.
İstemler Rica Eder, Ontolojiler Tanımlar#
Bu duruma genellikle sistem istemini (system prompt) uzatarak çözüm aranır: "Asla sipariş toplamından fazlasını iade etme; yalnızca teslim edilmiş siparişleri iade et." Bu yaklaşım, istem 4.000 token'a ulaşıp önemsediğiniz kural modelin dikkatini çekmek için diğer kırk kuralla yarışana kadar işe yarar.
İstem (prompt) yalnızca bir tavsiyedir ve model buna çoğu zaman uyar. Ontoloji (veya şema) ise bambaşka bir yapıdır: Alanınızda (domain) nelerin var olabileceğini ve birbirleriyle nasıl ilişkilendiğini belirten resmi, makine tarafından okunabilir bir tanımdır. Örneğin; bir Siparişin tam olarak bir Müşterisi vardır, bir İade tam olarak bir Siparişe işaret eder ve bir Yöneticinin en az bir doğrudan çalışanı bulunur.
Ontoloji modelden iyi davranmasını rica etmez; modelin içinde hareket edebileceği dünyayı tanımlar ve her seferinde milisaniyeler içinde mekanik olarak denetlenir. Desen basittir: LLM önerir, ontoloji karar verir. Böylece ajan, talebi anlama konusunda esnek kalırken iş kurallarıyla çelişen bir eylemi gerçekleştirme özgürlüğünü kaybeder.
Okuyabileceğiniz Bir Güvenlik Korkuluğu (Guardrail)#
Bu yapı için W3C standardı SHACL (Shapes Constraint Language) olarak adlandırılır. İade kuralının bir şema (shape) olarak ifadesi şöyledir:
ex:RefundShape a sh:NodeShape ;
sh:targetClass ex:Refund ;
sh:property [
sh:path ex:forOrder ;
sh:class ex:DeliveredOrder ;
sh:minCount 1 ; sh:maxCount 1 ;
sh:message "A refund must reference exactly one delivered order."
] ;
sh:property [
sh:path ex:amount ;
sh:datatype xsd:decimal ;
sh:minExclusive 0
] .
"Tutar sipariş toplamını aşamaz" kuralı da aynı yapı içinde birkaç satırlık SPARQL kısıtlamasıyla eklenir. Burada kritik olan nokta şudur: Python kodunuzu asla okumayacak bir uyumluluk (compliance) uzmanı bile "bir iade tam olarak bir teslim edilmiş siparişe referans vermelidir" kuralını okuyup doğruluğunu onaylayabilir.
Döngüyü Kapatmak#
Güvenlik korkuluğu, ajanın kararı ile yan etki (side effect) arasında konumlanır:
- Ajan, eylemi yapılandırılmış veri (Structured Output ve JSON Modu / JSON-LD) olarak önerir.
pySHACLgibi bir doğrulayıcı, herhangi bir model çağrısı veya token harcaması olmadan veriyi şemaya karşı kontrol eder.- Veri kurallara uygunsa eylem yürütülür. Uygun değilse doğrulama raporu (hangi şemanın, hangi alanda, hangi insan tarafından yazılmış mesajla başarısız olduğu) ajana araç sonucu (Tool Calling ve Multi-Step Agent'lar) olarak geri döner.
Son adım hayati önem taşır. "Eylem reddedildi" mesajı ajana hiçbir şey öğretmez. Ancak "Bir iade tam olarak bir teslim edilmiş siparişe referans vermelidir; 8812 numaralı siparişin durumu Kargoda" geri bildirimi, ajana üzerinde akıl yürütebileceği somut bir bağlam sunar. Pratikte ajan ya hatasını düzeltir ya da durumu bir insana devreder.
Demodan Sonrası İçin Size Kazandırdıkları#
Tek bir şema yapısı, yazılım ekiplerinin genellikle ayrı ayrı inşa ettiği üç işi aynı anda çözer (Production'da Agent Güvenilirliği açısından kritik bir kazanımdır):
- Bağlam (Context): Eylemleri doğrulayan aynı ontoloji, ajanın araç açıklamalarını ve varlık tanımlarını üretebilir. Model, iş alanını binlerce yerine birkaç yüz token içinde olduğu gibi görür.
- Güvenlik Korkulukları (Guardrails): Kurallar bildirimsel (declarative), deterministik ve Git üzerinde versiyonlanmış haldedir. Bir kural değişikliği, Cuma günü ayaküstü yapılan bir prompt ince ayarı değil, incelenmiş bir kod farkıdır (diff).
- Değerlendirmeler (Evals): Kurallar resmi olarak tanımlandığı için ajanın ürettiği çıktıları ve sınır durumlarını otomatik olarak test etmek ve doğrulamak standart bir mühendislik sürecine dönüşür.
Kaynak ve atıf
Bu yazı, dev.to üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- dev.to/dailycontext/your-agent-needs-a-schema-not-a-better-prompt-53bm