Agent Frameworks

Microsoft Semantic Kernel ile Akıllı Ajanlar Oluşturma: Kapsamlı Bir Kılavuz

Yazılım geliştirme dünyası, deterministik mantıktan olasılıksal, yapay zeka destekli etkileşimlere doğru hızla evriliyor. Geliştiriciler olarak, artık sadece çalışan kod yazmak değil, niyet ve bağlamı anlayabilen sistemler tasarlamak temel meydan okumamız haline geldi. İşte tam da bu noktada Semantic Kernel devreye giriyor; Microsoft'un geleneksel programlama dillerini Büyük Dil Modeli (LLM) teknolojisindeki en son gelişmelerle birleştirmek üzere tasarlanmış açık kaynaklı SDK'sı. Bu blog yazısı, .NET uygulamalarında sağlam AI ajanları oluşturmak için Semantic Kernel'ın mimarisini, kurulumunu ve pratik uygulamasını incelemektedir.

Semantic Kernel Nedir?

Özünde Semantic Kernel, geleneksel uygulama kodunuz ile AI modelleri arasında bir köprü görevi gören bir SDK'dır. Sadece bir API'nin etrafına sarılmış bir sarmalayıcı (wrapper) değildir; bir orkestratördür. Geliştiricilerin, AI destekli işlevleri eklentiler (plugins) olarak tanımlamalarını ve bunları standart fonksiyonlarla birlikte yönetmelerini sağlar. Çerçeve, Azure OpenAI, OpenAI ve Hugging Face dahil olmak üzere çeşitli LLM sağlayıcılarını destekleyerek son derece esnek bir yapı sunar.

Semantic Kernel'ı ayırt eden temel özellikler şunlardır:

  • Native Fonksiyonlar: AI'nın çağırabileceği geleneksel C# yöntemleri.
  • Semantik Fonksiyonlar: Özetleme veya çeviri gibi görevleri yerine getirmek için LLM'den yararlanan prompt'lar (istemler).
  • Eklentiler (Plugins): Paylaşılabilir ve yeniden kullanılabilir fonksiyon koleksiyonları.
  • Bellek (Memory): Ajanlara uzun vadeli bağlam sağlamak için vektör veritabanlarıyla (Pinecone veya Azure AI Search gibi) entegrasyon.

Kurulum ve Temel Ayarlar

Başlamak için .NET SDK'sının yüklü olması gerekir. Semantic Kernel'ı entegre etmenin en basit yolu NuGet paket yöneticisidir. Tipik bir konsol uygulaması veya web servisi için temel kernel paketini ve seçtiğiniz LLM sağlayıcısı için bağlayıcıyı (connector) yüklemeniz gerekecektir.

dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.SemanticKernel.Connectors.OpenAI

Kurulum tamamlandıktan sonra kernel başlatılır. Bu nesne, uygulamanızın kalbidir; eklentileri, belleği ve hizmet yapılandırmalarını yönetmekten sorumludur.

İlk Ajanınızı Oluşturma

Pratik bir örneğe bakalım. Basit bir seyahat asistanı ajanı oluşturduğumuzu hayal edelim. Bir kernel oluşturabilir, Azure OpenAI kullanacak şekilde yapılandırabilir ve ardından basit bir prompt çalıştırabiliriz.

using Microsoft.SemanticKernel;

// Kernel'ı Başlat
var kernel = new KernelBuilder()
    .WithAzureChatCompletionService(
        serviceId: "chat",
        deploymentName: "gpt-4",
        endpoint: "https://YOUR_RESOURCE.openai.azure.com/",
        apiKey: "YOUR_API_KEY")
    .Build();

// Basit bir prompt tanımla
var prompt = @"
Japonya'nın Tokyo şehrinde ziyaret edilmesi gereken üç yer nedir?
Her biri için kısa bir açıklama sağlayın.";

// Prompt'u çalıştır
var result = await kernel.InvokePromptAsync(prompt);
Console.WriteLine(result);

Bu kod parçacığı, bir .NET uygulamasına AI yeteneklerini eklemek için gereken minimum çabayı göstermektedir. Ancak gerçek güç, fonksiyonları zincirleme (chaining) yapmada yatar. Örneğin, gerçek zamanlı uçuş verilerini çeken ve bunu LLM için bir eklenti olarak sunan yerel bir C# fonksiyonu oluşturabilirsiniz. Kernel, kullanıcının niyetine dayanarak, yaratıcı yazım için LLM'i mi yoksa gerçek veriler için yerel fonksiyonu mu çağıracağına karar verir.

Gelişmiş Kavramlar: Bellek ve Eklentiler

Daha karmaşık ajanlar için bağlam her şeydir. Semantic Kernel, Bellek (Memory) bağlayıcılarını destekler. Bir vektör veritabanıyla entegrasyon kurarak, ajanınız önceki konuşmaları veya belirli alan bilgisini "hatırlayabilir". Bu durum, durum bilgisi olmayan bir sohbet botunu, belirli iş bağlamınızı anlayabilen akıllı bir asistana dönüştürür.

Ayrıca, Eklentiler (Plugins) karmaşık mantığı kapsüllemenize olanak tanır. CRM'inizle etkileşime giren, bir veritabanını güncelleyen veya kargo maliyetlerini hesaplayan bir eklenti tanımlayabilirsiniz. LLM doğal dil anlayışını yönetirken, eklentiler deterministik yürütmeyi gerçekleştirir. Bu hibrit yaklaşım güvenilirliği sağlar; AI yaratıcılık ve anlayış sunarken, kod doğruluk ve yapı sağlar.

Sonuç

Semantic Kernel, kurumsal AI geliştirmede önemli bir adımdır. LLM'leri geleneksel yazılım mühendisliği uygulamalarıyla birleştirmek için yapılandırılmış bir yol sağlayarak, halüsinasyon riskini azaltır ve AI ajanlarının güvenilirliğini artırır. Orta ve ileri düzey .NET geliştiricileri için Semantic Kernel'ı ustalaşmak artık bir tercih değil, bir gereklilik haline gelmektedir. Müşteri destek botları, veri analiz araçları veya yaratıcı yazım asistanları oluşturuyor olun, Semantic Kernel güvenli, ölçeklenebilir ve akıllı uygulamalar oluşturmanız için gereken iskeleti sağlar.

AI ekosistemi gelişmeye devam ettikçe, Azure hizmetleriyle daha derin entegrasyonlar ve genişletilmiş topluluk eklentileri görmeyi bekleyebilirsiniz. Semantik belleğin ve fonksiyon zincirlemenin kullanıcı deneyimlerinizi nasıl dönüştürebileceğini anlamak için bugün küçük prototiplerle denemeler yapmaya başlayın.

Share: