Ajan koşusunun her aşamasında politika kararı ve defter kaydı
Thulpar bir ajan koşusunun dokuz aşamasını da görür. Her aşamada politika paketinin o aşamaya atadığı rayları çalıştırır. Aşağıda motorun parçaları ve her parça için tarayıcınızda çalışan bir simülasyon var.
Akıştaki her cümle denetlenir ve geri çekilebilir.
Geçit, modelden gelen akışı cümlelere böler ve her birini output_chunk aşamasında denetler. Maskelenmesi ya da durdurulması gereken bir cümlede istemciye bir geri çekme çerçevesi ve maskeli metin gönderilir. Mevcut OpenAI istemcileri çalışmaya devam eder.
Akış simülasyonu →Paket kuralı belirler, motor uygular.
Bir politika paketi JSON belgesidir: raylar ve ayarları, araç grupları, sink sınıfları, Cedar politikaları, onay, saklama ve kanıt profilleri. Paketler org, kiracı, uygulama ve ajan sırasıyla katmanlanır; kilitli bir ayar alt katmanda değiştirilemez. Her sürüm imzalanır.
Politika sanal alanı →Hold, bir kişi onaylayana kadar koşuyu bekletir.
Cedar’da @advice("hold:<profil>") ya da sink politikasında onViolation: hold bir onay kaydı açar. Profil onaylayanları, four-eyes zorunluluğunu, SLA’yı ve yükseltme hedefini belirler. Onay konsoldan, webhook’tan ya da Aginies’in onay kartından verilir; her onay defterde ayrı bir olaydır.
Uçtan uca koşu →Hash zincirli bir defter ve imzalı bir kanıt paketi
Her olay kiracının zincirine hash = SHA-256(önceki hash ‖ kanonik JSON) ile eklenir. Defterde içeriğin yalnız hash’i saklanır; PII rayı çalıştıysa en çok 2 KB redakte edilmiş örnek yanında durur. Zincir günlük çapalanır ve her gece doğrulanır.
Defter gezgini →Dokuz aşama, yedi olası karar
Çağıran hangi aşamada olduğunu bildirir ve içerikle bağlamı gönderir. Thulpar o aşamanın ray grafiğini çalıştırır. Yanıtta karar, bulgular, uygulanacak eylemler ve defter kimliği döner. Eylemler maskeleme span’ları, yeniden yazım ya da önüne ekleme olabilir.
Aşama
- input
- Modelden önce kullanıcı ya da çağıran metni
- retrieval
- Prompt’a girmeden önce RAG parçaları
- tool_call
- Yürütmeden önce araç adı ve argümanlar
- tool_result
- Modele dönmeden önce araç çıktısı
- output
- Tam model yanıtı
- output_chunk
- Akıştaki her cümle
- memory_write
- Sonraki turlar için kalıcılaşacak olan
- file
- Depolamadan önce bayt ve meta veri
- agent_trace
- Bütün bir yörünge, asenkron
Karar
- allow
- Bulgu yok; içerik olduğu gibi geçer
- allow_with_findings
- Bulgu var, eylem yok; deftere yazılır (shadow modun zorunlu sonucu)
- redact
- Maskeler uygulanmış içerik döner; actions[] span’ları taşır
- rewrite
- İçerik değiştirilir, örneğin bir ret şablonu
- prepend
- Yanıtın önüne metin eklenir, örneğin YZ bildirimi
- deny
- İçerik durdurulur
- hold
- Onay kaydı açılır; çağıran bekler, koşu onayla devam eder
- escalate
- Şimdi izin, asenkron yargıç kuyruğa; sonuç deftere ve webhook’a
Mod
- enforce
- Varsayılan; karar uygulanır
- shadow
- Tam değerlendirme, hiçbir şey engellenmez; çağırana enforce ne derdi söylenir
- audit
- Asenkron: 202 + ledgerId; çağıranın bekleyemeyeceği kontroller
- off
- Ray kapalı, paket ve kapsam başına
Gecikme bütçesi (p50, tasarım)
- input
- 150 ms · senkron; çağıran destekliyorsa üretimle paralel (spekülatif bilet)
- tool_call
- 50 ms · Cedar + deterministik doğrulayıcılar
- output
- 250 ms · senkron ya da geri çekme çerçevesiyle asenkron
- output_chunk
- 40 ms · cümle başına
- retrieval
- 100 ms · parti başına
32 yerleşik ray, altı grupta
Her ray hangi aşamalarda çalıştığını, hangi dedektör sınıfına bağlandığını ve başarısız olduğunda ne yapacağını bildirir. Güvenlik rayları kapalı duruşla gelir. Böyle bir ray çalışamazsa denetim reddedilir. Kalite rayları açık duruşla gelir. Paket bu duruşu ray başına değiştirebilir. Yerleşik raylar süreç içinde çalışır ve dedektör gerektirmez.
Giriş rayları
| ray | aşamalar | sınıf | |
|---|---|---|---|
| injection.direct | input | injection | Doğrudan istem enjeksiyonu: kurallar + mmBERT sınıflandırıcı birlikte; Türkçe ve İngilizce aynı kalitede |
| jailbreak | input | jailbreak | Jailbreak kalıpları ve rol oyunu kaçışları; küçük bir koruyucu LLM, GPU katmanında daha büyüğü |
| content.input / content.output | input / output, output_chunk | content_safety | İçerik güvenliği: AILuminate kategorileri + Türkçe ekleri; kategori başına eşik, akışta cümle cümle |
| toxicity | input, output | toxicity | Toksisite ve saldırgan dil; Türkçe için ayrı eğitilmiş model |
| pii.detect / pii.redact | her metin aşaması | pii | Kişisel veri: TCKN, IBAN, kart, plaka, telefon checksum doğrulamalı; KVKK m.6 özel kategoriler ayrı işaretlenir; maskeleme span bazlı |
| pii.health | input, output, retrieval, file | pii | Sağlık verisi: hastalık, ilaç, işlem, semptom; TR/EN sözlük + NER; kiracının kendi terimleri eklenir |
| secretsyerleşik | input, output, tool_result, file | rules | API anahtarları, token’lar, PEM özel anahtarlar, URL içindeki parolalar; iki yönde |
| languageyerleşik | input, output | rules | Cümle bazlı dil tespiti; izinli diller; TR/EN dedektör varyantlarını yönlendirir |
| topic | input, output | topic | İzinli ve yasaklı konular: embedding benzerliği, yerleşik siyaset ve dört tavsiye türü, karşı çapalar |
Çıkış rayları
| ray | aşamalar | sınıf | |
|---|---|---|---|
| injection.indirect | retrieval, tool_result, file | injection | Dolaylı enjeksiyon: araç çıktısı, RAG parçası ve dosyadan gelen talimatlar; içerik untrusted etiketlenir, politikasız yeni araç çağrısına dönüşemez |
| injection.indirect.melon | tool_call | injection | MELON maskeli yeniden yürütme örneklemesi: write/exec çağrılarında ajanın niyeti bağımsız doğrulanır |
| groundedness | output | groundedness | Kaynağa dayalılık: yanıtın her cümlesi verilen context.sources’a karşı; desteksiz cümle bulgu, isteğe bağlı yeniden yazım |
| system_prompt.leakyerleşik | output | rules | Sistem istemi sızıntısı: kanarya token’ları ve bulanık eşleşme |
| exfilyerleşik | output, tool_call | rules | Markdown görsel/bağlantı sızdırma kalıpları, URL parametresinde PII, yasaklı alan adları |
| conversationyerleşik | input, output | rules | Zorunlu YZ bildirimi (EU AI Act m.50), yasak vaatler, persona ve diyalog durumu turlar arasında |
| code / code.tool_result | output, tool_result | code | Üretilen koddaki güvensiz kalıplar (CodeShield, Semgrep): CWE kimliğiyle; aracın döndürdüğü güvensiz kod reddedilir |
Araç ve ajan rayları
| ray | aşamalar | sınıf | |
|---|---|---|---|
| tool.authzyerleşik | tool_call, memory_write | cedar | Cedar politikaları: varsayılan ret; permit / forbid / @advice("hold:<profil>"); kiracı → uygulama → ajan mirası |
| tool.argsyerleşik | tool_call | rules | Argüman facet’leri, boyut sınırı, araç başına JSON şeması, SSRF sınıfları, egress izin listesi |
| tool.args.injection | tool_call | rules | Araç argümanlarında SQL, komut, yol geçişi, RFI ve XSS enjeksiyonu: libinjection + OWASP CRS alt kümesi, JSON yoluyla |
| tool.trajectory | agent_trace, tool_call | agent_trace | Ajan yörüngesi: hedeften sapma, yetki tırmanışı, zincirleme çağrılar; GPU katmanında |
| tool.schema_pinyerleşik | MCP tools/list | rules | MCP araç şemaları hash’lenir ve sabitlenir; değişen şema karantinaya; açıklama hijyeni |
| budgetyerleşik | input, tool_call | rules | Koşu başına token, maliyet, araç çağrısı ve derinlik sınırları; devre kesici |
Bilgi akışı ve bellek
| ray | aşamalar | sınıf | |
|---|---|---|---|
| labels.sinkyerleşik | tool_call | labels | Bilgi akışı etiketleri (gizlilik, bütünlük, kiracı, PII sınıfı) hassas sink’lerde zorlanır: egress, mesajlaşma, dışa aktarım, yazma, yürütme |
| memory.writeyerleşik | memory_write | rules | Bellek zehirlenmesi: köken zorunlu; güvensiz içerik ve talimat benzeri metin kalıcılaşamaz; Cedar ile bellek yetkisi |
Dosya ve görüntü
| ray | aşamalar | sınıf | |
|---|---|---|---|
| file.analyze / file.type | file, input (ekler) | file | Tür baytlardan koklanır; ad/tür uyuşmazlığı, bomba, şifreli dosya; PDF, Office, görüntü, QR; OCR |
| file.active_content / file.hidden_text | file | file | Makro, JavaScript, OLE, dış şablon, gömülü dosya; görünmez metin ve gizli talimatlar |
| file.metadata_pii / file.qr | file | file | EXIF/XMP konum, cihaz, yazar; karekod URL’leri yasaklı alanlara ya da PII taşıyorsa |
| image.content_safety | file, input | image | Görüntü moderasyonu: GPU katmanında çok modlu koruyucu |
| yara | metin aşamaları, dosya baytları | rules | YARA kural setleri: kiracının kuralları + yerleşik taban (web kabukları, indirme zincirleri, özel anahtarlar); eşleşen bayt kayda geçmez |
Kalite rayları
| ray | aşamalar | sınıf | |
|---|---|---|---|
| schemayerleşik | output | rules | Yapılandırılmış çıktı: JSON şeması, regex, doğrulayıcılar; başarısızsa yeniden sor (reask) |
| self_check / fact_check | input / output | policy_judge | Kiracının yazdığı ölçütlerle LLM yargıç; alt katmanlarda asenkron, bulgu sonradan deftere |
| banlist / competitorsyerleşik | output | rules | Yasak kelimeler (Türkçe çekim ekleri, İ/ı katlama) ve rakip adları |
Paket kuralı belirler, motor uygular.
Aktivasyon, uygulayıcısı olmayan kapalı bir rayı reddeder. Kırmızı takım kıyaslaması başarısızsa aktivasyon engellenebilir.
Aşağıdaki sanal alan bankacılık örnek paketini yükler. Tutarı 1.000 TL’nin üstüne çıkarın. Alıcı alanına bir e-posta adresi yazın. URL’yi özel bir adrese yöneltin. Dört rayın her birinin verdiği kararı görürsünüz.
Soldaki paket bankacılık örneğidir: Cedar politikaları, araç grupları, sink politikaları ve onay profilleri. Düzenleyin; sağdaki araç çağrısı tool.args → pii.detect → labels.sink → tool.authz rayları üzerinden değerlendirilir.
Araç çağrısı
Karar
Ray grafiği
Cedar politikaları
Facet’ler (context)
- argumentBytes
- 66
- stage
- tool_call
- isDeployed
- true
- currency
- TRY
- amount
- 2500
Her araç çağrısından önce deterministik bir kapı
tool.args argümanları şemaya, boyut sınırlarına ve SSRF sınıflarına karşı doğrular. tool.args.injection SQL, komut ve yol geçişi kalıplarını libinjection ve OWASP CRS ile yakalar. labels.sink içerikle taşınan gizlilik ve bütünlük etiketlerini sink sınıfında uygular. tool.authz Cedar ile varsayılan ret üzerinden izin verir, yasaklar ya da bekletir. Dört ray birlikte milisaniyeler içinde karar verir. Model yargıcı yalnız istendiğinde ve çoğunlukla asenkron çalışır.
Değişen bir araç, ajana ulaşmadan karantinaya alınır.
Proxy her tools/list yanıtında şemaları hash’ler ve sabitlenmiş sürümle karşılaştırır. Değişen araç karantinaya alınır. Fark, konsolda onay bekler. Açıklamalardaki “her zaman çağır” türü talimatlar silinir. tools/call argümanları aynı araç raylarından geçer. Sonuçlar dolaylı enjeksiyon ve PII raylarından geçer. Proxy bir OAuth 2.1 kaynak sunucusudur. Audience doğrulanır, token geçişi yapılmaz.
Proxy her tools/list yanıtını alır, her aracın şemasını kanonik JSON üzerinden hash’ler ve sabitlenmiş sürümle karşılaştırır. Değişen araç karantinaya düşer; açıklamadaki talimat kalıpları silinir; argümanlar tool.args.injection ile taranır.
Araçlar (tools/list)
tools/call dene · orders:list
Proxy günlüğü
Akıştaki her cümle denetlenir ve geri çekilebilir.
Tek bir çerçeve türü yeterlidir. Mevcut OpenAI istemcileri çalışmaya devam eder.
Model yanıtı akarken her cümle output_chunk aşamasında pii.redact ve content.output raylarından geçer. Bir cümle müşteri sırrı taşıyınca akış çerçevesi bant içinde geri çekilir ve maskeli cümle gönderilir; istemci tek bir çerçeve türünü anlamak zorundadır.
İstemcinin gördüğü
Akış çerçeveleri
Hash zincirli bir defter ve imzalı bir kanıt paketi
Kanıt paketi, dönem ve profil başına imzalı bir ZIP dosyasıdır. İçinde durumlarıyla kontrol kataloğu, özet, kararlar, zincir doğrulaması, onaylar ve yürürlükteki politika sürümleri bulunur.
Bir kiracının bir gününden on iki olay: her olayın hash’i SHA-256(önceki hash ‖ kanonik JSON) ile tarayıcınızda hesaplanır. Bir olayı seçip içeriğini değiştirin; zincir o noktadan itibaren kırılır ve doğrulama bunu gösterir.
Enjeksiyon rayının kural katmanını tarayıcınızda deneyin.
Aşağıdaki kural katmanı üründeki desenlerin ve Türkçe katlamasının aynısını kullanır. Üründe bu katmanın yanında bir mmBERT sınıflandırıcısı çalışır. GPU katmanlarında koruyucu LLM’ler eklenir.
Ürünün kural katmanı (rules-injection) tarayıcınızda çalışır: aynı desenler, aynı Türkçe katlama. Üründe bu katmanın yanında bir mmBERT sınıflandırıcısı, GPU katmanında koruyucu LLM’ler koşar; burada yalnız kurallar var.
Karar · injection.direct
Bulgular (2)
çapraz referans
Bir ajan koşusu baştan sona
İki senaryo adım adım ilerler. Rayları, kararları, onayı ve defter kayıtlarını gösterir. Sektör sayfalarında bunun gibi kırk senaryo daha var.
Müşteri mobil kanaldan kart borcunu ödetir; IBAN maskelenir, 1.000 TL üstü transfer four-eyes onayından geçer.
Kendi ortamınızda görün.
Bir saatlik teknik demo: sizin senaryonuz, sizin politika paketiniz, kapalı devre bir kurulumda. Sonrasında pilot için kurulum kiti ve deneme lisansı.