Программирование и разработка программного обеспечения

Добавление инструментов маршрутизации и резервного переключения в Microsoft.Extensions.AI

Команда .NET объявила о четырех новых экспериментальных типах, позволяющих маршрутизировать запросы искусственного интеллекта между моделями и поставщиками услуг, выполнять резервное переключение при сбое одного из них и создавать пользовательские политики маршрутизации внутри Microsoft.Extensions.AI.

2026-08-13
4 мин. чтения
8 просмотров
فريق تحرير certi.news
Добавление инструментов маршрутизации и резервного переключения в Microsoft.Extensions.AI

Microsoft добавила в библиотеку Microsoft.Extensions.AI четыре экспериментальных типа для управления маршрутизацией запросов искусственного интеллекта и резервным переключением между моделями или поставщиками услуг. Все эти типы реализуют интерфейс IChatClient, что позволяет использовать их в существующей архитектуре библиотеки для работы с ограничениями стоимости, доступности и времени отклика.

Инструменты маршрутизации и резервного переключения

RoutingChatClient представляет собой базовый класс, который выбирает подходящий клиент для каждого запроса, а затем передает ему вызов. Его можно создать с помощью простой функции обратного вызова или расширить, переопределив SelectClientAsync, чтобы реализовать более сложные политики маршрутизации либо политики, зависящие от состояния приложения.

SemanticRoutingChatClient направляет запросы на основе их смысла. Разработчик предоставляет библиотеке примеры фраз, связанные с каждым клиентом, после чего последнее сообщение пользователя преобразуется во векторное представление и сравнивается с примерами для выбора клиента с наибольшим сходством, превышающим заданный порог. Если ни одно совпадение не превышает порог, используется клиент по умолчанию.

Векторные представления примеров маршрутов создаются по мере необходимости и кэшируются. Такие настройки, как scoreThreshold, topK и scoreAggregation, позволяют управлять минимальным сходством и количеством примеров, используемых для агрегирования результата, с возможностью применять среднее значение или сумму. Кроме того, по умолчанию тип освобождает клиентов и генератор векторных представлений при освобождении самого типа; это можно отключить с помощью leaveOpen.

Резервное переключение и мониторинг попыток

FailoverChatClient расширяет возможности маршрутизации, добавляя цикл повторных попыток. Если выбранный клиент завершается с ошибкой до того, как вызывающей стороне будут переданы какие-либо потоковые выходные данные, тип повторно вызывает SelectClientAsync, чтобы выбрать другой клиент. После начала передачи выходных данных ошибка считается окончательной, и восстановление в середине потока не выполняется.

Класс предоставляет OnRoutingUpdateAsync для мониторинга каждой попытки — независимо от того, завершилась ли она успешно, с ошибкой или была отменена. Запись о попытке содержит вызванный клиент, длительность выполнения, исключение, если оно возникло, а также сведения о том, завершился ли ответ полностью или получила ли вызывающая сторона потоковые выходные данные, и, если применимо, время до первого обновления. Эти данные можно использовать для оценки производительности поставщиков или построения таких политик, как размыкание цепи и сортировка клиентов по времени отклика.

OrderedFailoverChatClient предоставляет готовую реализацию этого механизма: он принимает упорядоченный список клиентов и последовательно испытывает их. Если все варианты завершаются с ошибкой, повторно передается последнее исключение. MaximumAttemptsPerRequest задает максимальное число вызовов в рамках запроса, а выбор нового клиента прекращается при отмене токена отмены запроса.

Соображения при построении политик маршрутизации

В публикации содержится предупреждение о перенаправлении на каждом ходу диалога без учета его характера. Модели рассуждений могут зависеть от зашифрованного содержимого или токенов продолжения, связанных с определенным поставщиком, а переход к другой модели или поставщику может лишить возможности использовать кэширование префикса и привести к повторной оплате его вычисления.

Для многоходовых диалогов в публикации предлагается фиксировать маршрут с помощью идентификатора сеанса, которым владеет сама служба, вместо зависимости от принадлежащего поставщику ConversationId. Выбранный маршрут можно сохранять в состоянии сеанса или в IDistributedCache; фиксировать маршрут следует только после успешного завершения ответа.

К числу других политик, которые можно построить, относятся маршрутизация с учетом времени отклика, состояния, стоимости, возможностей и географического региона, а также объединение нескольких маршрутизаторов, поскольку каждый из них работает как IChatClient. Однако эти инструменты не выполняют последовательную маршрутизацию на основе качества успешного ответа, не запускают нескольких клиентов с объединением их результатов и не проводят состязание между клиентами для выбора первого ответа; для таких сценариев требуется клиент, выполняющий более одного вызова.

Доступность и экспериментальный статус

Типы RoutingChatClient, RoutingContext, FailoverChatClient, FailoverChatClientAttempt, OrderedFailoverChatClient и SemanticRoutingChatClient доступны в версии 10.9.0 Microsoft.Extensions.AI. Все они помечены как экспериментальные с использованием диагностического идентификатора MEAI001. Пакет можно добавить с помощью команды dotnet add package Microsoft.Extensions.AI.

Источник новости
ف
Автор

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

В той же категории

Вам также может понравиться

Все новости