Étiquettes de métadonnées personnalisées

Vous pouvez ajouter des métadonnées personnalisées aux appels d'API generateContent et streamGenerateContent à l'aide d'étiquettes. Cette page explique ce que sont les étiquettes et vous montre comment les utiliser pour répartir les frais facturés.

Qu'est-ce qu'un libellé ?

Une étiquette est une paire clé-valeur que vous pouvez attribuer aux appels d'API generateContent et streamGenerateContent. Elle vous aide à organiser ces appels et à gérer vos coûts à grande échelle avec la précision dont vous avez besoin. Vous pouvez associer une étiquette à chaque appel, puis filtrer les appels en fonction de leur étiquette. Les informations sur les étiquettes sont transmises au système de facturation. Ainsi, vous pouvez trier vos frais facturés par étiquette. Grâce aux rapports de facturation intégrés, vous pouvez filtrer et regrouper les coûts par étiquette. Vous pouvez également utiliser des étiquettes pour interroger les exportations de données de facturation.

Exigences relatives aux étiquettes

Les étiquettes appliquées à un appel d'API doivent répondre aux exigences suivantes :

  • Chaque appel d'API peut comporter jusqu'à 64 étiquettes.
  • Chaque libellé doit correspondre à une paire clé/valeur.
  • Les clés doivent comporter un (1) caractère au minimum et 63 au maximum, et ne peuvent pas être vides. Les valeurs peuvent être vides et comporter 63 caractères au maximum.
  • Les clés et les valeurs ne peuvent contenir que des lettres minuscules, des chiffres, des traits de soulignement et des tirets. Tous les caractères doivent être au format d'encodage UTF-8. Les caractères internationaux sont autorisés. Les clés doivent commencer par une lettre minuscule ou un caractère international.
  • La partie clé d'une étiquette doit être unique au sein d'un seul appel d'API. Cependant, vous pouvez utiliser la même clé avec plusieurs appels.

Ces limites s'appliquent à la clé et à la valeur de chaque étiquette, ainsi qu'à l'appel d'API individuel associé à des étiquettes. Vous pouvez appliquer autant d'étiquettes que vous le souhaitez à tous les appels d'API d'un projet.

Cas d'utilisation courants des étiquettes

Voici quelques cas d'utilisation courants des étiquettes :

  • Étiquettes d'équipe ou de centre de coûts : ajoutez des étiquettes basées sur l'équipe ou le centre de coûts pour distinguer les appels d'API appartenant à différentes équipes (par exemple, team:research et team:analytics). Vous pouvez utiliser ce type d'étiquette pour la comptabilité analytique ou la budgétisation.

  • Libellés de composant : par exemple, component:redis, component:frontend, component:ingest et component:dashboard.

  • Libellés d'environnement ou d'étape : par exemple, environment:production et environment:test.

  • Libellés de propriété : permettent d'identifier les équipes responsables des opérations (par exemple, team:shopping-cart).

Nous vous déconseillons de créer beaucoup d'étiquettes uniques (par exemple, pour les codes temporels ou les valeurs individuelles de chaque appel d'API). Le problème avec cette approche est que lorsque les valeurs changent fréquemment ou que des clés encombrent le catalogue, il est difficile de filtrer efficacement les appels d'API et de créer des rapports associés.

Ajouter une étiquette à un appel d'API

Pour ajouter une étiquette à un appel d'API generateContent ou streamGenerateContent, procédez comme suit :

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • GENERATE_RESPONSE_METHOD : type de réponse que le modèle doit générer. Choisissez une méthode qui génère le mode de renvoi de la réponse du modèle :
    • streamGenerateContent : la réponse est affichée progressivement à mesure qu'elle est générée afin de réduire la perception de la latence auprès d'un public humain.
    • generateContent : la réponse est renvoyée une fois qu'elle a été entièrement générée.
  • LOCATION : région dans laquelle traiter la requête. Les options disponibles sont les suivantes :

    Cliquer pour développer une liste partielle des régions disponibles

    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID : l'ID de votre projet.
  • MODEL_ID : ID du modèle multimodal que vous souhaitez utiliser. Voici quelques options possibles :
    • gemini-1.0-pro-002
    • gemini-1.0-pro-vision-001
    • gemini-1.5-pro-002
    • gemini-1.5-flash
  • ROLE : rôle dans une conversation associée au contenu. La spécification d'un rôle est requise, même dans les cas d'utilisation à un seul tour. Les valeurs acceptées incluent les suivantes :
    • USER : spécifie le contenu envoyé par vous.
    • MODEL : spécifie la réponse du modèle.
  • PROMPT_TEXT
    Instructions textuelles à inclure dans la requête. JSON
  • LABEL_KEY : métadonnées de l'étiquette que vous souhaitez associer à cet appel d'API.
  • LABEL_VALUE : valeur de l'étiquette.

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

cat > request.json << 'EOF'
{
  "contents": {
    "role": "ROLE",
    "parts": { "text": "PROMPT_TEXT" }
  },
  "labels": {
    "LABEL_KEY": "LABEL_VALUE"
  },
}
EOF

Exécutez ensuite la commande suivante pour envoyer votre requête REST :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

@'
{
  "contents": {
    "role": "ROLE",
    "parts": { "text": "PROMPT_TEXT" }
  },
  "labels": {
    "LABEL_KEY": "LABEL_VALUE"
  },
}
'@  | Out-File -FilePath request.json -Encoding utf8

Exécutez ensuite la commande suivante pour envoyer votre requête REST :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATE_RESPONSE_METHOD" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON semblable à la suivante.

Les produits Google Cloud transmettent les données d'utilisation et de coût aux processus Cloud Billing à des intervalles variables. Par conséquent, vous pouvez constater un délai entre votre utilisation des services Google Cloud, et la disponibilité des données d'utilisation et de coût pour l'affichage dans Cloud Billing. Généralement, vos coûts sont disponibles dans la journée, mais ils peuvent parfois prendre plus de 24 heures.