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
Theme

Límites de solicitudes y gasto con Terraform

Sincroniza 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 cuánto puede usar un proyecto cada modelo en un período determinado. Las alertas de gasto avisan a tu equipo cuando el consumo mensual alcanza un umbral, pero no bloquean las solicitudes a la API ni imponen un tope de gasto.

Al completar el flujo de trabajo principal, tendrás una configuración reutilizable que te permitirá:

  • Consultar los registros de límites de solicitudes disponibles para un proyecto existente.
  • Administrar los límites de solicitudes y de tokens de un modelo.
  • Enviar una alerta por correo electrónico cuando el gasto mensual del proyecto alcance un umbral.

Antes de empezar

Completa la configuración del proveedor de Terraform y exporta una clave de API de administrador 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 para evaluar el flujo de trabajo. En la siguiente sección identificarás el registro del límite de solicitudes de un modelo de texto. OpenAI crea los registros de límites de solicitudes disponibles para cada proyecto. Terraform actualiza esos registros en lugar de crear otros nuevos.

Consultar los límites de solicitudes del proyecto

Consulta 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 quieres consultar.
  • rate_limits contiene un objeto por cada límite de solicitudes disponible para un modelo. El objeto incluye su id, el campo 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 campo model coincida con el modelo que quieres controlar. Copia su id. El siguiente recurso usa ese valor como rate_limit_id. Usa el ID como parámetro de entrada explícito para evitar que se seleccione otro registro si cambia el proveedor o la API.

Administrar un límite de solicitudes existente

Administra los límites de solicitudes y de tokens del registro que seleccionaste para el 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 vas a cambiar.
  • rate_limit_id identifica un registro existente del límite de solicitudes de un modelo. No es el ID del modelo.
  • max_requests_per_1_minute limita la cantidad de solicitudes que el proyecto puede enviar a ese modelo por minuto.
  • max_tokens_per_1_minute limita la cantidad de tokens que el proyecto puede procesar con ese modelo por minuto.

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

Aunque el primer plan de Terraform indica que se agregará este recurso, el proveedor actualiza el registro existente del límite de solicitudes y luego lo guarda en el estado de Terraform. Si cambias un límite configurado, el proveedor envía otra actualización.

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

Configurar una alerta de gasto para un proyecto

Crea una alerta de gasto mensual para el 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 especifica tanto la condición de gasto como el canal de notificación:

  • project_id hace que la alerta solo tenga en cuenta el gasto de un proyecto.
  • threshold_amount es el umbral mensual expresado en centavos. 20000 equivale a 200 USD.
  • currency debe ser USD.
  • interval debe ser month.
  • notification_channel_type debe ser email.
  • notification_channel_recipients debe incluir al menos un destinatario.
  • notification_channel_subject_prefix es un texto opcional que se agrega al inicio del asunto de los correos de alerta.

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

Las alertas de gasto envían notificaciones sin imponer un tope de gasto. Define qué medidas administrativas o de respuesta a incidentes se tomarán al alcanzar cada umbral y usa los límites de solicitudes para restringir por separado el volumen de solicitudes.

Configurar una alerta de gasto para una organización

Usa una alerta de organización cuando el umbral deba aplicarse al 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 la misma unidad para el umbral, el mismo intervalo, la misma moneda y los mismos campos de notificación que una alerta de proyecto. No acepta un project_id porque mide el gasto de toda la organización. En el ejemplo, se envía un correo electrónico cuando el gasto mensual de la organización alcanza los 1000 USD.

Puedes administrar las alertas de proyectos y de la organización en conjunto. Usa distintos umbrales y destinatarios cuando la responsabilidad de responder a las alertas de cada ámbito recaiga en equipos diferentes.

Ejecutar el ejemplo completo

Los ejemplos anteriores usan valores concretos para explicar cada recurso. La configuración completa reemplaza los valores específicos de cada entorno por variables. Permite consultar los límites de solicitudes del proyecto, administrar uno de esos límites y configurar una alerta de gasto para el 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 del límite de solicitudes que identificaste 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 de tokens que no superen los límites disponibles actualmente para el proyecto. La salida available_rate_limits del plan muestra los registros y sus valores actuales para que puedas compararlos.

Inicializa Terraform y luego revisa y aplica el plan guardado:

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

El primer plan debería mostrar dos recursos para agregar. Terraform indica que agregará el recurso del límite de solicitudes al estado, pero al aplicar el plan se actualiza el registro existente del límite de solicitudes en OpenAI. El segundo recurso 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 aparecen diferencias, comprueba si otro administrador o alguna automatización modificó el límite de solicitudes o la alerta de gasto antes de aplicar otra actualización.