Geïntegreerde AI-bouwstenen voor .NET met behulp van Microsoft.Extensions.AI
Het .NET-ecosysteem biedt abstracties voor het integreren van AI-services in .NET-toepassingen en -bibliotheken met behulp van de Microsoft.Extensions.AI en Microsoft.Extensions.AI.Abstractions
bibliotheken. Het .NET-team heeft ook de kernbibliotheken Microsoft.Extensions.*
verbeterd met deze abstracties voor .NET-generatieve AI-toepassingen en -bibliotheken. In de volgende secties leert u het volgende:
- Belangrijkste concepten en mogelijkheden van de
Microsoft.Extensions.AI
bibliotheken. - Werken met AI-abstracties in uw apps en de voordelen die ze bieden.
- Essentiële concepten van AI-middleware.
Zie Inleiding tot Microsoft.Extensions.AIvoor meer informatie.
Wat is de Microsoft.Extensions.AI-bibliotheek?
Microsoft.Extensions.AI is een set kernbibliotheken van .NET die zijn gemaakt in samenwerking met ontwikkelaars in het .NET-ecosysteem, waaronder Semantische kernel. Deze bibliotheken bieden een uniforme laag C#-abstracties voor interactie met AI-services, zoals kleine en grote taalmodellen (SLM's en LLM's), insluitingen en middleware.
Microsoft.Extensions.AI
biedt abstracties die kunnen worden geïmplementeerd door verschillende services, die allemaal aan dezelfde kernconcepten houden. Deze bibliotheek is niet bedoeld om API's te bieden die zijn afgestemd op de services van een specifieke provider. Het doel is Microsoft.Extensions.AI
om te fungeren als een verbindende laag binnen het .NET-ecosysteem, zodat ontwikkelaars hun favoriete frameworks en bibliotheken kunnen kiezen en tegelijkertijd naadloze integratie en samenwerking binnen het ecosysteem kunnen garanderen.
Werken met abstracties voor algemene AI-services
AI-mogelijkheden zijn snel in ontwikkeling, met patronen die opkomen voor algemene functionaliteit:
- Chatfuncties om een AI te vragen voor informatie of gegevensanalyse.
- Het insluiten van generatie om te integreren met vectorzoekmogelijkheden.
- Hulpprogramma waarmee wordt aangeroepen om te integreren met andere services, platforms of code.
De Microsoft.Extensions.AI
bibliotheek biedt abstracties voor deze typen taken, zodat ontwikkelaars zich kunnen richten op coderen op basis van conceptuele AI-mogelijkheden in plaats van op specifieke platformen of provider-implementaties. Geïntegreerde abstracties zijn essentieel voor ontwikkelaars om effectief te werken in verschillende bronnen.
De interface maakt bijvoorbeeld IChatClient
het gebruik van taalmodellen van verschillende providers mogelijk, ongeacht of u verbinding maakt met een Azure OpenAI-service of een lokale Ollama-installatie uitvoert. Elk .NET-pakket dat een AI-client biedt, kan de IChatClient
interface implementeren, waardoor naadloze integratie mogelijk is met het gebruik van .NET-code:
IChatClient client =
environment.IsDevelopment ?
new OllamaChatClient(...) :
new AzureAIInferenceChatClient(...);
Ongeacht de provider die u gebruikt, kunt u aanvragen als volgt verzenden:
var response = await chatClient.CompleteAsync(
"Translate the following text into Pig Latin: I love .NET and AI");
Console.WriteLine(response.Message);
Deze abstracties maken idiomatische C#-code mogelijk voor verschillende scenario's met minimale codewijzigingen, ongeacht of u verschillende services gebruikt voor ontwikkeling en productie, het aanpakken van hybride scenario's of het verkennen van andere serviceproviders.
Bibliotheekauteurs die deze abstracties implementeren, maken hun klanten interoperabel met het bredere Microsoft.Extensions.AI
ecosysteem. Servicespecifieke API's blijven, indien nodig, toegankelijk, zodat consumenten code kunnen uitvoeren op basis van de standaardabstracties en deze alleen kunnen doorgeven aan eigen API's wanneer dat nodig is.
Microsoft.Extensions.AI
biedt implementaties voor de volgende services via extra pakketten:
In de toekomst maken implementaties van deze Microsoft.Extensions.AI
abstracties deel uit van de respectieve clientbibliotheken in plaats van dat er extra pakketten moeten worden geïnstalleerd.
Middleware-implementaties voor AI-services
Het maken van verbinding met en het gebruik van AI-services is slechts één aspect van het bouwen van robuuste toepassingen. Voor toepassingen die gereed zijn voor productie zijn aanvullende functies vereist, zoals telemetrie, logboekregistratie en mogelijkheden voor het aanroepen van hulpprogramma's. Met de Microsoft.Extensions.AI
abstracties kunt u deze onderdelen eenvoudig integreren in uw toepassingen met behulp van vertrouwde patronen.
In het volgende voorbeeld ziet u hoe u een OpenAI IChatClient
registreert.
IChatClient
hiermee kunt u de mogelijkheden op een consistente manier koppelen aan verschillende providers.
app.Services.AddChatClient(builder => builder
.UseLogging()
.UseFunctionInvocation()
.UseDistributedCache()
.UseOpenTelemetry()
.Use(new OpenAIClient(...)).AsChatClient(...));
De mogelijkheden die in dit fragment worden gedemonstreerd, zijn opgenomen in de Microsoft.Extensions.AI
bibliotheek, maar ze zijn slechts een kleine subset van de mogelijkheden die met deze benadering kunnen worden gelaagd. .NET-ontwikkelaars kunnen veel soorten middleware beschikbaar maken om krachtige AI-functionaliteit te maken.
Bouwen met Microsoft.Extensions.AI
U kunt op de volgende manieren beginnen met Microsoft.Extensions.AI
bouwen:
- Bibliotheekontwikkelaars: Als u eigenaar bent van bibliotheken die clients voor AI-services bieden, kunt u overwegen de interfaces in uw bibliotheken te implementeren. Hierdoor kunnen gebruikers uw NuGet-pakket eenvoudig integreren via de abstracties.
- Serviceconsumenten: Als u bibliotheken ontwikkelt die AI-services gebruiken, gebruikt u de abstracties in plaats van hardcoding voor een specifieke AI-service. Deze benadering biedt uw consumenten de flexibiliteit om hun voorkeursservice te kiezen.
- Toepassingsontwikkelaars: gebruik de abstracties om de integratie in uw apps te vereenvoudigen. Dit maakt draagbaarheid mogelijk voor modellen en services, vereenvoudigt testen en mocking, maakt gebruik van middleware die wordt geleverd door het ecosysteem en onderhoudt een consistente API in uw app, zelfs als u verschillende services in verschillende delen van uw toepassing gebruikt.
- Inzenders voor ecosystemen: als u geïnteresseerd bent in een bijdrage aan het ecosysteem, kunt u aangepaste middlewareonderdelen schrijven.
Zie de voorbeelden in de GitHub-opslagplaats dotnet/ai-samples om aan de slag te gaan.
Zie eShopSupport voor een end-to-end-voorbeeld met behulp van.Microsoft.Extensions.AI