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_idsélectionne le projet à examiner.rate_limitscontient un objet pour chaque limite de débit de modèle disponible, avec ses champsidetmodelet les valeurs des limites applicables.- La sortie affiche les enregistrements après l’exécution de
terraform planou deterraform 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_ididentifie le projet dont la limite de débit sera modifiée.rate_limit_ididentifie 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_minutelimite le nombre de requêtes que le projet peut envoyer pour ce modèle chaque minute.max_tokens_per_1_minutelimite 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_idrestreint l’alerte aux dépenses d’un seul projet.threshold_amountest le seuil mensuel en cents.20000représente 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é à 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.