Programación y desarrollo de software

Adición de herramientas de enrutamiento y conmutación por error a Microsoft.Extensions.AI

El equipo de .NET anunció cuatro nuevos tipos experimentales que permiten enrutar solicitudes de inteligencia artificial entre modelos y proveedores de servicios, ejecutar una conmutación por error cuando uno de ellos deja de funcionar y crear políticas de enrutamiento personalizadas dentro de Microsoft.Extensions.AI.

2026-08-13
5 min de lectura
8 visitas
فريق تحرير certi.news
Adición de herramientas de enrutamiento y conmutación por error a Microsoft.Extensions.AI

Microsoft añadió a la biblioteca Microsoft.Extensions.AI varios tipos experimentales para gestionar el enrutamiento y la conmutación por error de solicitudes de inteligencia artificial entre modelos o proveedores de servicios. Todos estos tipos implementan la interfaz IChatClient, lo que permite utilizarlos dentro de la arquitectura actual de la biblioteca para abordar limitaciones de coste, disponibilidad y latencia.

Herramientas de enrutamiento y conmutación por error

RoutingChatClient representa la clase base que selecciona un cliente adecuado para cada solicitud y, después, le transfiere la llamada. Puede crearse mediante una función de devolución de llamada sencilla o ampliarse redefiniendo SelectClientAsync para aplicar políticas de enrutamiento más complejas o basadas en el estado de la aplicación.

Por su parte, SemanticRoutingChatClient enruta las solicitudes según su significado. El desarrollador proporciona a la biblioteca ejemplos de frases asociadas a cada cliente; después, el último mensaje del usuario se convierte en una incrustación y se compara con los ejemplos para seleccionar al cliente con la mayor similitud que supere el umbral definido. Si ninguna coincidencia supera el umbral, se utiliza el cliente predeterminado.

Las incrustaciones de los ejemplos de las rutas se crean bajo demanda y se almacenan temporalmente. Configuraciones como scoreThreshold, topK y scoreAggregation permiten controlar la similitud mínima y el número de ejemplos utilizados para agregar el resultado, con la posibilidad de usar el promedio o la suma. Además, de forma predeterminada, el tipo se encarga de eliminar los clientes y el generador de incrustaciones cuando se elimina, y esto puede desactivarse mediante leaveOpen.

Conmutación por error y supervisión de los intentos

FailoverChatClient amplía las capacidades de enrutamiento mediante la adición de un bucle de reintento. Si el cliente seleccionado falla antes de que llegue cualquier salida en streaming al llamador, el tipo vuelve a invocar SelectClientAsync para seleccionar otro cliente. Sin embargo, una vez iniciado el envío de las salidas, el fallo se considera definitivo y el sistema no realiza una recuperación a mitad del flujo.

La clase proporciona OnRoutingUpdateAsync para supervisar cada intento, tanto si termina correctamente como si falla o se abandona. El registro del intento incluye el cliente invocado, la duración de la ejecución, la excepción, si la hubiera, y si la respuesta se completó o si alguna salida en streaming llegó al llamador, además del tiempo hasta la primera actualización cuando corresponda. Estos datos pueden utilizarse para evaluar el rendimiento de los proveedores o crear políticas como la ruptura de circuito y la clasificación de clientes según la latencia.

OrderedFailoverChatClient ofrece una implementación lista para usar de este mecanismo: recibe una lista ordenada de clientes y los prueba secuencialmente. Cuando fallan todas las opciones, vuelve a propagar la última excepción. MaximumAttemptsPerRequest establece el número máximo de llamadas por solicitud, y la selección de un nuevo cliente también se detiene cuando se cancela el token de cancelación de la solicitud.

Consideraciones para crear políticas de enrutamiento

La publicación advierte contra el reencaminamiento en cada turno de la conversación sin estudiar su naturaleza. Los modelos de razonamiento pueden depender de contenido codificado o de tokens de continuación asociados a un proveedor concreto, y cambiar a otro modelo o proveedor puede hacer perder el beneficio de la caché del prefijo y volver a generar el coste de su cálculo.

Para las conversaciones de varios turnos, la publicación propone fijar la ruta mediante un identificador de sesión administrado por el propio servicio, en lugar de depender del ConversationId del proveedor. La ruta seleccionada puede guardarse en el estado de la sesión o en IDistributedCache, y solo debe fijarse después de que la respuesta se complete correctamente.

Otras políticas que pueden crearse incluyen el enrutamiento según la latencia, el estado de salud, el coste, las capacidades y la región geográfica, además de componer varios enrutadores, ya que cada uno funciona como un IChatClient. Sin embargo, estas herramientas no implementan el enrutamiento secuencial basado en la calidad de una respuesta correcta, la ejecución de varios clientes y la combinación de sus resultados, ni la competición entre clientes para elegir la primera respuesta; estos escenarios requieren un cliente que realice más de una llamada.

Disponibilidad y estado experimental

Los tipos RoutingChatClient, RoutingContext, FailoverChatClient, FailoverChatClientAttempt, OrderedFailoverChatClient y SemanticRoutingChatClient están disponibles en la versión 10.9.0 de Microsoft.Extensions.AI. Todos están marcados como experimentales mediante el identificador de diagnóstico MEAI001. El paquete puede añadirse mediante el comando dotnet add package Microsoft.Extensions.AI.

Fuente de la noticia
ف
Autor

فريق تحرير certi.news

De la misma categoría

También te puede interesar

Ver todas las noticias