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


Ограничение использования маркера API OpenAI в Azure

ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Базовый | Базовая версия 2 | Стандартный | Standard v2 | Премиум | Премиум версии 2

Политика azure-openai-token-limit предотвращает пики использования API службы OpenAI Azure на основе ключа путем ограничения потребления маркеров языковой модели до указанного числа в минуту. При превышении использования маркера вызывающий объект получает 429 Too Many Requests код состояния ответа.

Используя метрики использования маркеров, возвращаемые из конечной точки OpenAI, политика может точно отслеживать и применять ограничения в режиме реального времени. Политика также включает предварительное вычисление маркеров запроса Управление API, минимизируя ненужные запросы к серверной части OpenAI, если ограничение уже превышено.

Примечание.

Задайте элементы политики и дочерние элементы в порядке, указанном в правиле политики. Узнайте, как устанавливать или изменять политики службы управления API.

Поддерживаемые модели службы OpenAI Azure

Политика используется с API- интерфейсами, добавленными в Управление API из службы Azure OpenAI следующих типов:

Тип API Поддерживаемые модели
Завершение чата gpt-3.5

gpt-4
Completion gpt-3.5-turbo-instruct
Внедрение text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002

Для получения дополнительной информации см. Модели Службы Azure OpenAI.

Правило политики

<azure-openai-token-limit counter-key="key value"
        tokens-per-minute="number"
        estimate-prompt-tokens="true | false"    
        retry-after-header-name="custom header name, replaces default 'Retry-After'" 
        retry-after-variable-name="policy expression variable name"
        remaining-tokens-header-name="header name"  
        remaining-tokens-variable-name="policy expression variable name"
        tokens-consumed-header-name="header name"
        tokens-consumed-variable-name="policy expression variable name" />

Атрибуты

Атрибут Description Обязательное поле По умолчанию.
counter-key Ключ, используемый для политики ограничения маркеров. Для каждого значения ключа используется один счетчик для всех областей, для которых настроена политика. Допустимы выражения политики. Да Н/П
токены в минуту Максимальное количество маркеров, потребляемых запросом и завершением в минуту. Да Н/П
estimate-prompt-token Логическое значение, определяющее, следует ли оценить количество маркеров, необходимых для запроса:
- true: оцените количество токенов на основе схемы запроса в API; может снизить производительность.
- false: не оцените маркеры запроса.

Если задано значение false, остальные маркеры counter-key вычисляются с помощью фактического использования маркеров из ответа модели. Это может привести к отправке запросов в модель, превышающую ограничение маркера. В таком случае это будет обнаружено в ответе, и все успешные запросы будут заблокированы политикой до тех пор, пока ограничение маркера не будет освобождено снова.
Да Н/П
retry-after-header-name Имя пользовательского заголовка ответа, значение которого является рекомендуемой интервалом повтора в секундах после превышения указанного tokens-per-minute значения. Выражения политики не допускаются. No Retry-After
retry-after-variable-name Имя переменной, которая сохраняет рекомендуемый интервал повторных попыток в секундах после превышения указанного tokens-per-minute значения. Выражения политики не допускаются. No Н/П
остальные токены-заголовок-name Имя заголовка ответа, значение которого после каждого выполнения политики — это количество оставшихся маркеров, разрешенных для интервала времени. Выражения политики не допускаются. No Н/П
остальные токены-переменные-name Имя переменной, которая после каждого выполнения политики сохраняет количество оставшихся маркеров, разрешенных для интервала времени. Выражения политики не допускаются. No Н/П
token-consumed-header-name Имя заголовка ответа, значение которого — количество маркеров, потребляемых как запросом, так и завершением. Заголовок добавляется в ответ только после получения ответа от серверной части. Выражения политики не допускаются. No Н/П
token-consumed-variable-name Имя переменной, инициализированной с предполагаемым количеством маркеров в запросе в разделе конвейера, backend если estimate-prompt-tokens значение равно true нулю. Переменная обновляется с указанным числом при получении ответа в outbound разделе. No Н/П

Использование

Примечания об использовании

  • Эту политику можно использовать несколько раз для определения политики.
  • Эта политика может быть настроена при добавлении API из службы Azure OpenAI с помощью портала.
  • estimate-prompt-tokens Если задано значение false, значения в разделе использования ответа из API службы Azure OpenAI используются для определения использования маркеров.
  • Некоторые конечные точки Azure OpenAI поддерживают потоковую передачу ответов. Если stream задано значение true в запросе API для включения потоковой передачи, маркеры запроса всегда оцениваются независимо от значения атрибута estimate-prompt-tokens . Маркеры завершения также оцениваются при потоковой передаче ответов.
  • Управление API использует один счетчик для каждого counter-key значения, указанного в политике. Счетчик обновляется во всех областях, в которых политика настроена с этим значением ключа. Если вы хотите настроить отдельные счетчики в разных областях (например, определенный API или продукт), укажите разные значения ключей в разных областях. Например, добавьте строку, которая определяет область к значению выражения.

Пример

В следующем примере ограничение маркера в 5000 в минуту определяется IP-адресом вызывающего объекта. Политика не оценивает количество маркеров, необходимых для запроса. После каждого выполнения политики остальные маркеры, разрешенные для этого ВЫЗЫВАющего IP-адреса в период времени, хранятся в переменной remainingTokens.

<policies>
    <inbound>
        <base />
        <azure-openai-token-limit
            counter-key="@(context.Request.IpAddress)"
            tokens-per-minute="5000" estimate-prompt-tokens="false" remaining-tokens-variable-name="remainingTokens" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Дополнительные сведения о работе с политиками см. в нижеуказанных статьях.