Semantic Kernel چیست؟
SDK متنباز مایکروسافت برای ارکستراسیون مدلهای زبانی در اپلیکیشنهای داتنت، پایتون و جاوا — با پشتیبانی از Plugin، حافظه و Agent.
چرا مهم است؟
بهمحض اینکه یک اپلیکیشن باید چند فراخوانی LLM را زنجیره کند، از توابع خودش (Function Calling) استفاده کند یا حافظه مکالمه نگه دارد، نوشتن این منطق از صفر پرهزینه و پرخطا میشود؛ Semantic Kernel این زیرساخت را آماده و تستشده میدهد.
تعریف
Semantic Kernel (SK) یک SDK متنباز مایکروسافت است که یک Kernel مرکزی میسازد و مدل زبانی، پلاگینهای شما (توابع C#/پایتون) و حافظه را به هم متصل میکند تا مدل بتواند در حین گفتوگو تصمیم بگیرد کدام تابع را صدا بزند.
اجزای اصلی
- Kernel: شیء مرکزی که همه سرویسها (مدل چت، Embedding) و پلاگینها را نگه میدارد.
- Plugin / KernelFunction: یک متد معمولی C# که با Attribute مشخص میشود تا مدل بتواند آن را صدا بزند (مثلاً
GetWeather). - Planner / Agent: تصمیمگیری خودکار درباره ترتیب فراخوانی توابع برای رسیدن به هدف کاربر.
- Memory: ذخیرهسازی برداری (Vector) برای بازیابی دانش مرتبط در حین مکالمه.
مثال
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion("gpt-4o", endpoint, apiKey);
builder.Plugins.AddFromType<WeatherPlugin>();
var kernel = builder.Build();
var result = await kernel.InvokePromptAsync(
"هوای تهران امروز چطوره؟ از پلاگین آبوهوا استفاده کن.");
Console.WriteLine(result);
public class WeatherPlugin
{
[KernelFunction, Description("دمای هوای یک شهر را برمیگرداند")]
public string GetWeather(string city) => $"{city}: ۲۸ درجه، آفتابی";
}
Semantic Kernel در برابر Microsoft.Extensions.AI
| Semantic Kernel | Microsoft.Extensions.AI | |
|---|---|---|
| نوع | فریمورک کامل ارکستراسیون | لایه انتزاعی سبک (Interface) |
| مناسب برای | Agentهای چندمرحلهای، Plugin، Planner | فراخوانی ساده و یکنواخت چند Provider |
| میتوان با هم استفاده کرد؟ | بله — SK از Microsoft.Extensions.AI بهعنوان لایه زیرین استفاده میکند |
— |
اشتباه رایج
❌ استفاده از Semantic Kernel فقط برای یک فراخوانی ساده چت بدون Plugin/Planner — سربار یادگیری آن را دارید بدون اینکه از مزیت اصلیاش (ارکستراسیون) استفاده کنید؛ در این حالت Microsoft.Extensions.AI بهتنهایی کافی است.
منبع و مطالعه بیشتر
خلاصه
Semantic Kernel یک Kernel مرکزی میسازد که مدل زبانی را به پلاگینهای C# شما و حافظه Vector وصل میکند تا مدل بتواند خودش تصمیم بگیرد کدام تابع را صدا بزند. برای سناریوهای چندمرحلهای/Agent مناسب است؛ برای یک فراخوانی ساده، Microsoft.Extensions.AI سبکتر است. مرجع کامل: مستندات رسمی Semantic Kernel.
