Стандартные блоки ИИ для .NET с помощью Microsoft.Extensions.AI
Экосистема .NET предоставляет абстракции для интеграции служб ИИ в приложения и библиотеки .NET с помощью Microsoft.Extensions.AI библиотек и Microsoft.Extensions.AI.Abstractions
библиотек. Команда .NET также улучшила основные библиотеки Microsoft.Extensions.*
, добавив абстракции для приложений и библиотек генеративного ИИ .NET. В следующих разделах вы узнаете:
- Основные понятия и возможности
Microsoft.Extensions.AI
библиотек. - Как работать с абстракциями ИИ в приложениях и преимуществами, которые они предлагают.
- Основные понятия ПО промежуточного слоя искусственного интеллекта.
Дополнительные сведения см. в разделе Введение в Microsoft.Extensions.AI.
Что такое библиотека Microsoft.Extensions.AI?
Microsoft.Extensions.AI — это набор основных библиотек .NET, созданных в сотрудничестве с разработчиками в экосистеме .NET, включая семантические ядра. Эти библиотеки предоставляют единый уровень абстракций C# для взаимодействия со службами ИИ, такими как небольшие и крупные языковые модели (SLMS и LLM), внедрения и по промежуточному слоям.
Microsoft.Extensions.AI
предоставляет абстракции, которые могут быть реализованы различными службами, все они применяются к одной и той же основной концепции. Эта библиотека не предназначена для предоставления API, адаптированных к службам любого конкретного поставщика. Цель Microsoft.Extensions.AI
состоит в том, чтобы выступать в качестве объединяющего слоя в экосистеме .NET, что позволяет разработчикам выбирать предпочитаемые платформы и библиотеки, обеспечивая непрерывную интеграцию и совместную работу в экосистеме.
Работа с абстракциями для общих служб ИИ
Возможности искусственного интеллекта быстро развиваются с новыми шаблонами для общих функциональных возможностей:
- Функции чата для общения запрашивают ИИ для получения информации или анализа данных.
- Внедрение поколения для интеграции с возможностями поиска векторов.
- Вызов средства для интеграции с другими службами, платформами или кодом.
Библиотека Microsoft.Extensions.AI
предоставляет абстракции для этих типов задач, поэтому разработчики могут сосредоточиться на программировании на основе концептуальных возможностей искусственного интеллекта, а не конкретных платформ или реализаций поставщика. Унифицированные абстракции важны для эффективной работы разработчиков в разных источниках.
Например, IChatClient
интерфейс позволяет использовать языковые модели от различных поставщиков, независимо от того, подключаетесь ли вы к службе Azure OpenAI или выполняете локальную установку Ollama. Любой пакет .NET, предоставляющий клиент ИИ, может реализовать интерфейс, обеспечивая простую IChatClient
интеграцию с использованием кода .NET:
IChatClient client =
environment.IsDevelopment ?
new OllamaChatClient(...) :
new AzureAIInferenceChatClient(...);
Затем, независимо от используемого поставщика, вы можете отправлять запросы следующим образом:
var response = await chatClient.CompleteAsync(
"Translate the following text into Pig Latin: I love .NET and AI");
Console.WriteLine(response.Message);
Эти абстракции позволяют идиоматический код C# для различных сценариев с минимальными изменениями кода, независимо от того, используются ли различные службы для разработки и рабочей среды, решения гибридных сценариев или изучения других поставщиков услуг.
Авторы библиотеки, реализующие эти абстракции, позволяют клиентам взаимодействовать с более широкой Microsoft.Extensions.AI
экосистемой. При необходимости api для конкретной службы остаются доступными, позволяя потребителям кодировать стандартные абстракции и передавать через собственные API только при необходимости.
Microsoft.Extensions.AI
предоставляет реализации для следующих служб с помощью дополнительных пакетов:
В будущем реализации этих Microsoft.Extensions.AI
абстракций будут частью соответствующих клиентских библиотек, а не требуют установки дополнительных пакетов.
Реализации ПО промежуточного слоя для служб ИИ
Подключение к службам ИИ и их использование — это лишь один из аспектов создания надежных приложений. Для приложений, готовых к работе, требуются дополнительные функции, такие как телеметрия, ведение журнала и возможности вызова инструментов. Абстракции Microsoft.Extensions.AI
позволяют легко интегрировать эти компоненты в приложения с помощью знакомых шаблонов.
В следующем примере показано, как зарегистрировать OpenAI IChatClient
.
IChatClient
позволяет подключать возможности последовательно между различными поставщиками.
app.Services.AddChatClient(builder => builder
.UseLogging()
.UseFunctionInvocation()
.UseDistributedCache()
.UseOpenTelemetry()
.Use(new OpenAIClient(...)).AsChatClient(...));
Возможности, показанные в этом фрагменте кода, включаются в Microsoft.Extensions.AI
библиотеку, но они представляют собой лишь небольшое подмножество возможностей, которые можно сгруппировать с помощью этого подхода. Разработчики .NET могут предоставлять множество типов ПО промежуточного слоя для создания мощных функций ИИ.
Сборка с помощью Microsoft.Extensions.AI
Вы можете начать сборку следующими Microsoft.Extensions.AI
способами:
- Разработчики библиотек: если вы владеете библиотеками, предоставляющими клиенты для служб ИИ, рассмотрите возможность реализации интерфейсов в библиотеках. Это позволяет пользователям легко интегрировать пакет NuGet с помощью абстракций.
- Потребители служб. Если вы разрабатываете библиотеки, использующие службы искусственного интеллекта, используйте абстракции вместо жесткой кодировки для конкретной службы ИИ. Такой подход дает потребителям гибкость выбора предпочитаемой службы.
- Разработчики приложений: используйте абстракции, чтобы упростить интеграцию с приложениями. Это обеспечивает переносимость между моделями и службами, упрощает тестирование и макетирование, использует ПО промежуточного слоя, предоставляемое экосистемой, и поддерживает согласованный API во всем приложении, даже если вы используете различные службы в разных частях приложения.
- Участник экосистемы: если вы заинтересованы в участии в экосистеме, рассмотрите возможность написания пользовательских компонентов по промежуточного слоя.
Сведения о начале работы см. в примерах в репозитории GitHub dotnet/ai-samples .
Полный пример использования Microsoft.Extensions.AI
см. в разделе eShopSupport.