CodeShot

Microsoft.Extensions.AI در مقابل Semantic Kernel

Microsoft.Extensions.AI یک لایه انتزاعی سبک و استاندارد در اکوسیستم .NET است که فقط یک رابط یکسان برای فراخوانی مدل‌های مختلف زبانی فراهم می‌کند، در حالی که Semantic Kernel یک فریمورک کامل Orchestration است که علاوه بر فراخوانی مدل، امکاناتی مثل Plugin، Planner، Memory و مدیریت مکالمه پیچیده را هم ارائه می‌دهد.

ویژگیMicrosoft.Extensions.AISemantic 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 استفاده کنید؛ این دو حتی می‌توانند با هم ترکیب شوند.