Use este guia para gerenciar um limite de taxa existente em um projeto e criar um alerta de gastos mensais. Os limites de taxa restringem o uso dos modelos pelo projeto em determinado período. Os alertas de gastos notificam sua equipe quando os gastos mensais atingem um valor definido, mas não interrompem as solicitações à API nem impõem um teto de gastos.
Ao concluir o fluxo de trabalho principal, você terá uma configuração reutilizável que:
- Consulta os registros de limites de taxa disponíveis para um projeto existente.
- Gerencia os limites de solicitações e de tokens de um modelo.
- Envia um alerta por e-mail quando os gastos mensais do projeto atingem o valor definido.
Antes de começar
Conclua a configuração do provedor do Terraform e exporte uma chave da API de administração na variável de ambiente OPENAI_ADMIN_KEY. Você também precisa dos seguintes itens:
- O ID de um projeto existente.
- Pelo menos um endereço de e-mail para receber os alertas de gastos.
Use um projeto de teste para avaliar o fluxo de trabalho. Na próxima seção, você vai identificar o registro de limite de taxa de um modelo de texto. A OpenAI cria os registros de limites de taxa disponíveis para o projeto. O Terraform atualiza esses registros, sem criar novos.
Consultar os limites de taxa do projeto
Consulte os registros de limites de taxa disponíveis para o projeto:
data "openai_project_rate_limits" "current" {
project_id = "proj_123"
}
output "project_rate_limits" {
value = data.openai_project_rate_limits.current.rate_limits
}
A fonte de dados faz uma solicitação somente leitura:
project_idseleciona o projeto a consultar.rate_limitscontém um objeto para cada limite de taxa disponível por modelo, com os camposidemodele os valores dos limites aplicáveis.- A saída exibe os registros após a execução de
terraform planouterraform apply.
Use o registro cujo campo model corresponde ao modelo que você quer controlar. Copie o id desse registro. O próximo recurso usa esse valor como rate_limit_id. Informe o ID explicitamente para evitar que uma alteração no provedor ou na API leve à seleção de outro registro.
Gerenciar um limite de taxa existente
Configure os limites de solicitações e de tokens no registro selecionado para o modelo de texto:
resource "openai_project_rate_limit" "application" {
project_id = "proj_123"
rate_limit_id = "rl-gpt-3.5-turbo"
max_requests_per_1_minute = 500
max_tokens_per_1_minute = 200000
}
Cada argumento tem uma função específica:
project_ididentifica o projeto cujo limite de taxa será alterado.rate_limit_ididentifica um registro existente de limite de taxa de um modelo. Esse valor é diferente do ID do modelo.max_requests_per_1_minutelimita o número de solicitações que o projeto pode enviar ao modelo por minuto.max_tokens_per_1_minutelimita o número de tokens que o projeto pode processar com o modelo por minuto.
Defina apenas os campos aplicáveis ao registro selecionado. Outros tipos de registro podem disponibilizar limites para imagens por minuto, megabytes de áudio por minuto, solicitações por dia ou tokens de entrada do Batch por dia. O valor configurado não pode exceder o limite disponível para a organização e o projeto.
Embora o primeiro plano do Terraform indique que esse recurso será adicionado, o provedor atualiza o registro de limite de taxa existente e depois o armazena no estado do Terraform. Quando você altera um limite configurado, o provedor envia outra atualização.
Ao remover openai_project_rate_limit da configuração, você remove o registro
do estado do Terraform, mas o limite de taxa remoto não é redefinido nem excluído.
Se outro fluxo de trabalho for gerenciar o registro, defina os valores desejados
para o limite remoto antes de remover o recurso.
Configurar um alerta de gastos do projeto
Crie um alerta de gastos mensais para o projeto:
resource "openai_project_spend_alert" "monthly" {
project_id = "proj_123"
threshold_amount = 20000
currency = "USD"
interval = "month"
notification_channel_type = "email"
notification_channel_recipients = ["platform-alerts@example.com"]
notification_channel_subject_prefix = "OpenAI project spend"
}
A configuração do alerta define a condição de gastos que aciona a notificação e o canal de envio:
project_idrestringe o alerta aos gastos de um único projeto.threshold_amountdefine, em centavos, o valor de gastos mensais que aciona o alerta.20000equivale a US$ 200.currencydeve serUSD.intervaldeve sermonth.notification_channel_typedeve seremail.notification_channel_recipientsdeve conter pelo menos um destinatário.notification_channel_subject_prefixé um texto opcional acrescentado ao início do assunto dos e-mails de alerta.
O Terraform cria o alerta e armazena o alert_id gerado. Quando você altera o valor que aciona o alerta ou os campos de notificação, o Terraform atualiza o alerta. Remover o recurso exclui o alerta remoto.
Os alertas de gastos apenas enviam notificações, sem impor um teto de gastos. Defina uma resposta a incidentes ou uma ação administrativa para cada valor de alerta e use os limites de taxa para controlar o volume de solicitações de forma independente.
Configurar um alerta de gastos da organização
Use um alerta da organização quando o valor que aciona a notificação se aplicar aos gastos de toda a organização:
resource "openai_organization_spend_alert" "monthly" {
threshold_amount = 100000
currency = "USD"
interval = "month"
notification_channel_type = "email"
notification_channel_recipients = ["platform-alerts@example.com"]
}
Esse recurso usa a mesma unidade para o valor de alerta, o mesmo intervalo, a mesma moeda e os mesmos campos de notificação que um alerta de projeto. Como contabiliza os gastos de toda a organização, ele não aceita o argumento project_id. Neste exemplo, o alerta envia um e-mail quando os gastos mensais da organização atingem US$ 1.000.
Você pode gerenciar os alertas do projeto e da organização em conjunto. Use valores de alerta e destinatários distintos quando equipes diferentes forem responsáveis pela resposta em cada escopo.
Executar o exemplo completo
Os exemplos anteriores usam valores concretos para explicar cada recurso. A configuração completa substitui os valores específicos do ambiente por variáveis e reúne a consulta aos limites de taxa do projeto, o gerenciamento de um desses limites e a criação de um alerta de gastos do projeto.
Salve a configuração a seguir como main.tf:
terraform {
required_version = ">= 1.0"
required_providers {
openai = {
source = "openai/openai"
version = ">= 1.0.0"
}
}
}
provider "openai" {}
variable "project_id" {
type = string
}
variable "rate_limit_id" {
type = string
description = "Existing rate-limit record for the text model to manage."
}
variable "max_requests_per_minute" {
type = number
}
variable "max_tokens_per_minute" {
type = number
}
variable "project_spend_threshold_cents" {
type = number
description = "Monthly project spend threshold in cents."
validation {
condition = var.project_spend_threshold_cents > 0
error_message = "The project spend threshold must be greater than zero."
}
}
variable "alert_recipients" {
type = list(string)
validation {
condition = length(var.alert_recipients) > 0
error_message = "Provide at least one spend-alert recipient."
}
}
data "openai_project_rate_limits" "current" {
project_id = var.project_id
}
resource "openai_project_rate_limit" "application" {
project_id = var.project_id
rate_limit_id = var.rate_limit_id
max_requests_per_1_minute = var.max_requests_per_minute
max_tokens_per_1_minute = var.max_tokens_per_minute
}
resource "openai_project_spend_alert" "monthly" {
project_id = var.project_id
threshold_amount = var.project_spend_threshold_cents
currency = "USD"
interval = "month"
notification_channel_type = "email"
notification_channel_recipients = var.alert_recipients
notification_channel_subject_prefix = "OpenAI project spend"
}
output "available_rate_limits" {
value = data.openai_project_rate_limits.current.rate_limits
}
output "managed_rate_limit_model" {
value = openai_project_rate_limit.application.model
}
output "project_spend_alert_id" {
value = openai_project_spend_alert.monthly.alert_id
}
Crie o arquivo terraform.tfvars com o ID de um projeto existente, o ID do registro de limite de taxa que você identificou para um modelo de texto, os limites aprovados, o valor de alerta em centavos e os destinatários da notificação:
project_id = "proj_123"
rate_limit_id = "rl-gpt-3.5-turbo"
max_requests_per_minute = 500
max_tokens_per_minute = 200000
project_spend_threshold_cents = 20000
alert_recipients = ["platform-alerts@example.com"]
Escolha valores de solicitações e de tokens que não excedam os limites disponíveis no momento para o projeto. A saída available_rate_limits do plano mostra os registros e valores atuais para comparação.
Inicialize o Terraform e, em seguida, revise e aplique o plano salvo:
terraform init
terraform fmt
terraform validate
terraform plan -out=tfplan
terraform show tfplan
terraform apply tfplan
O primeiro plano deve indicar a adição de dois recursos. O Terraform indica que o recurso de limite de taxa será adicionado ao estado, mas, ao aplicar o plano, ele atualiza o registro de limite de taxa existente na OpenAI. A outra adição cria o alerta de gastos do projeto. Depois que o plano for aplicado, terraform output exibirá os limites de taxa disponíveis, o modelo associado ao registro gerenciado e o ID do alerta.
Execute terraform plan novamente para confirmar que a configuração não gera outras alterações. Se o plano indicar divergências, verifique se outro administrador ou alguma automação alterou o limite de taxa ou o alerta de gastos antes de aplicar uma nova atualização.