Compartir a través de


Bloques de creación de IA unificados para .NET mediante Microsoft.Extensions.AI

El ecosistema de .NET proporciona abstracciones para integrar servicios de INTELIGENCIA ARTIFICIAL en aplicaciones y bibliotecas de .NET mediante las Microsoft.Extensions.AI bibliotecas y Microsoft.Extensions.AI.Abstractions . El equipo de .NET también ha mejorado las bibliotecas principales Microsoft.Extensions.* con estas abstracciones para las aplicaciones y bibliotecas de inteligencia artificial generativa de .NET. En las siguientes secciones, obtendrá información sobre:

  • Conceptos básicos y funcionalidades de las Microsoft.Extensions.AI bibliotecas.
  • Cómo trabajar con abstracciones de IA en las aplicaciones y las ventajas que ofrecen.
  • Conceptos esenciales del middleware de IA.

¿Cuál es la biblioteca de Microsoft.Extensions.AI?

Microsoft.Extensions.AI es un conjunto de bibliotecas básicas de .NET creadas en colaboración con desarrolladores en todo el ecosistema de .NET, incluido kernel semántico. Estas bibliotecas proporcionan una capa unificada de abstracciones de C# para interactuar con servicios de INTELIGENCIA ARTIFICIAL, como modelos de lenguaje pequeño y grande (SLA y LLM), incrustaciones y middleware.

Diagrama arquitectónico de las bibliotecas de extensiones de IA.

Microsoft.Extensions.AI proporciona abstracciones que pueden implementar varios servicios, todos los que se adhieren a los mismos conceptos básicos. Esta biblioteca no está pensada para proporcionar API adaptadas a los servicios de ningún proveedor específico. El objetivo de Microsoft.Extensions.AI es actuar como una capa de unificación dentro del ecosistema de .NET, lo que permite a los desarrolladores elegir sus marcos y bibliotecas preferidos, a la vez que se garantiza una integración y colaboración sin problemas en todo el ecosistema.

Trabajar con abstracciones para servicios comunes de inteligencia artificial

Las funcionalidades de inteligencia artificial evolucionan rápidamente, con patrones emergentes para la funcionalidad común:

  • Características de chat para solicitar una inteligencia artificial de forma conversacional para obtener información o análisis de datos.
  • Inserción de la generación para integrarse con las funcionalidades de búsqueda vectorial.
  • Herramienta que llama a para integrarse con otros servicios, plataformas o código.

La Microsoft.Extensions.AI biblioteca proporciona abstracciones para estos tipos de tareas, por lo que los desarrolladores pueden centrarse en la codificación con funcionalidades conceptuales de inteligencia artificial en lugar de plataformas específicas o implementaciones del proveedor. Las abstracciones unificadas son cruciales para que los desarrolladores funcionen de forma eficaz en distintos orígenes.

Por ejemplo, la IChatClient interfaz permite el consumo de modelos de lenguaje de varios proveedores, tanto si se conecta a un servicio de Azure OpenAI como si ejecuta una instalación local de Ollama. Cualquier paquete de .NET que proporcione un cliente de IA puede implementar la IChatClient interfaz, lo que permite una integración perfecta con el uso de código .NET:

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

A continuación, independientemente del proveedor que use, puede enviar solicitudes de la siguiente manera:

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

Console.WriteLine(response.Message);  

Estas abstracciones permiten código C# idiomático para varios escenarios con cambios mínimos de código, tanto si usa servicios diferentes para desarrollo y producción, como para abordar escenarios híbridos o explorar otros proveedores de servicios.

Los autores de bibliotecas que implementan estas abstracciones hacen que sus clientes sean interoperables con el ecosistema más amplio Microsoft.Extensions.AI . Las API específicas del servicio siguen siendo accesibles si es necesario, lo que permite a los consumidores codificar en las abstracciones estándar y pasar a las API propietarias solo cuando sea necesario.

Microsoft.Extensions.AI proporciona implementaciones para los siguientes servicios a través de paquetes adicionales:

En el futuro, las implementaciones de estas Microsoft.Extensions.AI abstracciones formarán parte de las bibliotecas cliente respectivas en lugar de requerir la instalación de paquetes adicionales.

Implementaciones de middleware para servicios de inteligencia artificial

La conexión y el uso de servicios de inteligencia artificial es solo un aspecto de la creación de aplicaciones sólidas. Las aplicaciones listas para producción requieren características adicionales, como telemetría, registro y funcionalidades de llamada de herramientas. Las Microsoft.Extensions.AI abstracciones permiten integrar fácilmente estos componentes en las aplicaciones mediante patrones conocidos.

En el ejemplo siguiente se muestra cómo registrar un openAI IChatClient. IChatClient permite asociar las funcionalidades de forma coherente entre varios proveedores.

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

Las funcionalidades que se muestran en este fragmento de código se incluyen en la Microsoft.Extensions.AI biblioteca, pero solo son un pequeño subconjunto de las funcionalidades que se pueden superponer con este enfoque. Los desarrolladores de .NET pueden exponer muchos tipos de middleware para crear una eficaz funcionalidad de inteligencia artificial.

Compilación con Microsoft.Extensions.AI

Puede empezar a compilar con Microsoft.Extensions.AI de las siguientes maneras:

  • Desarrolladores de bibliotecas: si posee bibliotecas que proporcionan clientes para servicios de inteligencia artificial, considere la posibilidad de implementar las interfaces en las bibliotecas. Esto permite a los usuarios integrar fácilmente el paquete NuGet a través de las abstracciones.
  • Consumidores de servicios: si está desarrollando bibliotecas que consumen servicios de inteligencia artificial, use las abstracciones en lugar de codificar de forma dura a un servicio de INTELIGENCIA artificial específico. Este enfoque ofrece a los consumidores la flexibilidad de elegir su servicio preferido.
  • Desarrolladores de aplicaciones: use las abstracciones para simplificar la integración en las aplicaciones. Esto permite la portabilidad entre modelos y servicios, facilita las pruebas y el simulacro, aprovecha el middleware proporcionado por el ecosistema y mantiene una API coherente en toda la aplicación, incluso si usa servicios diferentes en diferentes partes de la aplicación.
  • Colaboradores del ecosistema: si está interesado en contribuir al ecosistema, considere la posibilidad de escribir componentes de middleware personalizados. Para empezar, consulte los ejemplos en el repositorio dotnet/ai-samples de GitHub.

Para obtener un ejemplo de un extremo a otro mediante Microsoft.Extensions.AI, vea eShopSupport.

Pasos siguientes