Suivez ce guide pour gérer une limite de débit existante dans un projet et créer une alerte de dépenses mensuelles. Les limites de débit encadrent l’utilisation des modèles par un projet sur une période donnée. Les alertes de dépenses avertissent votre équipe lorsque les dépenses mensuelles atteignent un seuil. Elles ne bloquent pas les requêtes API et n’imposent aucun plafond de dépenses.
À l’issue de la procédure principale, vous disposerez d’une configuration réutilisable qui :
- Lit les enregistrements de limite 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
Terminez la configuration du fournisseur Terraform, puis exportez une clé API d’administration dans la variable d’environnement OPENAI_ADMIN_KEY. Vous aurez également besoin des éléments suivants :
- L’identifiant d’un projet existant.
- Au moins une adresse e-mail à laquelle envoyer les alertes de dépenses.
Utilisez un projet de test pour évaluer cette procédure. 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 limite de débit disponibles pour chaque projet. Terraform met à jour ces enregistrements sans en créer de nouveaux.
Consultez les limites de débit du projet
Lisez les enregistrements de limite 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_idsélectionne le projet à examiner.rate_limitscontient un objet pour chaque limite de débit de modèle disponible. Chaque objet comprend les champsidetmodelainsi que les valeurs des limites applicables.- La sortie affiche les enregistrements après l’exécution de
terraform planou deterraform apply.
Sélectionnez l’enregistrement dont le champ model correspond au modèle pour lequel vous souhaitez gérer les limites. Copiez son id. La ressource suivante utilise cette valeur pour rate_limit_id. Fournissez explicitement cet identifiant en entrée 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
Configurez les limites de requêtes et de tokens dans 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 remplit un rôle précis :
project_ididentifie le projet dont vous modifiez la limite de débit.rate_limit_ididentifie un enregistrement de limite de débit existant pour un modèle. Cet identifiant est distinct de celui du modèle.max_requests_per_1_minutelimite le nombre de requêtes que le projet peut envoyer à ce modèle chaque minute.max_tokens_per_1_minutelimite le nombre de tokens que le projet peut traiter avec ce modèle chaque minute.
Renseignez uniquement les champs qui s’appliquent à l’enregistrement sélectionné. D’autres types d’enregistrements peuvent fixer des limites en nombre d’images par minute, en mégaoctets d’audio par minute, en nombre de requêtes par jour ou en nombre de tokens d’entrée Batch par jour. Une valeur configurée ne peut pas dépasser la limite autorisée pour l’organisation et le projet.
Le premier plan Terraform affiche cette ressource comme un ajout. Lors de l’application du plan, le fournisseur met à jour l’enregistrement de limite de débit existant, puis le sauvegarde dans l’état Terraform. Toute modification d’une limite configurée déclenche une nouvelle mise à jour.
Si vous retirez openai_project_rate_limit de la configuration, Terraform supprime l’enregistrement
de son état. Cette opération ne réinitialise ni ne supprime la limite de débit distante.
Si un autre workflow doit prendre en charge cet enregistrement, appliquez les valeurs souhaitées
à la limite distante avant de retirer la ressource.
Configurez une alerte de dépenses pour un projet
Créez une alerte pour les dépenses mensuelles du 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 précise le seuil de dépenses qui la déclenche et le canal de notification :
project_idlimite l’alerte aux dépenses d’un seul projet.threshold_amountfixe le seuil mensuel en cents. La valeur20000correspond à 200 USD.currencydoit avoir la valeurUSD.intervaldoit avoir la valeurmonth.notification_channel_typedoit avoir la valeuremail.notification_channel_recipientsdoit contenir au moins un destinataire.notification_channel_subject_prefixest un texte facultatif ajouté au début de l’objet des e-mails d’alerte.
Terraform crée l’alerte et enregistre l’identifiant alert_id généré. Si vous modifiez le seuil ou les champs de notification, Terraform met à jour l’alerte. Si vous retirez la ressource, Terraform supprime l’alerte distante.
Les alertes de dépenses vous avertissent lorsqu’un seuil est atteint, sans plafonner les dépenses. Pour chaque seuil, définissez les mesures à prendre en cas d’incident ou les actions administratives à mener. Utilisez séparément les limites de débit pour restreindre le volume de requêtes.
Configurez une alerte de dépenses pour une organisation
Utilisez une alerte au niveau de l’organisation si le seuil doit s’appliquer aux dépenses de toute 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 la même unité pour le seuil, la même périodicité, la même devise et les mêmes champs de notification qu’une alerte de projet. Elle ne prend pas de paramètre project_id, car elle mesure les dépenses de toute l’organisation. Dans cet exemple, un e-mail est envoyé lorsque les dépenses mensuelles de l’organisation atteignent 1 000 USD.
Vous pouvez gérer ensemble les alertes du projet et de l’organisation. Si des équipes différentes interviennent à chaque niveau, définissez des seuils et des destinataires distincts.
Exécutez l’exemple complet
Les exemples précédents utilisent des valeurs concrètes pour illustrer le rôle de chaque ressource. La configuration complète remplace les valeurs propres à votre environnement par des variables. Elle réunit la consultation des limites de débit du projet, la gestion d’une de ces limites et la configuration d’une alerte de dépenses pour le 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 le fichier terraform.tfvars. Indiquez-y l’identifiant d’un projet existant, l’identifiant de l’enregistrement de limite de débit que vous avez relevé pour un modèle de texte, les limites approuvées, le seuil de dépenses 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 nombres de requêtes et de tokens qui ne dépassent pas les limites actuellement autorisées pour le projet. Pour comparer ces valeurs, consultez la sortie available_rate_limits du plan : elle affiche les enregistrements actuels et leurs valeurs.
Initialisez Terraform, puis examinez et appliquez le plan enregistré :
terraform init
terraform fmt
terraform validate
terraform plan -out=tfplan
terraform show tfplan
terraform apply tfplan
Le premier plan devrait indiquer deux ressources à ajouter. Terraform présente la ressource de limite de débit comme un ajout à son état. L’application du plan met à jour l’enregistrement de limite de débit existant chez OpenAI. Le second ajout crée l’alerte de dépenses du projet. Une fois le plan appliqué, terraform output affiche les limites de débit disponibles, le modèle associé à l’enregistrement géré et l’identifiant de l’alerte.
Exécutez de nouveau terraform plan pour vérifier que la configuration n’entraîne aucune modification supplémentaire. Si le plan signale un écart, vérifiez 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.