Ai-Sentry — это прозрачный подключаемый слой Generative AI Facade на основе Python + DAPR, предназначенный для поддержки следующих функций для крупных предприятий, разрабатывающих и эксплуатирующих решения Generative AI:
Перекрестная оплата за использование токенов разными потребителями openAI
Асинхронное ведение журнала запросов/ответов с возможностью переключения удаления информации PII. Этот уровень ведения журнала полезен для многих вещей, таких как соблюдение законодательства, а также для оценки и воспроизведения запросов/ответов на новые модели, чтобы помочь вам справиться с обновлениями моделей, не затрагивая существующих пользователей.
Более разумная балансировка нагрузки за счет учета показателей нагрузки заголовка ответа Azure openAI и объединения нескольких серверных частей с одинаковыми возможностями модели.
Поддержка потоковых и непоточных ответов (включая их регистрацию)
Расширяемость пользовательских адаптеров, которая поможет вам справиться с устаревшими SDK/API на стороне клиента, поэтому при необходимости вы можете обеспечить обратную совместимость.
AI-Sentry не предназначен для замены существующих решений API-шлюзов, таких как Azure APIM, а скорее предназначен для размещения между API-шлюзом и конечными точками openAI, обеспечивая максимальный контроль над вашими решениями openAI.
Мы пытаемся выполнять тяжелую обработку вне конвейера прямых HTTP-вызовов, чтобы минимизировать задержку для потребителей, и полагаемся на побочные машины DAPR и шаблоны Pub/Sub для асинхронного выполнения работы.
Потому что AI-Sentry использует DAPR; выбор технологий для сохранения журналов и брокеров сообщений можно заменять через собственные компоненты DAPR. В нашем примере REDIS и концентраторы событий используются в качестве брокера сообщений для PUB/SUB, а CosmosDB — в качестве постоянного хранилища журналов.
Должны существовать следующие переменные среды. То, как вы их передаете, зависит от вас — например, секреты Kubernetes, карты конфигурации и т. д.
Имя | Ценить | Компонент |
---|---|---|
AI-SENTRY-ENDPOINT-CONFIG | Пример значения JSON находится здесь. Это используется для сопоставления конечных точек/развертываний openai - так что при балансировке нагрузки мы обращаемся к группе одинаковых моделей openAI из пула. Обязательно включите /openai в конфигурацию URL-адреса конечной точки. Вы можете использовать следующий скрипт, чтобы сгенерировать экранированную строку JSON для этого JSON. | Фасадное приложение |
AI-SENTRY-LANGUAGE-KEY | ваш общий ключ API Congnitive Services | Рабочий CosmosDB |
AI-SENTRY-LANGUAGE-ENDPOINT | текстовая аналитика на вашем языке или URL-адрес общей конечной точки службы | Рабочий CosmosDB |
Что бы вы ни использовали для AI-Sentry, например, с помощью Azure APIM или какой-либо другой технологии шлюза API, вам необходимо будет предоставить некоторые обязательные заголовки HTTP.
ИМЯ HTTP-ЗАГОЛОВКА | ЗНАЧЕНИЕ HTTP-ЗАГОЛОВКА |
---|---|
AI-Sentry-потребитель | это может быть любая строка — она используется для представления потребителя или продукта, использующего генеративный ИИ-бэкенд. Мы используем это для целей регистрации |
уровень журнала AI-Sentry | Это переключает уровень ведения журнала для фактического потребителя. Допустимые значения: COMPLETE, PII_STRIPPING_ENABLED или DISABLED. |
AI-Sentry-бэкэнд-пул | Укажите имя пула из конфигурации AI-SENTRY-ENDPOINT-CONFIG. Например, пул1 |
ai-sentry-адаптеры | Прежде чем отправлять запрос на конечную точку openai, укажите список имен адаптеров, через которые вы хотите пройти. Пример: ["SampleApiRequestTransformer","adapter2..."] |
Для получения дополнительной информации о настройке AI-Sentry в вашей среде следуйте следующим подробным разделам.
Настройка базы данных/таблицы CosmosDB
Настройка AI-Sentry на AKS
Схема ведения журнала CosmosDB
Сводная схема ведения журнала
Настройка идентификации рабочей нагрузки — если вы хотите авторизоваться на бэкэндах openai через JWT вместо ключей API.
К счастью, наш коллега Грэм Фостер опубликовал версию для dotnet с аналогичным набором функций. Пожалуйста, зайдите и проверьте: https://github.com/microsoft/aicentral.
Этот проект приветствует вклад и предложения. Большинство вкладов требует от вас согласия с Лицензионным соглашением для авторов (CLA), в котором говорится, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробную информацию можно найти на странице https://cla.opensource.microsoft.com.
Когда вы отправляете запрос на включение, бот CLA автоматически определяет, нужно ли вам предоставить CLA, и соответствующим образом оформляет PR (например, проверку статуса, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз во всех репозиториях, используя наш CLA.
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. Часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.
Этот проект может содержать товарные знаки или логотипы проектов, продуктов или услуг. Разрешенное использование товарных знаков и логотипов Microsoft регулируется и должно соответствовать Руководству Microsoft по товарным знакам и брендам. Использование товарных знаков или логотипов Microsoft в измененных версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство Microsoft. Любое использование товарных знаков или логотипов третьих лиц регулируется политикой этих третьих сторон.