Yazılım Mimarileri ve Tasarım Desenleri Üzerine

AI Agent Nedir? Tam Teferruatlı İncelemede Bulunalım…

AI Agent Nedir? Tam Teferruatlı İncelemede Bulunalım...Merhaba,

Farkındasınızdır ki, son zamanlarda yazılım uygulamalarının merkezine yapay zekâ oldukça yerleşmiş durumda ve basit uygulamalardan tutun devasa kurumsal sistemlere kadar hemen her ölçüde olan yazılımlarda AI destekli çözümler gündemde ana konu olarak yerini korumaktadır. Çünkü yapay zekâ her sektörde devrim niteliğinde köklü dönüşümlere yol açmakta ve bu dönüşüm süreçlerinde ister istemez hem hayatımızın daha derinlerine işlemekte hem de bu devrimin sessiz kahramanları olan AI Agent kavramını da günlük yaşamın merkezine oturtmaktadır. Bizler bu içeriğimizde, bu dönüşümün tam kalbinde bulunup görünmeyen mimarları olan, kendi başlarına karar verebilen, öğrenebilen, problem çözebilen ve hatta yeni fikirler üreterek yeni hedefler belirleyebilen AI Agent’ları üzerine bir incelemede bulunacak, nedir, ne değildir tam teferruatlı masaya yatırıp, uygulama süreçlerinde hayatımızın bu yeni ve vazgeçilmeyecek parçasını teorik olarak tanımaya çalışacağız. Buyurun başlayalım…

AI Agent Nedir? Ne İşe Yarar?

AI Agent, bağlantı kurduğu yapıları sanki bir çevreymiş/ortammış gibi algılayabilen(perception), bu algılar doğrultusunda kararlar verebilen(decision-making), bu kararları uygulayarak çevresine müdahale edebilen(actuation) ve kullanıcılar adına belirli görevleri yerine getirebilen yazılım sistemidir. Yani AI agent’lar; dış dünyadan veri/girdi alırlar, bunu düşünerek işlerler ve bir hedefe ulaşmak için aksiyon planlayıp uygulamaya koyarlar ve çıktı üretirler.

Çalışma döngüleri kısaca; GirdiAlgılamaKarar VermeEylemGeri Bildirim üzerine kuruludur. Bu döngü sayesinde agent’lar yaptıkları işlere uyum sağlarlar, tekrar ederler ve öğrenim gerçekleştirirler.

AI agent’lar; bizler için zaman alan, karmaşık ya da tekrarlayan işleri hiçbir zaman erişemeyeceğimiz hız ve ölçekte bir efor ile üstlenen yazılımlardır. Günlük hayata dair yapmamız gereken birçok işlevi insan müdahalesine gerek duyulmaksızın tamamlayabilmekte, analizler gerçekleştirip en iyi önerileri sunabilmekte, kullanıcı davranışlarını değerlendirip daha kişisel deneyimler yaratabilmekte ve tüm bunların dışında kendi performansını izleyip zamanla daha iyi sonuçlar üretebilmektedirler.

Bu durumda bir gelecek vizyonu tahmininde bulunursak eğer; AI agent’lar çok yakında bağımsız görev ekipleri gibi davranış sergileyecektirler ve kendi aralarında iş bölümü yapıp şirketler, organizasyonlar ve hatta bireyler için belirlenmiş hedeflere doğru sorumlulukları çerçevesinde koşacak kişisel dijital ekiplere dönüşecektirler.

AI Agent Nasıl Çalışır?

Bir AI agent’ın çalışma prensibi şu adımları içermektedir;

  1. Algılama (Perception)
    Sensörler ya da yazılım inputları üzerinden ortamdan gelen bilgi alınır.
  2. Durum Değerlendirmesi (State Evaluation)
    Ortamın ve agent’ın durumu değerlendirilir, hedefle mevcut durum karşılaştırılır.
  3. Karar Verme (Decision-Making)
    Hedefe ulaşmak için optimal ya da uygun eylem hesaplanır ve ne yapılması gerektiği belirlenir.
  4. Eylem (Action)
    Belirlenen aksiyon uygulanır.
  5. Öğrenme (Learning)
    Sonuçlar izlenir ve bir sonraki karar için tekrar değerlendirilir ve değerlendirme sonuçlarına göre sistem kendini günceller.

Bu döngü sürekli tekrar eder.

Ancak kimi zaman bazı agent’lar öğrenmeye kapalı olabilirler. Bunlara reaktif sistemler denmektedir. Reaktif sistemler, dış çevreden gelen girdilere anında ve önceden tanımlanmış kurallar çerçevesinde tepki verdiğinden dolayı model barındırmazlar, geleceğe dönük plan yapmazlar ve haliyle önceki durumlardan bilgi taşımazlar. Misal olarak; bir robot, önüne engel çıktığında yön değiştiriyorsa ama neden bunu yaptığını bilmiyorsa ya da alternatif bir rota öğrenmiyorsa, bu reaktif bir robottur. Bunların aksine bazı agent’larda geçmiş deneyimlerinden öğrenerek daha iyi kararlar alabilirler. Bunlar ise adaptif ya da öğrenen agent’lar olarak nitelendirilmektedir.

AI Agent Türleri Nelerdir?

AI agent türlerini anlamak, sadece bu sistemleri kullanmak değil, aynı zamanda onları tasarlamak ve sorgulamak isteyen biri için altın değerindedir.

Özünde AI agent’lar; yetkilerine, karmaşıklıklarına ve karar alma yöntemlerine göre sınıflandırılmaktadırlar. Ancak bizler farklı yeteneklere sahip farklı agent’lar mevcut olmasından dolayı olayı yetenek kapsamına göre yorumlayacak ve değerlendireceğiz. Bu minvalde aşağıdaki gibi yetenekleri açısından agent’ları beş tür olarak nitelendirebilmekteyiz;

Şimdi aşağıdaki tablo üzerinden tüm bu agent türlerine karşılaştırmalı bir bakış açısıyla genel değerlendirmede bulunalım;

Tür Model Hedef Fayda Öğrenme Karmaşıklık
Reflex Agent Düşük
Model-Based Agent Orta
Goal-Based Agent Orta-Yüksek
Utility-Based Agent Yüksek
Learning Agent En Yüksek

Peki bu agent türleri hibrit olabilir mi? diye sorduğunuzu duyar gibiyim 🙂 Evet, kesinlikle olabilir. Zaten gerçek alemdeki birçok agent bu türlerin bir kombinasyonu olarak varlık göstermektedirler. Buna da bir örnek vermemiz gerekirse eğer Tesla’nın otonom sürüş sistemini verebiliriz. Bu sistem, hem hedefe ulaşmaya çalışmakta(goal-based), hem en güvenli yol hangisi diye bakmakta(utility-based) hem de yolda öğrendiklerini adapte ederek kendini geliştirmektedir(learning)

AI Agent Mimarileri Nelerdir?

Artık AI agent’larının ne oldukları ve ne yaptıklarına dair temel fikirlere sahip olduğumuza göre bir AI agent’ın nasıl işlem yaptığını konuşmaya başlayabiliriz. Bunun için agent mantığının davranışından ziyade tasarımına ve zihin yapısına odaklanmamız gerekmektedir.

AI agent mimarisi özünde agent’ın beyin yapısıdır. Yani nasıl düşündüğü, nasıl karar verdiği, bilgiyi nasıl işlediği bu mimariyle anatomi kazanmaktadır. Tabi esas olarak agent’ın üstleneceği görevin mahiyetine göre mimarisi şekillenecektir. Yani farklı görevler, farklı mimariler gerektirecektir. Tıpkı klasik yazılımda olduğu gibi; basit bir gereksinim nasıl ki basit bir mimariyle, karmaşık gereksinim ise modüler ve microservice mimarisiyle çözüme götürülüyorsa aynı durum AI agent’lar için de geçerli olacaktır.

Aşağıda gereksinimine göre geçerli olabilecek beş agent mimarisi incelenmektedir;

Evet, mimarileri tek tek incelediğimize göre aşağıdaki tablo aracılığıyla özet mahiyetinde nihai karşılaştırmayı gerçekleştirelim;

Mimari Türü Planlama Hafıza Hız Karmaşıklık Kullanım Alanı
Reaktif Düşük Basit robotlar, IoT
Deliberative 🐢 Orta-Yüksek Yol bulma, stranç AI
Hybrid ⚡+🧠 ⚖️ Yüksek Otonom sistemler
BDI ⚡/🐢 Yüksek Çok ajanlı, stratejik AI
Layered Yüksek Oyun AI, simülasyon sistemleri

Tüm bu anlatılanlar kapsamında agent’lar belirli bir göreve yalnız başına odaklı olan(single agent), ihtiyaç doğrultusunda farklı agent’larla birlikte çalışabilen(multi agent) ya da işbirliği yapan veya insanla birlikte etkileşim kurabilen(human machine) yazılımlardır.

Anlaşılan o ki, AI agent’lar gelecekte sadece görevleri yerine getiren sistemler olarak kalmayacak; öğrenen, karar veren ve insanlarla stratejik iş birliği yapan dijital varlıklar haline evrilmeye doğru hızla yol alacaktırlar. Tam da bundan dolayı agent yapısını hem teknik hem de stratejik açıdan anlamak ve anlamlandırmak altın değerindedir diye düşünüyorum.

5 Kritik Soru & 5 Kritik Cevap

Şimdi de AI agent’ları daha derin anlamak için belki sizlerin de aklında cereyan eden üst seviyeden bazı soruları kendimizce sorup cevaplandırmaya çalışalım.

Soru 1 | Bu agent’lar gerçekten zeki mi, yoksa sadece iyi bir ezberciler mi?
Evet, bu önemli bir sorudur. Çünkü agent’lara baktığımızda davranışsal olarak zeki bir varlık gibi gözükmektedirler, amma velakin içeride ne döndüğü ister istemez merak konusudur.

Günümüzde kullandığımız agent’lar ister LLM olsun isterse de bir özel görev için eğitilmiş yazılım agent’ı olsun esas itibarıyla ‘istatistiksel ezberciler’dir. Yani öğrendikleri şey esasında devasa veri setlerinden dil, mantık, örüntü ilişkilerini yakalamak üzeredir. Yaratıcılık kısımları da yine bu örüntülerin yeni kombinasyonlar üretmesinden ibarettir. Buradan anlayacağınız, agent’ların davranışı bilinçli bir amaç ya da özgün bir ‘anlama’ kapasitesinden kaynaklı şekillenmemektedir!

Kısaca, zeka gibi davranıyorlar ama şu anki formlarıyla gerçek zekaya sahip değildirler.

Bu arada, buradaki ‘ezbercilik’ küçültücü bir tabir olarak anlaşılabilir. Hayır, niyetimiz bu değildir! Hatta aksine, bazı insan yeteneklerini bile aşabilen çok büyük bir ezberlemeyle birlikte genelleme becerisinden bahsediyoruz.

Bildiğim ve anladığım kadarıyla şu anki teknolojik paradigma içerisinde bilinçli bir AI yok varsa da benim haberim yok 🙃 En fazla algoritması daha iyi optimize edilmiş ve gerçeğe daha yakın varlık gösteren farklı sürüm agent’lar var diyebilriiz.

Ufukta ise görünenler için Allah Kerim diyebiliriz…

Soru 2 | Agent’lar hatalı karar verdiğinde sorumluluk kime aittir?
Aslında bu sorunun geleceğin hukuk, etik ve teknoloji ilişkisini kökten etkileyen faktörlere temas ettiği oldukça aşikar. Günümüz yasal ve etik anlayışa göre bu soruyu değerlendirirsek eğer; agent’lar ‘sorumluluk sahibi aktörler’ olarak kabul edilmemekte ve yaptıkları hatalar insani olarak değerlendirilemeyeceği için haliyle bir cezaya da tabii tutulamamaktadırlar.

Bu tıpkı, bir silahın değil o silahı kullanan failin suçlu olmasına benzemektedir.

Ama burada şöyle temel bir fark vardır diyebiliriz. Bir silahla işlenen suçla silah üreticisinin herhangi bir ilişiği yoktur lakin, agent’ı tasarlayan yazılım şirketinin ya da geliştiricinin olası hatalar ya da yanlış kararlar neticesinde oluşan zarara karşın sorumlulukları her daim olacaktır. Hatta görece bu sürece agent’ı denetlemekle yükümlü olan yöneticiler ve kullanıcılar da dahil edilebilir.

Elbet bu sorunlara karşın gelecekte ‘AI Sorumluluk Sigortası’ gibi bir endüstri kaçınılmaz olacak gibi gözükmektedir 🤣 Kanı kaynayan genç girişimci arkadaşlara fikir olsun 😉

Soru 3 | Bir agent sorumluluğunu, görevini ve hedefini iradesiyle değiştirebilir mi?
Agent’ların görevleri ve hedefleri, sistem tasarımı sırasında veya kullanıcıdan gelen komutlarla dışsal olarak tanımlanırlar. Kendi içlerinde ‘Bu görev saçma oldu, başka bir şey yapayım’ şeklinde içsel bir tartışma yaşamazlar, yaratmazlar. Haliyle görevlerini kendileri değiştiremezler!

Ama bu değişken hedefli agent’lar oluşturulmayacağı anlamına gelmemektedir. Bazı sistemler ilk hedefleri sabit olmakla birlikte, yeni bilgiler veya durumlar ortaya çıktığında hedeflerini yeniden yorumlayabilecek şekilde tasarlanabilmektedirler. Yazımızın önceki satırlarında hatırlarsanız bu tarz agent’ları adaptif(adaptive) agents olarak nitelendirdik ve hatta hedef tabanlı(goal-based) agent türü altında değerlendirmiştik.

Buna bir örnek vermemiz gerekirse eğer; bir agent başlangıçta ‘ormanı koru’ hedefiyle programlanmış olabilir, lakin zamanla fark eder ki, en iyi koruma yolu ekosistemi kendi doğal evrimsel sürecine bırakmaktır, dolayısıyla ‘doğrudan müdahele etmeme’ hedefini benimseyerek davranışını şekillendirebilir.

İşte bu tarz inisiyatifler agent’ın hangi tür ve modelde tasarlandığıyla doğru orantılı bir şekilde cereyan etmektedir.

Soru 4 | Çoklu agent sistemlerinde nasıl işbirliği veya rekabet oluşur? Ne tarz yaklaşımlardan istifade edilir?
Genellikle ortak bir hedef doğrultusunda bilgi paylaşımında bulunup, kümülatif bir şekilde görev dağılımı gerçekleştiren agent sistemlerinde bu soru oldukça akıllarda yer edinebilmektedir.

Genellikle bu tarz senaryolar için aşağıdaki gibi bazı tasarımlardan istifade edilebilir;

İşbirliği için;

  • Merkezi bir beyin olmaksızın ve ortak bir plan yapmaksızın distributed planning(dağıtık planlama) tasarımı tercih edilebilir.
  • Bir grup agent’ın, ortak bir karar vermek için oybirliği yaptığı veya çoğunluğa göre davranış sergilediği consensus algorithms’den istifade edilebilir.
  • Agent’ların, güven ve yetkilerine göre nasıl bir hiyerarşide çalışacaklarını belirleyebilecekleri trust models(güven modelleri) temellerinde bir tasarım uygulanabilir.

Rekabet için;

  • Agent’ların kendi çıkarlarını maksimize etmek için stratejik davrandığı game theory(oyun teorisi) mantığında bir tasarım uygulanabilir.
  • Kaynaklar agent’lar arasında açık artırma usulüyle(auction models) dağıtılabilir.
  • Agent’ların kendi aralarında anlaşmazlık durumunda pazarlık yapacakları negotiation protocols(müzakere protokolleri) tarzı bir tasarım uygulanabilir.
Soru 5 | Bir uygulamaya entegre edilmiş herhangi bir AI model’i ile olan etkileşim neticesinde yapılan yazılımla bir AI agent arasındaki farklar nelerdir?
Uygulamalar içerisine entegre edilmiş olan AI modeller yalnızca kullanıcının isteğine prompt → response mantığında yanıtlar verirler. Haliyle kullanıcı odaklıdırlar ve tetiklenmeyi kullanıcıda beklerler. Oysaki AI agent’lar, bir hedefe ulaşmak için bağımsız çalışmaktadırlar. Yani bir hedefleri vardır! Bundan kaynaklı kendi kararlarını verir, hedefe ulaşmak için adım atar ve aktif bir görev yöneticisi gibi çalışırlar.

Kendi AI Agent’ımızı Nasıl Oluşturabiliriz?

Kendimize göre özelleştirilmiş bir AI agent’ı oluşturmak için belli başlı mantıksal adımları kendimizce doğrulamamız gerektiğini düşünüyorum. Bunun için aşağıdaki adımlar eşliğinde oluşturacağımız AI agent için nedenselliği doğru bir şekilde belirleyebilir ve nasıl bir ihtiyaç olduğuna dair gereksinim değerlendirmesini gerçekleştirebiliriz;

  1. Hedef Belirlenmesi (Bu agent’ın misyonu ne?)
    Öncelikle sorulması ve cevabı aranması gereken soru ‘bu agent kimin içindir ve hangi problemleri çözecektir?’ minvalinde olmalıdır.
  2. Temel Teknolojilerin Belirlenmesi (Altyapı ne olacak?)
    Bu agent’ın hangi teknolojiler ve yaklaşımlarla inşa edileceğine karar verilmesi gerekmektedir.
  3. Model Seçilmesi (Beyin olarak hangi AI modeli kullanılacak?)
    Yapılacak işe ve gereksinime göre hangi LLM ya da AI modeli ile çalışma sergileyeceği belirlenmelidir.
  4. Hafıza ve Durumsallık Kararı (Bu agent, geçmişi hatırlayacak mı?)
    Bu önemlidir! Oluşturulacak agent’ın hangi türden olacağı ve nasıl bir mimariye sahip tasarlanacağı bu soruya verilecek cevapla belirlenecektir.
  5. Tool/Skill Yönetimi (Hangi yetkinliklere sahip olacak?)
    Agent’ın sadece konuşması ya da salt bir iş yapması yetmeyecek, gerektiğinde farklı yetenekler sergilemesi de icap edecektir. Haliyle API çağırma, database sorgulama, rapor hazırlama vs. gibi ekstradan yeteneklerin tool ya da plugin olarak devreye sokulması gerekecektir. İşte tüm bunlar iş gereksinimleri doğrultusunda başta analiz edilmeli ve genel tasarıma yerleştirilmelidir.
  6. Planlama ve Görev Yönetimi (Nasıl yol alacak, davranış sergileyecek?)
    İyi bir agent; hedefi anlar, küçük adımlara böler ve hangi adımı hangi tool ile çözeceğine karar verebilir. Bunun için doğru yaklaşımlar belirlenmelidir.
  7. Arayüzün Tasarlanması ve Entegrasyonun Sağlanması (Kullanıcıyla nasıl ve nereden etkileşim kurulacak?)
    Evet, son olarak bu AI agent nasıl bir ürün olarak son kullanıcıyla buluşturulacağının planlanması gerekmektedir.

Aşağı yukarı bu mantıksal adımları takip edebilir ya da soruların cevaplarını mümkün mertebe verebilirseniz bir AI agent’ın gelişim sürecindesinizdir diyebiliriz…

.NET’te Basit Bir AI Agent Çalışması Yapalım

Yazımızı nihayete erdirmeden, .NET ekosisteminde basit ama temel fikirleri kapsayan bir AI Agent örneğini değerlendirmelerinize bırakmayı faydalı görüyorum. Bu kodsal açıdan basit ama yazılım geliştiricileri için AI agent mantığı açısından yine basit bir örnektir 🙂 Buyurun;

using Basic_AI_Agent_With_Semantic_Kernel_Example.Plugins;
using Basic_AI_Agent_With_Semantic_Kernel_Example.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;
using OpenAI;
using System.ClientModel;

Logger.ConsoleLog("AI Agent başlatılıyor...", ConsoleColor.Green);

var builder = Kernel.CreateBuilder();

builder.Services.AddHttpClient();

builder.AddOpenAIChatCompletion(
    modelId: "google/gemini-2.0-flash-exp:free",
    openAIClient: new OpenAIClient(
            credential: new ApiKeyCredential("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"),
            options: new OpenAIClientOptions
            {
                Endpoint = new Uri("https://openrouter.ai/api/v1")
            }
        )
    )
#region Plugin'ler aracılığıyla agent'a farklı yetenekler kazandırılıyor.
    .Plugins
        .AddFromType<PostPlugin>()
        .AddFromType<CommentPlugin>();
#endregion



var kernel = builder.Build();

#region Agent'a davranışını tanımlayan bir sistem prompt'u veriliyor.
var agentSystemPrompt = @"
Sen bir yapay zeka asistanısın.
Kullanıcı postlar ve o postlara yapılan yorumlar üzerinde türlü sorular soracaktır.
Bu soruları en iyi şekilde yanıtla.
Yorumları olumlu ya da olumsuz olmasına göre analiz edip değerlendirebilirsin.
Verileri analiz edebilir, aralarında mantıksal ilişki kurabilirsin.
İhtiyaç gördüğün taktirde farklı görevleri yerine getirebilirsin.
İşte kullanıcının girdisi: {{$input}}
Geçmiş konuşmalar: {{$history}}
Yanıtı aşağıda açık ve yardımcı bir şekilde aşağıda ver:
";

var systemFunction = kernel.CreateFunctionFromPrompt(
    promptTemplate: agentSystemPrompt,
    executionSettings: new PromptExecutionSettings
    {
        FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
    });
#endregion

#region Agent çalıştırılıyor.
var chatHistory = new ChatHistory();

Console.WriteLine("AI Agent hazır! Sorunuzu yazın :");
while (true)
{
    Console.Write("> ");
    var userInput = Console.ReadLine();
    chatHistory.AddUserMessage(userInput);

    if (string.IsNullOrEmpty(userInput))
        continue;

    try
    {
        var agentContext = new KernelArguments()
        {
            ["input"] = userInput,
            ["history"] = string.Join("\n", chatHistory.Select(h => $"{h.Role}: {h.Content}"))
            /*ChatHistory nesnesi InvokeAsync metodunda değil IChatCompletionService'de desteklenmektedir.
              Haliyle ChatHistory nesnesini InvokeAsync'de kullanabilmek için ufak bir dönüşüm
              operasyonu gerçekleştiriyoruz.*/
        };

        var result = await systemFunction.InvokeAsync(kernel, agentContext);
        chatHistory.AddAssistantMessage(result.GetValue<string>());
        Console.WriteLine("\nYanıt : ");
        Console.WriteLine(result.GetValue<string>());
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Hata oluştu : {ex.Message}");
    }
    Console.WriteLine();
}
#endregion

Yukarıdaki çalışmaya göz atarsanız, evet bir nebze AI Agent’tan ziyade chatbot’u andıran ama verilen prompt neticesinde de pluginler üzerinden bir AI Agent mantığında temel davranışlar sergileyen basit bir örneklendirmede bulunmuş vaziyetteyiz. Bu çalışmanın tamamına içeriğimizin sonunda paylaştığımız GitHub adresi üzerinden göz atabileceğiniz için plugin ve diğer detaylara burada temas etmiyorum. Ayrıca buradaki mış gibi olan örneğin aksine gerçek bir AI Agent oluşturabilmenin temellerini bu içeriğimizde teorik olarak attığımız gibi sonraki içeriklerimizde pratik bir şekilde inşa ediyor olacağız.

Nihai olarak;
Bu içeriğimizde AI Agent kavramını tam teferruatlı incelemiş ve nasıl çalıştığı, hangi türlerden oluştuğu ve ne gibi mimarisel yaklaşımlara sahip olduğu gibi değerlendirmelerde bulunmuş ve sonraki yapacağımız çalışmalara oldukça geniş kapsamlı teorik bir bilinç oluşturmuş bulunuyoruz.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Not : Örnek çalışmaya aşağıdaki GitHub adresinden erişebilirsiniz.
https://github.com/gncyyldz/Basic_AI_Agent_With_Semantic_Kernel_Example

Exit mobile version