For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal

Límites de solicitudes y gasto con Terraform

Concilia los límites de solicitudes del proyecto y configura alertas de gasto.

Usa esta guía para administrar un límite de solicitudes existente de un proyecto y crear una alerta de gasto mensual. Los límites de solicitudes restringen el uso de modelos de un proyecto a lo largo del tiempo. Las alertas de gasto notifican a tu equipo cuando el uso mensual alcanza un umbral, pero no detienen las solicitudes a la API ni imponen un tope de gasto.

Después de completar el flujo de trabajo principal, tendrás una configuración repetible que:

  • Lee los registros de límites de solicitudes disponibles para un proyecto existente.
  • Administra los límites de solicitudes y tokens de un modelo.
  • Envía una alerta por correo electrónico cuando el gasto mensual del proyecto alcanza un umbral.

Antes de comenzar

Completa la configuración del proveedor de Terraform y exporta una clave de la API de administración como OPENAI_ADMIN_KEY. También necesitas:

  • El ID de un proyecto existente.
  • Al menos una dirección de correo electrónico que deba recibir las alertas de gasto.

Usa un proyecto de prueba al evaluar el flujo de trabajo. En la siguiente sección, identificarás el registro de límites de solicitudes de un modelo de texto. OpenAI crea los registros de límites de solicitudes disponibles para un proyecto; Terraform actualiza esos registros en lugar de crear otros nuevos.

Consultar los límites de solicitudes del proyecto

Lee los registros de límites de solicitudes disponibles para un proyecto:

data "openai_project_rate_limits" "current" {
  project_id = "proj_123"
}

output "project_rate_limits" {
  value = data.openai_project_rate_limits.current.rate_limits
}

La fuente de datos realiza una solicitud de solo lectura:

  • project_id selecciona el proyecto que se va a inspeccionar.
  • rate_limits contiene un objeto por cada límite de solicitudes de modelo disponible, incluidos su id, su model y los valores de los límites aplicables.
  • La salida muestra los registros después de ejecutar terraform plan o terraform apply.

Usa el registro cuyo model coincida con el modelo que quieres controlar. Copia su id; el siguiente recurso usa ese valor como rate_limit_id. Mantén el ID como una entrada explícita para evitar que un cambio en el proveedor o en la API haga que se seleccione un registro diferente.

Administrar un límite de solicitudes existente

Administra los límites de solicitudes y tokens del registro seleccionado del 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 cumple una función específica:

  • project_id identifica el proyecto cuyo límite de solicitudes se modificará.
  • rate_limit_id identifica un registro existente de límites de solicitudes de un modelo. No es un ID de modelo.
  • max_requests_per_1_minute limita la cantidad de solicitudes que el proyecto puede enviar para ese modelo cada minuto.
  • max_tokens_per_1_minute limita la cantidad de tokens que el proyecto puede procesar para ese modelo cada minuto.

Configura solo los campos que correspondan al registro seleccionado. Otros tipos de registros pueden ofrecer límites de imágenes por minuto, megabytes de audio por minuto, solicitudes por día o tokens de entrada de procesamiento por lotes por día. Un valor configurado no puede superar el límite disponible para la organización y el proyecto.

Aunque el primer plan de Terraform muestra este recurso como una adición, el proveedor actualiza el registro existente de límites de solicitudes y luego lo guarda en el estado de Terraform. Al modificar un límite configurado, se envía otra actualización.

Al quitar openai_project_rate_limit de la configuración, se elimina el registro del estado de Terraform, pero no se restablece ni se elimina el límite de solicitudes remoto. Establece los valores remotos deseados antes de quitar el recurso si otro flujo de trabajo va a administrar el registro.

Configurar una alerta de gasto del proyecto

Crea una alerta de gasto mensual del proyecto:

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"
}

La definición de la alerta combina la condición de gasto y su canal de notificación:

  • project_id limita la alerta al gasto de un solo proyecto.
  • threshold_amount es el umbral mensual en centavos. 20000 representa USD 200.
  • currency debe ser USD.
  • interval debe ser month.
  • notification_channel_type debe ser email.
  • notification_channel_recipients debe contener al menos un destinatario.
  • notification_channel_subject_prefix es un texto opcional que se agrega al asunto de los correos electrónicos de alerta.

Terraform crea la alerta y guarda el alert_id generado. Al cambiar el umbral o los campos de notificación, se actualiza la alerta. Al quitar el recurso, se elimina la alerta remota.

Las alertas de gasto son notificaciones, no límites estrictos. Define una respuesta de gestión de incidentes o administrativa para cada umbral y usa los límites de solicitudes para restringir el volumen de solicitudes de forma independiente.

Configurar una alerta de gasto de la organización

Usa una alerta de organización cuando el umbral deba abarcar el gasto de toda la organización:

resource "openai_organization_spend_alert" "monthly" {
  threshold_amount                = 100000
  currency                        = "USD"
  interval                        = "month"
  notification_channel_type       = "email"
  notification_channel_recipients = ["platform-alerts@example.com"]
}

Este recurso usa las mismas unidades de umbral, intervalo, moneda y campos de notificación que una alerta de proyecto. No acepta un project_id porque mide el gasto de toda la organización. El ejemplo envía un correo electrónico después de que el gasto mensual de la organización alcanza USD 1000.

Puedes administrar las alertas de proyecto y de organización en conjunto. Usa umbrales y destinatarios distintos cuando diferentes equipos sean responsables de responder en cada ámbito.

Ejecutar el ejemplo completo

Los ejemplos individuales usan valores concretos para explicar cada recurso. La configuración completa reemplaza los valores específicos del entorno por variables y combina la consulta de los límites de solicitudes del proyecto, un límite de solicitudes administrado y una alerta de gasto del proyecto.

Guarda la siguiente configuración 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
}

Crea terraform.tfvars con el ID de un proyecto existente, el ID del registro de límites de solicitudes que encontraste para un modelo de texto, los límites aprobados, un umbral en centavos y los destinatarios de la alerta:

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"]

Elige valores de solicitudes y tokens que no superen los límites disponibles actualmente para el proyecto. La salida available_rate_limits del plan muestra los registros y valores actuales para que puedas compararlos.

Inicializa Terraform y luego revisa y aplica un plan guardado:

terraform init
terraform fmt
terraform validate
terraform plan -out=tfplan
terraform show tfplan
terraform apply tfplan

El primer plan debería contener dos recursos para agregar. Terraform describe el recurso de límite de solicitudes como una adición al estado, pero al aplicarlo se actualiza el registro existente de límites de solicitudes de OpenAI. La otra adición crea la alerta de gasto del proyecto. Después de aplicar el plan, terraform output muestra los límites de solicitudes disponibles, el modelo asociado con el registro administrado y el ID de la alerta.

Vuelve a ejecutar terraform plan para confirmar que la configuración no produce más cambios. Si muestra diferencias respecto de la configuración, determina si otro administrador o una automatización modificó el límite de solicitudes o la alerta de gasto antes de aplicar otra actualización.