Поделиться через


Включение семантического кэширования для API LLM в службе "Управление API Azure"

ОБЛАСТЬ ПРИМЕНЕНИЯ: Все уровни управления API

Включение семантического кэширования ответов на запросы API LLM для уменьшения требований к пропускной способности и обработке, введенных для внутренних API и снижения задержки, воспринимаемой потребителями API. С помощью семантического кэширования можно возвращать кэшированные ответы для идентичных запросов, а также для запросов, аналогичных значениям, даже если текст не идентичен. Для информации см. в руководстве: Использование управляемого Redis в Azure в качестве семантического кэша.

Примечание.

Действия по настройке, описанные в этой статье, показаны, как включить семантическое кэширование для API, добавленных в службу управления API от Azure OpenAI в моделях Microsoft Foundry. Вы можете применить аналогичные шаги, чтобы включить семантический кэширование для соответствующих API больших языковых моделей (LLM), доступных через API вывода модели ИИ Azure или с моделями, совместимыми с OpenAI, обслуживаемых сторонними поставщиками вывода.

Предварительные условия

Тестирование развертывания API чата

Сначала проверьте развертывание Azure OpenAI, чтобы убедиться, что API завершения чата или API чата работают должным образом. Инструкции см. в статье "Импорт API OpenAI Azure" в Управление API Azure.

Например, протестируйте API чата Azure OpenAI, отправив запрос POST в конечную точку API с подсказкой в теле запроса. Ответ должен включать выполнение запроса. Пример запроса:

POST https://my-api-management.azure-api.net/my-api/openai/deployments/chat-deployment/chat/completions?api-version=2024-02-01

с текстом запроса:

{"messages":[{"role":"user","content":"Hello"}]}

После успешного выполнения запроса ответ включает завершение сообщения чата.

Создание бэкенда для API эмбеддингов

Создайте внутренний ресурс для развертывания API внедрения с помощью следующих параметров:

  • Имя - произвольное имя по вашему выбору, например, embeddings-backend. Это имя используется для ссылки на серверную часть в политиках.

  • Тип — выбор пользовательского URL-адреса.

  • URL-адрес среды выполнения— URL-адрес развертывания API встраивания в Azure OpenAI, аналогичный: https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings (без параметров запроса).

  • Учетные данные авторизации — перейдите на вкладку "Управляемое удостоверение ".

    • Удостоверение клиента — выберите назначенное системой удостоверение или введите идентификатор клиента управляемого удостоверения, назначаемого пользователем.
    • Идентификатор ресурса . Введите https://cognitiveservices.azure.com/ для Azure OpenAI.

Тестирование эмбеддингов бэкенда

Чтобы протестировать серверную часть внедрения, создайте операцию API для API Azure OpenAI:

  1. На вкладке конструктора API нажмите кнопку +Добавить операцию.
  2. Введите отображаемое имя, например Встраивание, и при желании имя для операции.
  3. В разделе frontend в URL-адресе
  4. На вкладке "Заголовки" добавьте обязательный заголовок с именем Content-Type и значением application/json.
  5. Нажмите кнопку "Сохранить".

Настройте следующие политики в разделе обработки входящих данных операции API. В политике set-backend-service замените имя бэкенда, который вы создали.

<policies>
    <inbound>
        <set-backend-service backend-id="embeddings-backend" />
        <authentication-managed-identity resource="https://cognitiveservices.azure.com/" />
        [...]
    </inbound>
    [...]
</policies>

На вкладке "Тест" проверьте операцию, добавив api-version параметр запроса со значением, 2024-02-01например. Укажите допустимый текст запроса. Например:

{"input":"Hello"}

Если запрос выполнен успешно, ответ включает векторное представление входного текста. Пример ответа:

{
    "object": "list",
    "data": [{
        "object": "embedding",
        "index": 0,
        "embedding": [
            -0.021829502,
            -0.007157768,
            -0.028619017,
            [...]
        ]
    }]
}

Настройка политик семантического кэширования

Чтобы включить семантическое кэширование для Azure OpenAI API в Azure API Management, примените следующие политики: одна для проверки кэша перед отправкой запросов (поиск) и другая для хранения ответов для дальнейшего повторного использования (store):

  • В разделе Входящая обработка для API добавьте политику azure-openai-semantic-cache-lookup. В атрибуте embeddings-backend-id укажите созданную серверную часть API Внедрения.

    Примечание.

    При включении семантического кэширования для других крупных API языковой модели используйте политику llm-semantic-cache-lookup.

    Пример:

    <azure-openai-semantic-cache-lookup
        score-threshold="0.15"
        embeddings-backend-id="embeddings-backend"
        embeddings-backend-auth="system-assigned"
        ignore-system-messages="true"
        max-message-count="10">
        <vary-by>@(context.Subscription.Id)</vary-by>
    </azure-openai-semantic-cache-lookup>
    <rate-limit calls="10" renewal-period="60" />
    

    Примечание.

    Добавьте политику ограничения скорости (или политику ограничения скорости по ключу ) после поиска кэша, чтобы ограничить количество вызовов и предотвратить перегрузку серверной службы в случае, если кэш недоступен.

  • В разделе "Исходящая обработка" для API добавьте политику azure-openai-semantic-cache-store.

    Примечание.

    При включении семантического кэширования для других API большой языковой модели используйте политику llm-semantic-cache-store.

    Пример:

    <azure-openai-semantic-cache-store duration="60" />
    

Подтверждение кэширования

Чтобы убедиться, что семантическое кеширование работает должным образом, отследите тестовую операцию завершения или чата с помощью тестовой консоли в портале. Убедитесь, что кэш используется при последующих попытках, проверив трассировку. Дополнительные сведения о трассировке вызовов API в Azure Управление API.

Измените атрибут score-threshold в политике поиска, чтобы определить, насколько точно входящий запрос должен соответствовать кэшированному запросу, чтобы вернуть сохраненный ответ. Более низкий порог оценки означает, что запросы должны иметь более высокую семантику сходства для возврата кэшированных ответов. Запросы с оценками выше порогового значения не используют кэшированный ответ.

Например, если используется кэш, раздел выходных данных содержит записи, аналогичные следующему снимку экрана:

Снимок экрана: трассировка запроса в портал Azure.