Einheitliche KI-Bausteine für .NET mithilfe von Microsoft.Extensions.AI
Das .NET-Ökosystem bietet Abstraktionen für die Integration von KI-Diensten in .NET-Anwendungen und -Bibliotheken mit den Microsoft.Extensions.AI
und Microsoft.Extensions.AI.Abstractions
Bibliotheken. Das .NET-Team hat auch die Kernbibliotheken Microsoft.Extensions.*
mit diesen Abstraktionen für .NET Generative AI-Anwendungen und -Bibliotheken erweitert. In den nächsten Abschnitten lernen Sie Folgendes:
- Kernkonzepte und Funktionen der
Microsoft.Extensions.AI
Bibliotheken. - So arbeiten Sie mit KI-Abstraktionen in Ihren Apps und den Vorteilen, die sie bieten.
- Grundlegende KI-Middleware-Konzepte.
Was ist die Microsoft.Extensions.AI-Bibliothek?
Microsoft.Extensions.AI
ist eine Reihe von .NET-Kernbibliotheken, die in Zusammenarbeit mit Entwicklern im .NET-Ökosystem erstellt wurden, einschließlich semantischer Kernel. Diese Bibliotheken bieten eine einheitliche Ebene von C#-Abstraktionen für die Interaktion mit KI-Diensten, z. B. kleine und große Sprachmodelle (SLMs und LLMs), Einbettungen und Middleware.
Microsoft.Extensions.AI
bietet Abstraktionen, die von verschiedenen Diensten implementiert werden können, wobei alle den gleichen Kernkonzepten entsprechen. Diese Bibliothek soll keine APIs bereitstellen, die auf die Dienste eines bestimmten Anbieters zugeschnitten sind. Ziel ist Microsoft.Extensions.AI
es, als vereinheitlichende Ebene innerhalb des .NET-Ökosystems zu fungieren, sodass Entwickler ihre bevorzugten Frameworks und Bibliotheken auswählen und gleichzeitig eine nahtlose Integration und Zusammenarbeit im gesamten Ökosystem gewährleisten können.
Arbeiten mit Abstraktionen für allgemeine KI-Dienste
KI-Funktionen entwickeln sich schnell weiter, mit Mustern, die für allgemeine Funktionen entstehen:
- Chatfeatures, um eine KI zur Informations- oder Datenanalyse aufzufordern.
- Einbettungsgenerierung zur Integration in Vektorsuchfunktionen.
- Toolaufrufe zur Integration in andere Dienste, Plattformen oder Code.
Die Microsoft.Extensions.AI
Bibliothek bietet Abstraktionen für diese Arten von Aufgaben, sodass Entwickler sich auf das Codieren mit konzeptionellen KI-Funktionen statt auf bestimmten Plattformen oder Anbieterimplementierungen konzentrieren können. Einheitliche Abstraktionen sind für Entwickler entscheidend, um effektiv in verschiedenen Quellen zu arbeiten.
Beispielsweise ermöglicht die IChatClient
Schnittstelle den Verbrauch von Sprachmodellen von verschiedenen Anbietern, unabhängig davon, ob Sie eine Verbindung mit einem Azure OpenAI-Dienst herstellen oder eine lokale Ollama-Installation ausführen. Jedes .NET-Paket, das einen KI-Client bereitstellt, kann die IChatClient
Schnittstelle implementieren und eine nahtlose Integration mit dem Verbrauch von .NET-Code ermöglichen:
IChatClient client =
environment.IsDevelopment ?
new OllamaChatClient(...) :
new AzureAIInferenceChatClient(...);
Anschließend können Sie unabhängig vom verwendeten Anbieter Anforderungen wie folgt senden:
var response = await chatClient.CompleteAsync(
"Translate the following text into Pig Latin: I love .NET and AI");
Console.WriteLine(response.Message);
Diese Abstraktionen ermöglichen idiomatischen C#-Code für verschiedene Szenarien mit minimalen Codeänderungen, unabhängig davon, ob Sie unterschiedliche Dienste für die Entwicklung und Produktion verwenden, hybride Szenarien behandeln oder andere Dienstanbieter untersuchen.
Bibliotheksautoren, die diese Abstraktionen implementieren, machen ihre Kunden mit dem breiteren Microsoft.Extensions.AI
Ökosystem interoperabel. Dienstspezifische APIs bleiben bei Bedarf verfügbar, sodass Verbraucher Code für die Standardabstraktionen codieren und nur bei Bedarf an proprietäre APIs übergeben können.
Microsoft.Extensions.AI
stellt Implementierungen für die folgenden Dienste über zusätzliche Pakete bereit:
In Zukunft werden Implementierungen dieser Microsoft.Extensions.AI
Abstraktionen Teil der jeweiligen Clientbibliotheken sein, anstatt zusätzliche Pakete zu installieren.
Middleware-Implementierungen für KI-Dienste
Das Herstellen und Verwenden von KI-Diensten ist nur ein Aspekt beim Erstellen robuster Anwendungen. Produktionsfähige Anwendungen erfordern zusätzliche Funktionen wie Telemetrie, Protokollierung und Funktionen zum Aufrufen von Tools. Mit Microsoft.Extensions.AI
den Abstraktionen können Sie diese Komponenten mit vertrauten Mustern auf einfache Weise in Ihre Anwendungen integrieren.
Im folgenden Beispiel wird veranschaulicht, wie ein OpenAI IChatClient
registriert wird. IChatClient
ermöglicht es Ihnen, die Funktionen auf einheitliche Weise über verschiedene Anbieter hinweg anzufügen.
app.Services.AddChatClient(builder => builder
.UseLogging()
.UseFunctionInvocation()
.UseDistributedCache()
.UseOpenTelemetry()
.Use(new OpenAIClient(...)).AsChatClient(...));
Die in diesem Codeausschnitt gezeigten Funktionen sind in der Microsoft.Extensions.AI
Bibliothek enthalten, sie sind jedoch nur eine kleine Teilmenge der Funktionen, die mit diesem Ansatz überschichtet werden können. .NET-Entwickler können viele Arten von Middleware verfügbar machen, um leistungsstarke KI-Funktionen zu erstellen.
Erstellen mit Microsoft.Extensions.AI
Sie können mit der Erstellung auf Microsoft.Extensions.AI
folgende Weise beginnen:
- Bibliotheksentwickler: Wenn Sie über Bibliotheken verfügen, die Clients für KI-Dienste bereitstellen, sollten Sie die Schnittstellen in Ihren Bibliotheken implementieren. Auf diese Weise können Benutzer Ihr NuGet-Paket einfach über die Abstraktionen integrieren.
- Service Consumer: Wenn Sie Bibliotheken entwickeln, die KI-Dienste nutzen, verwenden Sie die Abstraktionen anstelle der Hartcodierung zu einem bestimmten KI-Dienst. Dieser Ansatz bietet Ihren Verbrauchern die Flexibilität, ihren bevorzugten Dienst auszuwählen.
- Anwendungsentwickler: Verwenden Sie die Abstraktionen, um die Integration in Ihre Apps zu vereinfachen. Dies ermöglicht die Portabilität über Modelle und Dienste hinweg, erleichtert Das Testen und Modellieren, nutzt Middleware, die vom Ökosystem bereitgestellt wird, und verwaltet eine konsistente API in ihrer gesamten App, auch wenn Sie unterschiedliche Dienste in verschiedenen Teilen Ihrer Anwendung verwenden.
- Ökosystemmitwirkende: Wenn Sie daran interessiert sind, zum Ökosystem beizutragen, sollten Sie benutzerdefinierte Middleware-Komponenten schreiben. Erste Schritte finden Sie in den Beispielen im GitHub-Repository "dotnet/ai-samples ".
Ein End-to-End-Beispiel mit Microsoft.Extensions.AI
"eShopSupport" finden Sie unter "eShopSupport".