Microsoft.Extensions.AI چیست؟
مجموعه Interfaceهای استاندارد مایکروسافت (`IChatClient`, `IEmbeddingGenerator`) برای صحبت با هر Provider مدل زبانی با یک کد یکسان.
چرا مهم است؟
بدون یک انتزاع مشترک، تغییر Provider (مثلاً از OpenAI به یک مدل محلی روی Ollama) یعنی بازنویسی هر جایی که مستقیم به آن API وصل شدهاید؛ این کتابخانه همان نقشی را برای AI ایفا میکند که ILogger برای Logging یا IDistributedCache برای Caching در داتنت ایفا میکند.
تعریف
Microsoft.Extensions.AI مجموعهای از Interfaceهای سبک و بدونوابستگی به Providerِ خاص است — مهمترینشان IChatClient برای مکالمه و IEmbeddingGenerator<,> برای تولید Embedding — که هر کتابخانه/سرویس AI میتواند پیادهسازیشان کند.
ثبت در DI و استفاده
builder.Services.AddChatClient(
new OpenAIClient(apiKey).AsChatClient("gpt-4o-mini"));
// در هر سرویس دیگر:
public class SupportService(IChatClient chatClient)
{
public Task<ChatResponse> AnswerAsync(string question) =>
chatClient.GetResponseAsync(question);
}
Middlewareهای آماده
با الگوی Decorator میتوان رفتارهای مشترک را دور هر IChatClient پیچید بدون تغییر کد کسبوکار:
UseFunctionInvocation()— اجازه فراخوانی خودکار توابع C# توسط مدل.UseLogging()— ثبت خودکار درخواست/پاسخ.UseDistributedCache()— کشکردن پاسخهای تکراری.
اشتباه رایج
❌ تزریق مستقیم SDK اختصاصی یک Provider (مثلاً OpenAIClient) در لایه Business Logic — تستپذیری و امکان تعویض بعدی Provider را از بین میبرد؛ همیشه پشت IChatClient برنامهنویسی کنید.
منبع و مطالعه بیشتر
خلاصه
Microsoft.Extensions.AI یک لایه Interface سبک (IChatClient, IEmbeddingGenerator) بالای هر Provider مدل زبانی است تا کد شما به هیچ SDK خاصی وابسته نباشد. با Middlewareهایی مثل Logging و Caching هم بهسادگی ترکیب میشود. مرجع کامل: Microsoft Learn.
