Microsoft.Extensions.AI در مقابل Semantic Kernel
Microsoft.Extensions.AI یک لایه انتزاعی سبک و استاندارد در اکوسیستم .NET است که فقط یک رابط یکسان برای فراخوانی مدلهای مختلف زبانی فراهم میکند، در حالی که Semantic Kernel یک فریمورک کامل Orchestration است که علاوه بر فراخوانی مدل، امکاناتی مثل Plugin، Planner، Memory و مدیریت مکالمه پیچیده را هم ارائه میدهد.
| ویژگی | Microsoft.Extensions.AI | Semantic Kernel |
|---|---|---|
| سطح انتزاع | سبک و ساده | فریمورک کامل |
| پشتیبانی از Plugin/Planner | ندارد | دارد |
| منحنی یادگیری | کم | بیشتر |
کِی از Microsoft.Extensions.AI استفاده کنیم؟
وقتی فقط نیاز دارید بهصورت ساده و با کد کم به یک یا چند مدل زبانی مختلف متصل شوید بدون نیاز به Orchestration پیچیده.
کِی از Semantic Kernel استفاده کنیم؟
وقتی برنامه نیاز به قابلیتهای پیشرفتهتر مثل ترکیب چند Plugin، برنامهریزی خودکار مراحل یا مدیریت حافظه مکالمه دارد.
مثال Microsoft.Extensions.AI
IChatClient client = new OpenAIClient(apiKey)
.AsChatClient("gpt-4o");
var response = await client.GetResponseAsync("سلام");
مثال Semantic Kernel
var kernel = Kernel.CreateBuilder()
.AddOpenAIChatCompletion("gpt-4o", apiKey)
.Build();
kernel.Plugins.AddFromType<WeatherPlugin>();
var result = await kernel.InvokePromptAsync("هوای تهران؟");
اشتباه رایج
اشتباه رایج استفاده از کل فریمورک سنگین Semantic Kernel فقط برای یک فراخوانی ساده چت است؛ در چنین مواردی Microsoft.Extensions.AI با انتزاع سبکتر و بدون وابستگی اضافه کافی و مناسبتر است.
جمعبندی
برای فراخوانی ساده و یکنواخت مدلهای مختلف از Microsoft.Extensions.AI و برای Orchestration پیچیده با Plugin و برنامهریزی خودکار از Semantic Kernel استفاده کنید؛ این دو حتی میتوانند با هم ترکیب شوند.
