For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale

Limites de débit et dépenses avec Terraform

Synchronisez les limites de débit des projets et configurez des alertes de dépenses.

Suivez ce guide pour gérer une limite de débit existante d’un projet et créer une alerte de dépenses mensuelles. Les limites de débit restreignent l’utilisation des modèles par un projet sur une période donnée. Les alertes de dépenses avertissent votre équipe lorsque la consommation mensuelle atteint un seuil, mais elles ne bloquent pas les requêtes API et n’imposent aucun plafond de dépenses.

Une fois le workflow principal terminé, vous disposerez d’une configuration réutilisable qui :

  • Lit les enregistrements de limites de débit disponibles pour un projet existant.
  • Gère les limites de requêtes et de tokens pour un modèle.
  • Envoie une alerte par e-mail lorsque les dépenses mensuelles du projet atteignent un seuil.

Avant de commencer

Effectuez la configuration du fournisseur Terraform et exportez une clé d’API d’administration dans la variable OPENAI_ADMIN_KEY. Vous aurez également besoin des éléments suivants :

  • L’ID d’un projet existant.
  • Au moins une adresse e-mail à laquelle envoyer les alertes de dépenses.

Utilisez un projet de test pour évaluer le workflow. Dans la section suivante, vous identifierez l’enregistrement de limite de débit d’un modèle de texte. OpenAI crée les enregistrements de limites de débit disponibles pour un projet ; Terraform met à jour ces enregistrements plutôt que d’en créer de nouveaux.

Découvrez les limites de débit d’un projet

Lisez les enregistrements de limites de débit disponibles pour un projet :

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

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

La source de données effectue une requête en lecture seule :

  • project_id sélectionne le projet à examiner.
  • rate_limits contient un objet pour chaque limite de débit de modèle disponible, avec ses champs id et model et les valeurs des limites applicables.
  • La sortie affiche les enregistrements après l’exécution de terraform plan ou de terraform apply.

Utilisez l’enregistrement dont le champ model correspond au modèle dont vous souhaitez contrôler l’utilisation. Copiez son id ; la ressource suivante utilise cette valeur pour rate_limit_id. Conservez cet ID comme valeur d’entrée explicite pour éviter qu’une modification du fournisseur ou de l’API n’entraîne la sélection d’un autre enregistrement.

Gérez une limite de débit existante

Gérez les limites de requêtes et de tokens de l’enregistrement sélectionné pour le modèle de texte :

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
}

Chaque argument a un rôle précis :

  • project_id identifie le projet dont la limite de débit sera modifiée.
  • rate_limit_id identifie un enregistrement existant de limite de débit pour un modèle. Il ne s’agit pas d’un ID de modèle.
  • max_requests_per_1_minute limite le nombre de requêtes que le projet peut envoyer pour ce modèle chaque minute.
  • max_tokens_per_1_minute limite le nombre de tokens que le projet peut traiter pour ce modèle chaque minute.

Définissez uniquement les champs qui s’appliquent à l’enregistrement sélectionné. D’autres types d’enregistrements peuvent proposer des limites d’images par minute, de mégaoctets audio par minute, de requêtes par jour ou de tokens d’entrée du traitement par lots par jour. Une valeur configurée ne peut pas dépasser la limite accordée à l’organisation et au projet.

Bien que le premier plan Terraform présente cette ressource comme un ajout, le fournisseur met à jour l’enregistrement de limite de débit existant, puis le stocke dans l’état Terraform. La modification d’une limite configurée déclenche une nouvelle mise à jour.

Retirer openai_project_rate_limit de la configuration supprime l’enregistrement de l’état Terraform, mais ne réinitialise ni ne supprime la limite de débit distante. Définissez les valeurs distantes souhaitées avant de retirer la ressource si un autre workflow doit gérer l’enregistrement.

Configurez une alerte de dépenses pour un projet

Créez une alerte de dépenses mensuelles pour un projet :

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 définition de l’alerte associe la condition de dépenses au canal de notification :

  • project_id restreint l’alerte aux dépenses d’un seul projet.
  • threshold_amount est le seuil mensuel en cents. 20000 représente 200 USD.
  • currency doit avoir la valeur USD.
  • interval doit avoir la valeur month.
  • notification_channel_type doit avoir la valeur email.
  • notification_channel_recipients doit contenir au moins un destinataire.
  • notification_channel_subject_prefix est un texte facultatif ajouté à l’objet des e-mails d’alerte.

Terraform crée l’alerte et stocke son alert_id généré. La modification du seuil ou des champs de notification met à jour l’alerte. La suppression de la ressource supprime l’alerte distante.

Les alertes de dépenses sont des notifications, pas des limites bloquantes. Définissez une procédure de gestion d’incident ou une intervention administrative pour chaque seuil, et utilisez les limites de débit pour restreindre indépendamment le volume de requêtes.

Configurez une alerte de dépenses pour une organisation

Utilisez une alerte d’organisation lorsque le seuil doit couvrir les dépenses de l’ensemble de l’organisation :

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

Cette ressource utilise les mêmes unités de seuil, le même intervalle, la même devise et les mêmes champs de notification qu’une alerte de projet. Elle n’accepte pas de project_id, car elle mesure les dépenses de l’ensemble de l’organisation. Dans cet exemple, un e-mail est envoyé une fois que les dépenses mensuelles de l’organisation atteignent 1 000 USD.

Vous pouvez gérer conjointement les alertes de projet et d’organisation. Utilisez des seuils et des destinataires distincts lorsque différentes équipes sont chargées d’intervenir à chaque niveau.

Exécutez l’exemple complet

Les exemples ciblés utilisent des valeurs concrètes pour expliquer chaque ressource. La configuration complète remplace les valeurs propres à l’environnement par des variables et regroupe la découverte des limites de débit du projet, la gestion d’une limite de débit et une alerte de dépenses du projet.

Enregistrez la configuration suivante dans 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
}

Créez terraform.tfvars avec l’ID d’un projet existant, l’ID de l’enregistrement de limite de débit que vous avez identifié pour un modèle de texte, des limites approuvées, un seuil en cents et les destinataires de l’alerte :

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

Choisissez des valeurs de requêtes et de tokens qui ne dépassent pas les limites actuellement accordées au projet. La sortie available_rate_limits du plan affiche les enregistrements et les valeurs actuels pour vous permettre de les comparer.

Initialisez Terraform, puis examinez et appliquez un plan enregistré :

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

Le premier plan devrait contenir deux ressources à ajouter. Terraform présente la ressource de limite de débit comme un ajout à l’état, mais son application met à jour l’enregistrement de limite de débit OpenAI existant. L’autre ajout crée l’alerte de dépenses du projet. Après l’application du plan, terraform output affiche les limites de débit disponibles, le modèle associé à l’enregistrement géré et l’ID de l’alerte.

Exécutez à nouveau terraform plan pour confirmer que la configuration ne produit plus aucune modification. Si le plan révèle un écart, déterminez si un autre administrateur ou une automatisation a modifié la limite de débit ou l’alerte de dépenses avant d’appliquer une nouvelle mise à jour.