Microsoft ekosisteminde yazılım geliştiriyor ve yanına bir Python hizmeti eklemeden yapay zeka katmak istiyorsanız, Semantic Kernel Microsoft'un sizin için geliştirdiği bir SDK'dır. Mevcut kodunuzu ve API'lerinizi büyük dil modellerine bağlayan açık kaynaklı bir kittir ve C#, Python ve Java'da çalışır. Bu rehber, ne olduğunu, kernel ve eklentilerin nasıl bir araya geldiğini ve OpenAPI belirtim desteğinin herhangi bir REST API'sini bir modelin çağırabileceği bir şeye nasıl dönüştürdüğünü açıklar.
Semantic Kernel aslında nedir
Semantic Kernel (SK) , yapay zeka ajanları oluşturmak ve modelleri kod tabanınıza entegre etmek için Microsoft'tan hafif, açık kaynaklı bir geliştirme kitidir. Microsoft bunu bir ara katman yazılımı olarak tanımlar: uygulamanız ile model arasında yer alır, modelin isteklerini gerçek fonksiyon çağrılarına çevirir, bunları çalıştırır ve sonuçları geri gönderir. Siz normal kod yazarsınız. Model ne zaman çağrı yapacağına karar verir.
Üç şey SK'yi ajan kütüphaneleri kalabalığından ayırır.
İlk olarak, gerçekten çok dilli. SK, C#/.NET, Python ve Java için resmi SDK'lar sunar ve üçü için de 1.0+ sürüm kararlılık taahhütleri bulunur. Çoğu ajan çerçevesi önce Python'a odaklanır ve diğer dilleri ikinci plana atar. Eğer arka ucunuz .NET ise, SK yerel hissettiren birkaç olgun seçenekten biridir.
İkinci olarak, modelden bağımsızdır. SK, bir dizi bağlayıcı aracılığıyla OpenAI, Azure OpenAI ve diğer sağlayıcılara bağlanır. Modelleri değiştirmek istediğinizde, tüm uygulamanızı değil, yapılandırmayı değiştirirsiniz.
Üçüncü olarak, kurumsal kaygılar göz önünde bulundurularak inşa edilmiştir. Telemetri, kancalar ve filtreler birinci sınıftır, böylece yapay zekanın ne yaptığını loglayabilir, denetleyebilir ve müdahale edebilirsiniz. Bu odak noktası, Microsoft ve çok sayıda Fortune 500 ekibinin onu benimsemesinin nedenidir.
Kernel, eklentiler ve fonksiyonlar
Temel nesne kernel'dir. Bunu yapay zeka için bir bağımlılık enjeksiyon kapsayıcısı olarak düşünebilirsiniz. Model bağlayıcılarınızı ve eklentilerinizi kernel'e kaydedersiniz, ardından çalıştırmasını istersiniz. Kernel orkestrasyonu halleder: istem, model çağrısı, fonksiyon çağrısı, sonuç, tekrar.
Eklenti, modele açtığınız adlandırılmış bir fonksiyon grubudur. Fonksiyon, modelin çağırabileceği tek bir yetenektir. Fonksiyonlar iki çeşittir:
- Yerel fonksiyonlar, kernel'in onları modele açıklayabilmesi için ek açıklama eklediğiniz kodunuzdaki (bir C# metodu, bir Python fonksiyonu) normal metodlardır.
- İstem fonksiyonları, modelin kendisini çağıran şablonlanmış istemlerdir; metni özetlemek, sınıflandırmak veya yeniden yazmak için kullanışlıdır.
C#'daki şekli şöyledir. Bir kernel oluşturur, bir sohbet modeli kaydeder, bir eklenti eklersiniz ve modelin ihtiyaç duyduğunda fonksiyonları çağırmasına izin verirsiniz.
var builder = Kernel.CreateBuilder();
builder.AddOpenAIChatCompletion("gpt-4o", apiKey);
builder.Plugins.AddFromType<LightsPlugin>("Lights");
Kernel kernel = builder.Build();
// Model artık bir sohbet sırasında LightsPlugin fonksiyonlarını çağırabilir
var result = await kernel.InvokePromptAsync("Turn the kitchen light blue");
Model geri döndüğünde ve kernel `change_light_state`'i çağırmak istediğini gördüğünde, kernel kodunuzu çalıştırır, sonucu yakalar ve modele geri besler. Bu döngü SK'nin kalbidir.
OpenAPI'den eklentiye deseni
Bu, bilinmesi en değerli özelliktir ve mevcut hizmetlerinize en temiz köprüdür. SK, bir OpenAPI belirtimini içe aktarabilir ve her işlemi otomatik olarak çağrılabilir bir fonksiyona dönüştürebilir. Sarmalayıcı kod yazmazsınız. SK'ye bir belirtim gösterirsiniz ve her yol/işlem, modelin çağırabileceği bir fonksiyona dönüşür.
C#'da çağrı `ImportPluginFromOpenApiAsync`'tir. Python'da ise `add_plugin_from_openapi`'dir. Java'nın eşdeğer bir içe aktarıcısı vardır. İşte bir URL'den bir belirtim yükleyen C# sürümü:
await kernel.ImportPluginFromOpenApiAsync(
pluginName: "lights",
uri: new Uri("https://example.com/v1/swagger.json"),
executionParameters: new OpenApiFunctionExecutionParameters()
{
EnablePayloadNamespacing = true
}
);
SK, perde arkasında belirtimi ayrıştırır, her parametre için adı, açıklamayı, tipi ve şemayı çıkarır ve bu meta verileri modele iletir. Model, hangi işlemi çağıracağına ve hangi argümanları geçireceğine karar verir. SK daha sonra HTTP isteğini oluşturur, kimlik doğrulama geri aramanızı uygular, gönderir ve yanıtı okur. SK, OpenAPI 2.0 ve 3.0'ı destekler ve 3.1 belirtimlerini mümkün olduğunca 3.0'a düşürür.
Ancak, insanlar için yazılan belirtimler bir model için her zaman açık değildir. Microsoft'un kendi rehberliği, açıklayıcı işlem kimlikleri eklemek, yardımcı parametre açıklamaları yazmak, uç nokta sayısını düşük tutmak ve gevşek dizeler yerine enum'ları ve tipli parametreleri tercih etmektir. Belirtiminizin kalitesi, ajanın API'nizi ne kadar iyi çağıracağını doğrudan şekillendirir. Bu da belirtimin kendisini, sonradan düşünülmüş bir şey değil, dikkatle tasarlanması ve test edilmesi gereken bir şey yapar.
Ajanlar ve planlama
SK, bir hedefi adımlara ayıran açık planlayıcılarla başladı. Çerçeve o zamandan beri, modelin kendisinin hangi fonksiyonları ve hangi sırayla çağıracağına karar verdiği fonksiyon çağırmaya doğru kaydı, ki bu modern modellerle daha güvenilirdir. Bunun üzerine, SK, oturum tabanlı durum, ajans döngüleri ve harici araçları bağlamak için Model Bağlam Protokolü (MCP) desteği ile ajanlar ve çoklu ajan desenleri oluşturmak için bir Ajan Çerçevesi katmanı ekledi.
Yaklaşımları karşılaştırıyorsanız, SK'nin bu blogda ele alınan diğer ajan SDK'ları ile nasıl sıralandığı aşağıdadır.
| Çerçeve | Birincil diller | Orkestrasyon modeli | En uygun |
|---|---|---|---|
| Semantic Kernel | C#/.NET, Python, Java | Fonksiyon çağırma + ajanlar | .NET ve kurumsal ekipler |
| LangGraph | Python, JS | Açık durum grafiği | Karmaşık, dallanan ajan akışları |
| Google ADK | Python | Ajan + araç modeli | Google Cloud ve Gemini yığınları |
| OpenAI Agents SDK | Python, JS | Ajanlar + devirler | OpenAI merkezli uygulamalar |
Bunların hiçbiri kesinlikle daha iyi değildir. Doğru seçim dilinize, model sağlayıcınıza ve yürütme üzerinde ne kadar açık kontrol istediğinize bağlıdır.
Semantic Kernel, Microsoft Agent Framework ile nereye oturur
Bu kısım hızla ilerliyor, bu yüzden gerçek durumu ele alalım. Microsoft, Microsoft Agent Framework'ü (MAF) tanıttı ve belgeler, onu hem Semantic Kernel hem de AutoGen'in doğrudan halefi olarak, aynı ekipler tarafından inşa edildiğini açıklıyor. MAF, AutoGen'in ajan soyutlamalarını SK'nin kurumsal özellikleriyle birleştirir ve çoklu ajan orkestrasyonu için grafik tabanlı iş akışları ekler.
Pratikte bunun anlamı şudur:
- Semantic Kernel kararlı ve hala desteklenmektedir. Mevcut SK uygulamaları çalışmaya devam eder ve 1.0+ sürümündeki bozucu olmayan değişiklik taahhüdü geçerlidir.
- Yeni ajan projeleri için Microsoft sizi Agent Framework'e yönlendirir ve SK kodunu taşımak için bir geçiş rehberi yayınlar.
- OpenAPI'den eklentiye fikri devam ediyor. Bir ajana REST API'lerinize bir belirtim aracılığıyla erişim sağlamak, her iki çerçeve tarafından paylaşılan bir desendir.
Bu nedenle SK'yi, hala bakımı yapılan sağlam, üretimde kanıtlanmış bir seçenek olarak kabul edin, ancak en yeni yatırımın MAF'a gittiğini bilin. Bugün karar veriyorsanız ve kodunuz zaten SK'deyse, acil bir durum söz konusu değildir. Yeni başlıyorsanız ve en son yönü istiyorsanız, bir taahhütte bulunmadan önce MAF belgelerini okuyun.
Semantic Kernel ne zaman kullanılır
SK'ye ne zaman başvurmalısınız:
- Yığın sisteminiz .NET veya Java ise ve yerel hissettiren bir yapay zeka orkestrasyonu istiyorsanız, bir Python yardımcı programı yerine.
- Mevcut REST API'lerinizden oluşan bir portföyünüz varsa ve bir modelin bunları OpenAPI belirtimleri aracılığıyla çağırmasını istiyorsanız.
- Kurumsal altyapıya ihtiyacınız varsa: telemetri, filtreler, kancalar ve yapay zekanın ne yaptığını denetleme yeteneği.
- Modelden bağımsız kalmak ve uygulamanızı yeniden yazmadan sağlayıcıları değiştirmek istiyorsanız.
Ekibiniz sadece Python kullanıyorsa ve en yeni çoklu ajan özelliklerini istiyorsanız başka yerlere bakın; bu durumda MAF veya grafik öncelikli bir kütüphane size daha uygun olabilir.
Semantic Kernel ajanınızın arkasındaki API'leri test etme
API araçlarının önemli olduğu ve Apidog'un kusursuzca uyduğu yer burasıdır. SK, API'lerinizi oluşturmaz veya değiştirmez. Onları çağırır. Bir SK ajanı iki tür uç noktaya bağlıdır: konuştuğu LLM uç noktası ve OpenAPI eklentileri olarak içe aktardığınız REST API'ler. Her ikisinin de doğru, iyi tanımlanmış ve güvenilir olması gerekir, aksi takdirde ajan yanlış çağrılar yapar.
Birkaç pratik iş:
- OpenAPI belirtimini içe aktarmadan önce tasarlayın ve test edin. SK, her işlemi bir fonksiyona dönüştürdüğü ve modele parametre açıklamalarınızı beslediği için, özensiz bir belirtim, özensiz araç çağrıları üretir. Belirtimi doğrulayın, her uç noktayı çalıştırın ve yanıtların şemayla eşleştiğini onaylayın. Temiz sözleşme, daha iyi ajan.
- Geliştirme sırasında bağımlılıkları taklit edin. Henüz inşa edilmemiş bir uç nokta için sahte bir API kurabilir veya belirteçleri yakmaktan ve orkestrasyon döngüsünü hata ayıklarken oran sınırlarına çarpmaktan kaçınmak için LLM uç noktasını taklit edebilirsiniz. Deseni için API çağrılarını nasıl taklit edeceğinizi görün.
- Yanıt şekillerini iddia edin. Ajanınızın çağırdığı araç uç noktalarının modelin beklediği yapıyı tam olarak döndürdüğünü doğrulamak için API iddialarını kullanın, böylece bir arka uç değişikliği ajan davranışını sessizce bozmaz.
- Anahtarları ortama göre yönetin. LLM ve API kimlik bilgilerinizi sabit kodlamak yerine geliştirme, hazırlık ve üretim ortamlarında ayrı tutun.
Bu, ajanın yerine değil, ajan öncesinde ve çevresinde yapılan sıradan bir API işidir. Daha derinlemesine bir rehberlik isterseniz, Apidog ile bir ajanın araç çağrılarını test etme, test donanımını ayrıntılı olarak ele almaktadır.
Sıkça Sorulan Sorular
Semantic Kernel ücretsiz ve açık kaynak mı?
Evet. Semantic Kernel açık kaynaklıdır ve Microsoft tarafından GitHub'da hoşgörülü bir lisans altında, C#/.NET, Python ve Java için SDK'larla yayınlanmıştır. Model kullanımı için (OpenAI, Azure OpenAI vb.) ödeme yaparsınız, SK'nin kendisi için değil.
Semantic Kernel hangi dilleri destekler?
C#/.NET, Python ve Java, hepsi 1.0+ sürüm kararlılık taahhütleriyle. C# SDK'sı en olgun olanıdır, ancak Python ve Java SDK'ları çekirdek kernel, eklentiler ve OpenAPI içe aktarma özelliklerini kapsar.
Semantic Kernel, OpenAPI belirtimlerini nasıl kullanır?
Bir belirtimi `ImportPluginFromOpenApiAsync` (C#) veya `add_plugin_from_openapi` (Python) ile içe aktarırsınız. SK, belirtimi ayrıştırır, her işlemi parametre meta verileriyle çağrılabilir bir fonksiyona dönüştürür ve modelin bu işlemleri çağırmasına izin verir. Model açıklamalarınıza güvendiği için, önce belirtimi doğrulamak faydalı olur. Bunu ve canlı uç noktaları Apidog ile test edebilirsiniz.
Semantic Kernel mi yoksa Microsoft Agent Framework mü kullanmalıyım?
Halihazırda bir SK uygulamanız varsa, kullanmaya devam edin; desteklenir ve kararlıdır. Yeni projeler için Microsoft, Agent Framework'ü halefi olarak konumlandırır ve bir geçiş rehberi sağlar. Bu alan hızla değiştiği için yeni başlamadan önce mevcut MAF belgelerini kontrol edin. Her ikisinin de çağırdığı API'leri test etmek için, ChatGPT API'sini Apidog ile nasıl test edeceğinize bakın.
Özetle
Semantic Kernel, Microsoft ekosistemindeki ekiplere yapay zekayı organize etmek için temiz bir yol sunar: modelleri kodunuza bağlayan bir kernel, modelin çağırabileceği eklentiler ve fonksiyonlar ile mevcut REST API'lerinizi ajan araçları olarak gösteren bir OpenAPI içe aktarma yolu. Kararlı ve üretimde kanıtlanmıştır, Agent Framework şimdi en yeni yönü ileriye taşıyor. Hangisini seçerseniz seçin, alttaki API'lerin hala sağlam olması gerekir. Ajanınızın bağımlı olduğu belirtimleri ve uç noktaları tasarlamak, taklit etmek ve test etmek için, Apidog'u indirin ve ajan onu çağırmadan önce sözleşmeyi oluşturun.
