Поделиться через


Стандартные блоки ИИ для .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.

Следующие шаги