Enhetliga AI-byggstenar för .NET med hjälp av Microsoft.Extensions.AI
.NET-ekosystemet tillhandahåller abstraktioner för integrering av AI-tjänster i .NET-program och -bibliotek med hjälp av biblioteken Microsoft.Extensions.AI
och Microsoft.Extensions.AI.Abstractions
. .NET-teamet förbättrade också kärnbiblioteken Microsoft.Extensions.*
med dessa abstraktioner för .NET Generative AI-program och -bibliotek. I de kommande avsnitten lär du dig:
- Grundläggande begrepp och funktioner i biblioteken
Microsoft.Extensions.AI
. - Hur du arbetar med AI-abstraktioner i dina appar och de fördelar de erbjuder.
- Grundläggande begrepp för AI-mellanprogram.
Vad är det Microsoft.Extensions.AI biblioteket?
Microsoft.Extensions.AI
är en uppsättning .NET-kärnbibliotek som skapats i samarbete med utvecklare i .NET-ekosystemet, inklusive semantisk kernel. De här biblioteken tillhandahåller ett enhetligt lager av C#-abstraktioner för att interagera med AI-tjänster, till exempel små och stora språkmodeller (SLA och LLM), inbäddningar och mellanprogram.
Microsoft.Extensions.AI
tillhandahåller abstraktioner som kan implementeras av olika tjänster, som alla följer samma grundläggande begrepp. Det här biblioteket är inte avsett att tillhandahålla API:er som är skräddarsydda för någon specifik leverantörs tjänster. Målet Microsoft.Extensions.AI
med är att fungera som ett enhetligt lager i .NET-ekosystemet, vilket gör det möjligt för utvecklare att välja önskade ramverk och bibliotek samtidigt som sömlös integrering och samarbete säkerställs i hela ekosystemet.
Arbeta med abstraktioner för vanliga AI-tjänster
AI-funktionerna utvecklas snabbt, med mönster som växer fram för vanliga funktioner:
- Chattfunktioner för att konversationsvis fråga en AI om information eller dataanalys.
- Bädda in generering för att integrera med vektorsökningsfunktioner.
- Verktygsanrop för att integrera med andra tjänster, plattformar eller kod.
Biblioteket Microsoft.Extensions.AI
tillhandahåller abstraktioner för dessa typer av uppgifter, så att utvecklare kan fokusera på kodning mot konceptuella AI-funktioner snarare än specifika plattformar eller providerimplementeringar. Enhetliga abstraktioner är avgörande för att utvecklare ska kunna arbeta effektivt mellan olika källor.
Gränssnittet tillåter till exempel IChatClient
förbrukning av språkmodeller från olika leverantörer, oavsett om du ansluter till en Azure OpenAI-tjänst eller kör en lokal Ollama-installation. Alla .NET-paket som tillhandahåller en AI-klient kan implementera IChatClient
gränssnittet, vilket möjliggör sömlös integrering med användning av .NET-kod:
IChatClient client =
environment.IsDevelopment ?
new OllamaChatClient(...) :
new AzureAIInferenceChatClient(...);
Oavsett vilken leverantör du använder kan du sedan skicka begäranden på följande sätt:
var response = await chatClient.CompleteAsync(
"Translate the following text into Pig Latin: I love .NET and AI");
Console.WriteLine(response.Message);
Dessa abstraktioner möjliggör idiomatisk C#-kod för olika scenarier med minimala kodändringar, oavsett om du använder olika tjänster för utveckling och produktion, hanterar hybridscenarier eller utforskar andra tjänsteleverantörer.
Biblioteksförfattare som implementerar dessa abstraktioner gör sina klienter kompatibla med det bredare Microsoft.Extensions.AI
ekosystemet. Tjänstspecifika API:er förblir tillgängliga om det behövs, vilket gör det möjligt för konsumenter att koda mot standardabstraktionerna och endast skicka vidare till proprietära API:er när det behövs.
Microsoft.Extensions.AI
tillhandahåller implementeringar för följande tjänster via ytterligare paket:
I framtiden kommer implementeringar av dessa Microsoft.Extensions.AI
abstraktioner att ingå i respektive klientbibliotek i stället för att kräva installation av ytterligare paket.
Mellanprogramimplementeringar för AI-tjänster
Att ansluta till och använda AI-tjänster är bara en aspekt av att skapa robusta program. Produktionsklara program kräver ytterligare funktioner som telemetri, loggning och funktioner för verktygssamtal. Med Microsoft.Extensions.AI
abstraktionerna kan du enkelt integrera dessa komponenter i dina program med hjälp av välbekanta mönster.
Följande exempel visar hur du registrerar en OpenAI IChatClient
. IChatClient
gör att du kan koppla funktionerna på ett konsekvent sätt mellan olika leverantörer.
app.Services.AddChatClient(builder => builder
.UseLogging()
.UseFunctionInvocation()
.UseDistributedCache()
.UseOpenTelemetry()
.Use(new OpenAIClient(...)).AsChatClient(...));
De funktioner som visas i det här kodfragmentet Microsoft.Extensions.AI
ingår i biblioteket, men de är bara en liten delmängd av de funktioner som kan läggas i med den här metoden. .NET-utvecklare kan exponera många typer av mellanprogram för att skapa kraftfulla AI-funktioner.
Skapa med Microsoft.Extensions.AI
Du kan börja skapa med Microsoft.Extensions.AI
på följande sätt:
- Biblioteksutvecklare: Om du äger bibliotek som tillhandahåller klienter för AI-tjänster bör du överväga att implementera gränssnitten i dina bibliotek. På så sätt kan användarna enkelt integrera ditt NuGet-paket via abstraktionerna.
- Tjänstkonsumenter: Om du utvecklar bibliotek som använder AI-tjänster använder du abstraktionerna i stället för hårdkodning till en specifik AI-tjänst. Den här metoden ger dina konsumenter flexibiliteten att välja önskad tjänst.
- Programutvecklare: Använd abstraktionerna för att förenkla integreringen i dina appar. Detta möjliggör portabilitet mellan modeller och tjänster, underlättar testning och modellering, utnyttjar mellanprogram som tillhandahålls av ekosystemet och upprätthåller ett konsekvent API i hela appen, även om du använder olika tjänster i olika delar av ditt program.
- Ekosystemdeltagare: Om du är intresserad av att bidra till ekosystemet kan du skriva anpassade mellanprogramskomponenter. Kom igång genom att läsa exemplen på GitHub-lagringsplatsen dotnet/ai-samples .
Ett exempel från slutpunkt till slutpunkt med hjälp av Microsoft.Extensions.AI
finns i eShopSupport.