Beş Düz Metin Dosyası ile Üç Yapay Zeka Ajanını Yönetmek
Karmaşık yapay zeka sistemlerini yönetmek için binlerce satır koda veya pahalı orkestrasyon araçlarına ihtiyacınız olduğunu mu düşünüyorsunuz? Aslında, sadece beş adet düz metin (plain-text) dosyası kullanarak üç farklı yapay zeka ajanını mükemmel bir uyumla yönetmek mümkündür. Bu rehberde, büyük dil modellerinin (LLM) gücünü en yalın ve sürdürülebilir şekilde nasıl kontrol edebileceğinizi adım adım öğreneceksiniz.
Yapay zeka dünyasında son dönemde en çok konuşulan konulardan biri otonom ajanlardır. Ancak bu ajanların koordinasyonu, genellikle yazılımcılar için büyük bir karmaşaya dönüşür. Ağır kütüphaneler, karmaşık bağımlılıklar ve sürekli değişen API yapıları projeleri çıkmaza sokabilir. İşte tam bu noktada, düz metin dosyalarının gücü devreye giriyor. Sadece basit metinler yazarak, sisteminizin esnekliğini artırabilir ve ajanlarınızı kolayca denetleyebilirsiniz.
Yapay Zeka Ajanı (AI Agent) Nedir ve Neden Yönetilmelidir?
Öncelikle temel kavramları netleştirmek gerekir. Bir yapay zeka ajanını, belirli bir görevi yerine getirmek üzere özelleştirilmiş, karar verme yeteneğine sahip bir LLM (Büyük Dil Modeli) yapılandırması olarak tanımlayabiliriz. Bu ajanlar, sadece sorulan sorulara cevap vermekle kalmaz; ellerindeki araçları (tools) kullanarak veritabanlarına erişebilir, e-posta gönderebilir veya harici API’ler ile etkileşime geçebilirler.
Ancak, tek bir ajana tüm görevleri yüklemek büyük bir hata olur. Örneğin, hem müşteri ilişkilerini yöneten, hem fatura kesen, hem de sistem güvenliğini denetleyen tek bir ajan tasarlarsanız, bu ajan kısa sürede “bağlam kayması” (context drift) yaşayacaktır. Bu durum, yapay zekanın halüsinasyon görmesine veya yanlış kararlar almasına yol açar. Bu nedenle, işleri bölerek birden fazla uzman ajan kullanmak en mantıklı çözümdür.
Çoklu ajan sistemlerinde (multi-agent systems) en büyük zorluk koordinasyondur. Ajanların ne zaman devreye gireceğini, hangi bilgileri paylaşacağını ve sınırlarının ne olduğunu belirlemek gerekir. Orkestrasyon (orchestration) adı verilen bu süreci kodun içine gömmek yerine, dışarıdan okunabilir düz metin dosyalarıyla yönetmek bize inanılmaz bir esneklik sağlar. Böylece yazılım koduna dokunmadan, sadece bir metin dosyasını güncelleyerek tüm sistemin davranışını değiştirebiliriz.
Yönetim Sistemimizin Omurgası: Beş Düz Metin Dosyası Nedir?
Sistemimizi yönetmek için kullanacağımız beş düz metin dosyası, ajanlarımızın anayasası, görev tanımları ve iletişim protokolleridir. Bu dosyaların her biri belirli bir amaca hizmet eder ve insan tarafından kolayca okunup düzenlenebilir. Aşağıdaki tabloda bu dosyaların işlevlerini ve formatlarını inceleyebilirsiniz:
| Dosya Adı | Formatı | Temel Amacı |
|---|---|---|
global_rules.txt |
Düz Metin (Plain-text) | Sistem genelinde geçerli etik kurallar, dil tonu ve KVKK sınırları. |
agent_registry.txt |
JSON / YAML (Metin tabanlı) | Sistemdeki ajanların isimleri, rolleri ve uzmanlık alanları. |
routing_matrix.txt |
Düz Metin (Kurallar listesi) | Gelen talebin hangi ajana yönlendirileceğini belirleyen matris. |
shared_context.txt |
Düz Metin (Dinamik) | Ajanların ortaklaşa kullandığı güncel oturum ve durum bilgileri. |
tool_manifest.txt |
JSON / YAML (Metin tabanlı) | Ajanların erişebileceği harici araçların ve fonksiyonların listesi. |
Bu beş dosya, sistemimizin “kontrol merkezi” olarak işlev görür. Herhangi bir kodlama bilgisine sahip olmayan bir ürün yöneticisi bile, sadece global_rules.txt dosyasını düzenleyerek yapay zekanın müşterilere karşı takınacağı tavrı anında değiştirebilir. Bu durum, yazılım geliştirme süreçlerinde inanılmaz bir hız ve bağımsızlık kazandırır.
Adım Adım Kurulum: Üç Ajanlı Senaryomuzu Nasıl Tasarlıyoruz?
Bu sistemi daha iyi anlamak için gerçekçi bir senaryo üzerinden ilerleyelim. Türkiye pazarında faaliyet gösteren “YoreselLezzetler.com” adında bir e-ticaret sitemiz olduğunu hayal edelim. Bu sitede müşteri memnuniyetini sağlamak, siparişleri takip etmek ve güvenliği denetlemek için üç farklı yapay zeka ajanı tasarlayacağız:
- Müşteri İlişkileri Ajanı (MIA): Müşteriyi samimi bir dille karşılar, soruları dinler ve ilk analizi yapar.
- Sipariş ve Lojistik Ajanı (SLA): Kargo takibi, iade süreçleri ve stok kontrolleri gibi operasyonel işleri yürütür.
- Kalite ve Güvenlik Denetçisi (KGD): Görüşmeleri KVKK (Kişisel Verilerin Korunması Kanunu) açısından denetler, kredi kartı veya adres gibi hassas verileri maskeler.
Şimdi bu üç ajanı yönetmek için kullanacağımız beş metin dosyasının içeriklerini hazırlayalım. İlk olarak global_rules.txt dosyamızı oluşturalım. Bu dosya, tüm ajanların uyması gereken kırmızı çizgileri belirler:
[SİSTEM GENELİ KURALLARI]
1. Dil her zaman Türkçe, profesyonel ama samimi olmalıdır.
2. Kesinlikle siyaset, din veya toplumsal hassasiyeti olan konulara girilmeyecektir.
3. Kullanıcıdan asla şifre, kredi kartı CVV kodu gibi hassas bilgiler talep edilmeyecektir.
4. KVKK kuralları gereği, adres ve telefon bilgileri paylaşılmadan önce maskelenmelidir.
5. Bilinmeyen veya emin olunmayan durumlarda "Bilmiyorum" denmeli, uydurma bilgi verilmemelidir.
İkinci olarak, sistemdeki ajanlarımızı tanımlayan agent_registry.txt dosyasını hazırlıyoruz. Bu dosya, her bir ajanın kimliğini ve yetki alanını netleştirir:
{
"agents": {
"MIA": {
"name": "Müşteri İlişkileri Ajanı",
"description": "Kullanıcıyı karşılar, genel soruları yanıtlar ve şikayetleri dinler.",
"allowed_tools": ["search_faq"]
},
"SLA": {
"name": "Sipariş ve Lojistik Ajanı",
"description": "Sipariş durumunu sorgular, kargo takibi yapar ve iade taleplerini işler.",
"allowed_tools": ["check_order_status", "trigger_refund"]
},
"KGD": {
"name": "Kalite ve Güvenlik Denetçisi",
"description": "Süreçlerin güvenliğini denetler, hassas verileri filtreler.",
"allowed_tools": ["mask_sensitive_data"]
}
}
}
Kod Üzerinde Görelim: Python ile Düz Metin Dosyalarını Okumak ve Ajanları Yönetmek
Oluşturduğumuz bu düz metin dosyalarını Python tabanlı bir orkestratör (yönlendirici) ile nasıl hayata geçireceğimizi görelim. Aşağıdaki kod bloğu, dosyaları okuyarak gelen kullanıcı mesajını doğru ajana nasıl yönlendireceğimizi basitçe göstermektedir:
import json
def load_text_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
return file.read()
def load_json_file(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
return json.load(file)
# Dosyaları yüklüyoruz
global_rules = load_text_file('global_rules.txt')
agent_registry = load_json_file('agent_registry.txt')
routing_matrix = load_text_file('routing_matrix.txt')
def route_user_query(query):
print(f"Gelen Kullanıcı Talebi: {query}")
# Basit bir yönlendirme mantığı (Gerçek senaryoda LLM karar verir)
if "kargo" in query or "sipariş" in query or "iade" in query:
target_agent = "SLA"
elif "kart" in query or "şifre" in query or "adres" in query:
target_agent = "KGD"
else:
target_agent = "MIA"
agent_info = agent_registry["agents"][target_agent]
print(f"Yönlendirilen Ajan: {agent_info['name']}")
print(f"Uygulanan Kurallar: {global_rules[:100]}...")
return target_agent
# Test ediyoruz
selected_agent = route_user_query("Geçen hafta verdiğim Trabzon tereyağı siparişim hala kargoya verilmedi, durum nedir?")
Yukarıdaki Python kodu, sistemimizin ne kadar modüler çalıştığının en temel kanıtıdır. Kodun kendisi oldukça basittir; çünkü tüm iş mantığı, kurallar ve ajan tanımları düz metin dosyalarında tutulmaktadır. Bu sayede, gelecekte yeni bir kural eklemek veya bir ajanın yetkisini değiştirmek istediğimizde Python kodunu değiştirmemiz veya yeniden deploy etmemiz (yayına almamız) gerekmez.
Ajanlar Arası İletişim ve Yönlendirme (Routing) Nasıl Sağlanır?
Çoklu ajan sistemlerinde en kritik aşama, bir ajanın işi bittiğinde veya yetkisini aşan bir durumla karşılaştığında görevi diğer ajana nasıl devredeceğidir (handoff). Bu süreci yönetmek için routing_matrix.txt dosyasını kullanıyoruz. Bu dosya, ajanlar arasındaki geçiş yollarını tanımlayan basit bir yönlendirme kılavuzudur.
Örneğin, bir müşteri “Siparişim nerede?” diye sorduğunda, ilk olarak MIA (Müşteri İlişkileri Ajanı) devreye girer. Ancak MIA, doğrudan veritabanına erişip sipariş sorgulayamaz. Bu durumda MIA, talebi SLA’ya (Sipariş ve Lojistik Ajanı) devretmek zorundadır. İşte routing_matrix.txt dosyamızın içeriği bu geçişleri şöyle tanımlar:
[YÖNLENDİRME KURALLARI]
IF user_intent CONTAINS "kargo, sipariş, iade, stok" -> TRANSFER_TO(SLA)
IF user_input CONTAINS "adres, telefon, tc, email" -> EXECUTE_FIRST(KGD) -> THEN_TRANSFER
IF agent_response CONTAINS "hata, sistem arızası" -> TRANSFER_TO(HUMAN_SUPPORT)
IF user_intent IS "genel_sohbet, teşekkür, karşılama" -> TRANSFER_TO(MIA)
Bu matris sayesinde, ana yönlendirici (router) LLM, kullanıcının girdisini analiz ederek bir sonraki adımda hangi ajanın konuşması gerektiğine karar verir. Bu durum, gereksiz token (anlamlı kelime parçacıkları) harcamasını önler ve sistemin yanıt süresini (latency) ciddi oranda düşürür.
Gerçek Dünya Vaka Analizi: Yerel E-Ticaret Sitemizde Ajan Yönetimi
Sistemimizin başarısını ölçmek için gerçek bir senaryoyu simüle edelim. Müşterimiz Ahmet Bey, “YoreselLezzetler.com” üzerinden aldığı Kars kaşarının bozuk çıktığını iddia ederek sisteme başvuruyor ve iade talep ediyor. Sürecin arka planda nasıl işlediğini adım adım inceleyelim:
Adım 1: Karşılama ve Analiz (MIA): Ahmet Bey sisteme yazar: “Merhaba, dün gelen Kars kaşarı küflenmişti. İade etmek istiyorum. Adresim: Kadıköy/İstanbul, Tel: 0532…” MIA mesajı alır. global_rules.txt dosyasındaki KVKK kurallarını hatırlar. Ancak doğrudan adrese müdahale edemediği için önce güvenlik filtresini tetikler.
Adım 2: Güvenlik Denetimi (KGD): routing_matrix.txt gereği, girdi içerisinde adres ve telefon olduğu için KGD devreye girer. Hassas verileri maskeler: “Adresim: [MASKELENDİ], Tel: [MASKELENDİ]”. Temizlenen veriyi ortak hafıza dosyası olan shared_context.txt içerisine yazar.
Adım 3: Operasyon ve İade (SLA): Temizlenen talep SLA’ya iletilir. SLA, tool_manifest.txt dosyasında tanımlı olan check_order_status aracını kullanarak Ahmet Bey’in dün gerçekten bir Kars kaşarı siparişi verip vermediğini kontrol eder. Sipariş doğrulanır ve iade süreci başlatılır.
Adım 4: Kapanış (MIA): SLA işlemini tamamladıktan sonra görevi tekrar MIA’ya devreder. MIA, Ahmet Bey’e samimi bir dille yanıt verir: “Ahmet Bey, yaşadığınız bu olumsuz deneyim için çok üzgünüz. Küflenmiş Kars kaşarı siparişiniz için iade işlemini başlattık. Ücret iadeniz 3 iş günü içinde kartınıza yansıyacaktır.”
Bu süreç boyunca hiçbir insan müdahalesi olmamış, ancak sistem son derece güvenli, KVKK kurallarına uygun ve tutarlı bir şekilde çalışmıştır. Tüm bu koordinasyon, sadece arka plandaki beş düz metin dosyasının sınırları içerisinde gerçekleşmiştir.
İleri Düzey İpuçları: Performansı Artırmak ve Hataları Önlemek
Bu sistemi kendi projelerinizde uygularken performans kaybı yaşamamak ve maliyetleri optimize etmek için dikkat etmeniz gereken bazı ileri düzey püf noktaları vardır. Düz metin dosyalarıyla çalışmak her ne kadar kolay olsa da, ölçeklenebilirlik aşamasında bazı yapılandırma stratejilerine ihtiyaç duyar.
Bununla birlikte, en sık karşılaşılan sorunlardan biri “dosya şişmesi” (file bloating) durumudur. Özellikle shared_context.txt gibi dinamik dosyalar, konuşma uzadıkça çok fazla yer kaplayabilir. Bu durum, LLM’e her istek gönderildiğinde yüksek token tüketimine yol açar. Bunu önlemek için, her 5 konuşma dönüşünde bir eski bağlamı özetleyen (summarization) bir mekanizma kurmalısınız.
Ayrıca, düz metin dosyalarınızı Git gibi bir versiyon kontrol sistemi (version control system) ile takip etmeniz hayati önem taşır. Prompt engineering (yönerge mühendisliği) süreçlerinde yapacağınız küçük bir kelime değişikliği, ajanların davranışını tamamen değiştirebilir. Dosyalarınızı Git üzerinde tutarak, olası bir hatada “güvenli sürüme” (rollback) saniyeler içinde geri dönebilirsiniz.
Sonuç ve Sıkça Sorulan Sorular
Sonuç olarak, yapay zeka ajanlarını yönetmek için karmaşık ve ağır framework’lere (yazılım çerçevelerine) mahkum değilsiniz. Beş basit düz metin dosyası kullanarak hem sisteminizin kontrolünü elinizde tutabilir, hem de geliştirme maliyetlerini minimuma indirebilirsiniz. Bu yaklaşım, sisteminizi gelecekte çıkacak yeni LLM modellerine entegre etmeyi de son derece kolaylaştırır; çünkü tek yapmanız gereken, aynı metin dosyalarını yeni modele beslemektir.
Sıkça Sorulan Sorular
1. Bu düz metin dosyalarını hangi sıklıkla güncellemeliyim?
Sisteminizin kuralları veya iş süreçleriniz değiştikçe bu dosyaları güncelleyebilirsiniz. Kod güncellemesi gerektirmediği için, canlı ortamdaki (production) sisteme anında yansır.
2. JSON yerine tamamen düz metin (.txt) kullanabilir miyim?
Evet, kullanabilirsiniz. Ancak ajan tanımları ve araç listeleri gibi yapılandırılmış veriler için JSON veya YAML formatı, Python tarafında parse edilmesini (ayrıştırılmasını) kolaylaştırdığı için daha avantajlıdır.
3. Bu yöntem güvenlik açığı oluşturur mu?
Hayır, tam aksine güvenliği artırır. Kurallarınız kodun içinde gömülü olmadığı için, güvenlik denetçileri (auditors) sadece bu beş metin dosyasını inceleyerek sistemin KVKK ve diğer regülasyonlara uygunluğunu kolayca raporlayabilir.
4. Büyük projelerde bu sistem yavaşlamaya neden olur mu?
Hayır. Düz metin dosyalarını bellekte (RAM) önbelleğe (cache) alarak okuma hızını milisaniyeler seviyesine indirebilirsiniz. Bu sayede sistem son derece performanslı çalışır.
#YapayZeka #AjanYönetimi #YazılımGeliştirme #AI #PromptEngineering