Partilhar 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 e 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 seções a seguir, você aprende:

  • Principais conceitos e capacidades 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 .NET principais 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 em C# para interagir com serviços de IA, como modelos de linguagem pequenos e grandes (SLMs e LLMs), incorporações e middleware.

Um diagrama arquitetônico 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 centrais. Esta biblioteca não se destina a fornecer APIs adaptadas aos serviços de qualquer 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 ao mesmo tempo integração e colaboração perfeitas em todo o ecossistema.

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

As capacidades de IA estão a evoluir rapidamente, com padrões emergentes para funcionalidades comuns:

  • Recursos de bate-papo para solicitar conversacionalmente uma IA para informações ou análise de dados.
  • Geração de incorporação para integração com recursos de pesquisa vetorial.
  • Chamada de ferramentas 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 a 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 de forma eficaz em diferentes fontes.

Por exemplo, a interface permite o IChatClient consumo de modelos de linguagem de vários provedores, quer você esteja 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 uma integração perfeita com o IChatClient consumo de código .NET:

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

Em seguida, independentemente do fornecedor que estiver a utilizar, pode enviar pedidos da seguinte forma:

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 o código C# idiomático para vários cenários com alterações mínimas de código, quer você esteja usando diferentes serviços 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 codificem 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 através de pacotes adicionais:

No futuro, as implementações dessas Microsoft.Extensions.AI abstrações farão parte das respetivas bibliotecas de clientes, 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 aspeto 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 forma consistente entre vários provedores.

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

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

Construa com Microsoft.Extensions.AI

Você pode começar a construir com Microsoft.Extensions.AI as seguintes maneiras:

  • Desenvolvedores de bibliotecas: 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ços: 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. Esta abordagem dá aos seus consumidores a flexibilidade de escolher o 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 testes e simulações, aproveita o middleware fornecido pelo ecossistema e mantém uma API consistente em todo o aplicativo, mesmo se você usar serviços diferentes em diferentes partes do aplicativo.
  • Contribuidores do ecossistema: Se você estiver interessado em contribuir para o ecossistema, considere escrever componentes de middleware personalizados. Para começar, consulte os exemplos no repositório GitHub dotnet/ai-samples .

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

Próximos passos