Compartilhar via


Blocos de construção de IA unificados para .NET usando Microsoft.Extensions.AI

O ecossistema .NET fornece abstrações para integrar serviços de IA em aplicativos e bibliotecas .NET usando as Microsoft.Extensions.AI bibliotecas and Microsoft.Extensions.AI.Abstractions . A equipe do .NET também aprimorou as bibliotecas principais Microsoft.Extensions.* com essas abstrações para aplicativos e bibliotecas de IA generativa do .NET. Nas próximas seções, você aprenderá:

  • Principais conceitos e recursos das Microsoft.Extensions.AI bibliotecas.
  • Como trabalhar com abstrações de IA em seus aplicativos e os benefícios que eles oferecem.
  • Conceitos essenciais de middleware de IA.

O que é a biblioteca Microsoft.Extensions.AI?

Microsoft.Extensions.AI é um conjunto de bibliotecas principais do .NET criadas em colaboração com desenvolvedores em todo o ecossistema .NET, incluindo o Kernel Semântico. Essas bibliotecas fornecem uma camada unificada de abstrações C# para interagir com serviços de IA, como modelos de linguagem pequenos e grandes (SLMs e LLMs), inserções e middleware.

Um diagrama de arquitetura das bibliotecas de extensões de IA.

Microsoft.Extensions.AI fornece abstrações que podem ser implementadas por vários serviços, todos aderindo aos mesmos conceitos básicos. Esta biblioteca não se destina a fornecer APIs personalizadas para os serviços de nenhum provedor específico. O objetivo é Microsoft.Extensions.AI atuar como uma camada unificadora dentro do ecossistema .NET, permitindo que os desenvolvedores escolham suas estruturas e bibliotecas preferidas, garantindo integração e colaboração perfeitas em todo o ecossistema.

Trabalhar com abstrações para serviços comuns de IA

Os recursos de IA estão evoluindo rapidamente, com padrões emergentes para funcionalidades comuns:

  • Recursos de bate-papo para solicitar uma IA de conversação para análise de informações ou dados.
  • Geração de incorporação para integração com recursos de pesquisa vetorial.
  • Chamada de ferramenta para integração com outros serviços, plataformas ou código.

A Microsoft.Extensions.AI biblioteca fornece abstrações para esses tipos de tarefas, para que os desenvolvedores possam se concentrar na codificação em relação aos recursos conceituais de IA, em vez de plataformas específicas ou implementações de provedores. Abstrações unificadas são cruciais para que os desenvolvedores trabalhem efetivamente em diferentes fontes.

Por exemplo, a interface permite o IChatClient consumo de modelos de linguagem de vários provedores, esteja você se conectando a um serviço OpenAI do Azure ou executando uma instalação local do Ollama. Qualquer pacote .NET que forneça um cliente de IA pode implementar a interface, permitindo a integração perfeita com o IChatClient consumo de código .NET:

IChatClient client =
    environment.IsDevelopment ?  
    new OllamaChatClient(...) : 
    new AzureAIInferenceChatClient(...); 

Em seguida, independentemente do provedor que você está usando, você pode enviar solicitações da seguinte maneira:

var response = await chatClient.CompleteAsync( 
      "Translate the following text into Pig Latin: I love .NET and AI"); 

Console.WriteLine(response.Message);  

Essas abstrações permitem código C# idiomático para vários cenários com alterações mínimas de código, se você estiver usando serviços diferentes para desenvolvimento e produção, abordando cenários híbridos ou explorando outros provedores de serviços.

Os autores de bibliotecas que implementam essas abstrações tornam seus clientes interoperáveis com o ecossistema mais amplo Microsoft.Extensions.AI . As APIs específicas do serviço permanecem acessíveis, se necessário, permitindo que os consumidores codifiquem em relação às abstrações padrão e passem para APIs proprietárias somente quando necessário.

Microsoft.Extensions.AI Fornece implementações para os seguintes serviços por meio de pacotes adicionais:

No futuro, as implementações dessas Microsoft.Extensions.AI abstrações farão parte das respectivas bibliotecas de cliente, em vez de exigir a instalação de pacotes adicionais.

Implementações de middleware para serviços de IA

Conectar-se e usar serviços de IA é apenas um aspecto da criação de aplicativos robustos. Os aplicativos prontos para produção exigem recursos adicionais, como telemetria, registro em log e recursos de chamada de ferramentas. As Microsoft.Extensions.AI abstrações permitem que você integre facilmente esses componentes em seus aplicativos usando padrões familiares.

O exemplo a seguir demonstra como registrar um OpenAI IChatClient. IChatClient permite que você anexe os recursos de maneira consistente em vários provedores.

app.Services.AddChatClient(builder => builder 
    .UseLogging()
    .UseFunctionInvocation() 
    .UseDistributedCache()    
    .UseOpenTelemetry()  
    .Use(new OpenAIClient(...)).AsChatClient(...)); 

Os recursos demonstrados neste snippet estão incluídos na Microsoft.Extensions.AI biblioteca, mas são apenas um pequeno subconjunto dos recursos que podem ser colocados em camadas com essa abordagem. Os desenvolvedores do .NET podem expor muitos tipos de middleware para criar uma funcionalidade de IA poderosa.

Crie com Microsoft.Extensions.AI

Você pode começar a criar com Microsoft.Extensions.AI das seguintes maneiras:

  • Desenvolvedores de biblioteca: se você possui bibliotecas que fornecem clientes para serviços de IA, considere implementar as interfaces em suas bibliotecas. Isso permite que os usuários integrem facilmente seu pacote NuGet por meio das abstrações.
  • Consumidores de serviço: se você estiver desenvolvendo bibliotecas que consomem serviços de IA, use as abstrações em vez de codificar para um serviço de IA específico. Essa abordagem oferece aos seus consumidores a flexibilidade de escolher seu serviço preferido.
  • Desenvolvedores de aplicativos: use as abstrações para simplificar a integração em seus aplicativos. Isso permite a portabilidade entre modelos e serviços, facilita o teste e a simulação, aproveita o middleware fornecido pelo ecossistema e mantém uma API consistente em todo o aplicativo, mesmo que você use serviços diferentes em diferentes partes do aplicativo.
  • Colaboradores do ecossistema: se você estiver interessado em contribuir para o ecossistema, considere escrever componentes de middleware personalizados. Para começar, confira os exemplos no repositório GitHub dotnet/ai-samples .

Para obter um exemplo completo usando Microsoft.Extensions.AIo , consulte eShopSupport.

Próximas etapas