Demander des prédictions avec des modèles Claude

Vous pouvez utiliser le SDK Anthropic ou des commandes curl pour envoyer des requêtes au point de terminaison Vertex AI en employant les noms de modèles suivants :

  • Pour Claude Opus 4, utilisez claude-opus-4@20250514.
  • Pour Claude Sonnet 4, utilisez claude-sonnet-4@20250514.
  • Pour Claude 3.7 Sonnet, utilisez claude-3-7-sonnet@20250219.
  • Pour Claude 3.5 Sonnet v2, utilisez claude-3-5-sonnet-v2@20241022.
  • Pour Claude 3.5 Haiku, utilisez claude-3-5-haiku@20241022.
  • Pour Claude 3.5 Sonnet, utilisez claude-3-5-sonnet@20240620.
  • Pour Claude 3 Opus, utilisez claude-3-opus@20240229.
  • Pour Claude 3 Haiku, utilisez claude-3-haiku@20240307.

Les versions de modèle Anthropic Claude doivent être utilisées avec un suffixe commençant par un symbole @ (claude-3-7-sonnet@20250219 ou claude-3-5-haiku@20241022, par exemple) pour garantir un comportement cohérent.

Avant de commencer

Pour utiliser des modèles Anthropic Claude avec Vertex AI, procédez comme suit. Vous devez activer l'API Vertex AI (aiplatform.googleapis.com) pour pouvoir utiliser Vertex AI. Si vous disposez déjà d'un projet pour lequel l'API Vertex AI est activée, vous pouvez l'utiliser au lieu d'en créer un.

Assurez-vous de disposer des autorisations requises pour activer et utiliser des modèles partenaires. Pour en savoir plus, consultez Accorder les autorisations requises.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Enable the API

  8. Accédez à l'une des fiches de modèle Model Garden suivantes, puis cliquez sur Activer :
  9. Anthropic vous recommande d'activer la journalisation de vos requêtes et de vos activités de saisie pendant 30 jours pour enregistrer toute utilisation abusive du modèle. Pour activer la journalisation, consultez Journaliser les requêtes et les réponses.

    Utiliser le SDK Anthropic

    Vous pouvez envoyer des requêtes API aux modèles Anthropic Claude à l'aide du SDK Anthropic Claude. Pour en savoir plus, consultez les ressources suivantes :

    Effectuer un appel en flux continu à un modèle Claude à l'aide du SDK Vertex d'Anthropic

    L'exemple de code suivant utilise le SDK Vertex d'Anthropic pour effectuer un appel en flux continu à un modèle Claude.

    Python

    Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

    L'exemple suivant utilise des points de terminaison régionaux. Pour utiliser le point de terminaison global, consultez Spécifier le point de terminaison global.
    # TODO(developer): Vertex AI SDK - uncomment below & run
    # pip3 install --upgrade --user google-cloud-aiplatform
    # gcloud auth application-default login
    # pip3 install -U 'anthropic[vertex]'
    
    # TODO(developer): Update and un-comment below line
    # PROJECT_ID = "your-project-id"
    
    from anthropic import AnthropicVertex
    
    client = AnthropicVertex(project_id=PROJECT_ID, region="us-east5")
    result = []
    
    with client.messages.stream(
        model="claude-3-5-sonnet-v2@20241022",
        max_tokens=1024,
        messages=[
            {
                "role": "user",
                "content": "Send me a recipe for banana bread.",
            }
        ],
    ) as stream:
        for text in stream.text_stream:
            print(text, end="", flush=True)
            result.append(text)
    
    # Example response:
    # Here's a simple recipe for delicious banana bread:
    # Ingredients:
    # - 2-3 ripe bananas, mashed
    # - 1/3 cup melted butter
    # ...
    # ...
    # 8. Bake for 50-60 minutes, or until a toothpick inserted into the center comes out clean.
    # 9. Let cool in the pan for a few minutes, then remove and cool completely on a wire rack.
    

    Effectuer un appel unaire à un modèle Claude à l'aide du SDK Vertex d'Anthropic

    L'exemple de code suivant utilise le SDK Vertex d'Anthropic pour effectuer un appel unaire à un modèle Claude.

    Python

    Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

    L'exemple suivant utilise des points de terminaison régionaux. Pour utiliser le point de terminaison global, consultez Spécifier le point de terminaison global.
    # TODO(developer): Vertex AI SDK - uncomment below & run
    # pip3 install --upgrade --user google-cloud-aiplatform
    # gcloud auth application-default login
    # pip3 install -U 'anthropic[vertex]'
    
    # TODO(developer): Update and un-comment below line
    # PROJECT_ID = "your-project-id"
    
    from anthropic import AnthropicVertex
    
    client = AnthropicVertex(project_id=PROJECT_ID, region="us-east5")
    message = client.messages.create(
        model="claude-3-5-sonnet-v2@20241022",
        max_tokens=1024,
        messages=[
            {
                "role": "user",
                "content": "Send me a recipe for banana bread.",
            }
        ],
    )
    print(message.model_dump_json(indent=2))
    # Example response:
    # {
    #   "id": "msg_vrtx_0162rhgehxa9rvJM5BSVLZ9j",
    #   "content": [
    #     {
    #       "text": "Here's a simple recipe for delicious banana bread:\n\nIngredients:\n- 2-3 ripe bananas...
    #   ...
    

    Utiliser une commande curl

    Vous pouvez utiliser une commande curl pour envoyer une requête au point de terminaison Vertex AI. La commande curl spécifie le modèle Claude compatible que vous souhaitez utiliser.

    Les versions de modèle Anthropic Claude doivent être utilisées avec un suffixe commençant par un symbole @ (claude-3-7-sonnet@20250219 ou claude-3-5-haiku@20241022, par exemple) pour garantir un comportement cohérent.

    La rubrique suivante explique comment créer une commande curl et inclut un exemple de commande curl.

    REST

    Pour tester une requête textuelle à l'aide de l'API Vertex AI, envoyez une requête POST au point de terminaison du modèle de l'éditeur.

    L'exemple suivant utilise des points de terminaison régionaux. Pour utiliser le point de terminaison global, consultez Spécifier le point de terminaison global.

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

    • LOCATION : région compatible avec les modèles Anthropic Claude. Pour utiliser le point de terminaison mondial, consultez Spécifier le point de terminaison mondial.
    • MODEL : nom du modèle que vous souhaitez utiliser.
    • ROLE : rôle associé à un message. Vous pouvez spécifier user ou assistant. Le premier message doit utiliser le rôle user. Les modèles Claude fonctionnent avec des tours user et assistant alternés. Si le message final utilise le rôle assistant, le contenu de la réponse continue immédiatement à partir du contenu de ce message. Cela vous permet de limiter une partie de la réponse du modèle.
    • STREAM : valeur booléenne qui spécifie si la réponse est diffusée ou non. Diffusez votre réponse en flux continu pour réduire la perception de la latence que peuvent avoir les utilisateurs finaux. Définissez la valeur sur true pour diffuser la réponse et sur false pour la renvoyer en une fois.
    • CONTENT : contenu du message user ou assistant (du texte, par exemple).
    • MAX_TOKENS : le nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à 3,5 caractères. 100 jetons correspondent environ à 60-80 mots.

      Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.

    • TOP_P (facultatif) : top-P modifie la façon dont le modèle sélectionne les jetons pour la sortie. Les jetons sont sélectionnés de la probabilité la plus élevée à la probabilité la plus faible jusqu'à ce que la somme de leurs probabilités soit égale à la valeur top-P. Par exemple, si les jetons A, B et C ont une probabilité de 0,3, 0,2 et 0,1 et que la valeur de top-P est 0.5, le modèle sélectionne A ou B comme jeton suivant à l'aide de la température et exclut le jeton C comme candidat.

      Spécifiez une valeur inférieure pour obtenir des réponses moins aléatoires et une valeur supérieure pour des réponses plus aléatoires.

    • TOP_K (facultatif) : top-K modifie la façon dont le modèle sélectionne les jetons pour la sortie. Une valeur top-K de 1 signifie que le prochain jeton sélectionné est le plus probable parmi tous les jetons du vocabulaire du modèle (une stratégie également appelée décodage glouton), tandis qu'une valeur top-K de 3 signifie que le jeton suivant est sélectionné parmi les trois jetons les plus probables à l'aide de la température.

      Pour chaque étape de sélection du jeton, les jetons top-K avec les probabilités les plus élevées sont échantillonnés. Les jetons sont ensuite filtrés en fonction du top-P avec le jeton final sélectionné à l'aide de l'échantillonnage de température.

      Spécifiez une valeur inférieure pour les réponses moins aléatoires et une valeur plus élevée pour les réponses plus aléatoires.

    • TYPE : pour Claude 3.7 Sonnet et les modèles Claude ultérieurs, spécifiez enabled pour activer le mode de réflexion étendue.
    • BUDGET_TOKENS : si vous activez la réflexion étendue, vous devez spécifier le nombre de jetons que le modèle peut utiliser pour son raisonnement interne dans la sortie. Des budgets plus importants permettent une analyse plus approfondie des problèmes complexes et améliorent la qualité des réponses. Vous devez spécifier une valeur supérieure ou égale à 1024, mais inférieure à MAX_TOKENS.

    Méthode HTTP et URL :

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:streamRawPredict

    Corps JSON de la requête :

    {
      "anthropic_version": "vertex-2023-10-16",
      "messages": [
       {
        "role": "ROLE",
        "content": "CONTENT"
       }],
      "max_tokens": MAX_TOKENS,
      "stream": STREAM,
      "thinking": {
        "type": "TYPE",
        "budget_tokens": BUDGET_TOKENS
      }
    }
    

    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, puis exécutez la commande suivante :

    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/anthropic/models/MODEL:streamRawPredict"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $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/anthropic/models/MODEL:streamRawPredict" | Select-Object -Expand Content

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

    Exemple de commande curl

    MODEL_ID="MODEL"
    LOCATION="us-central1"
    PROJECT_ID="PROJECT_ID"
    
    curl \
    -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/anthropic/models/${MODEL_ID}:streamRawPredict -d \
    '{
      "anthropic_version": "vertex-2023-10-16",
      "messages": [{
        "role": "user",
        "content": "Hello!"
      }],
      "max_tokens": 50,
      "stream": true}'
    

    Utilisation des outils (appels de fonction)

    Divers appels de fonctions et outils permettent d'améliorer encore les capacités des modèles Anthropic Claude. Pour en savoir plus, consultez la présentation de l'utilisation des outils dans la documentation Anthropic.

    Les exemples suivants montrent comment utiliser des outils à l'aide d'un SDK ou d'une commande curl. L'objectif ici est de rechercher les restaurants ouverts à proximité dans la ville de San Francisco.

    Python

    Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API Python.

    L'exemple suivant utilise des points de terminaison régionaux. Pour utiliser le point de terminaison global, consultez Spécifier le point de terminaison global.
    # TODO(developer): Vertex AI SDK - uncomment below & run
    # pip3 install --upgrade --user google-cloud-aiplatform
    # gcloud auth application-default login
    # pip3 install -U 'anthropic[vertex]'
    from anthropic import AnthropicVertex
    
    # TODO(developer): Update and un-comment below line
    # PROJECT_ID = "your-project-id"
    
    client = AnthropicVertex(project_id=PROJECT_ID, region="us-east5")
    message = client.messages.create(
        model="claude-3-5-sonnet-v2@20241022",
        max_tokens=1024,
        tools=[
            {
                "name": "text_search_places_api",
                "description": "returns information about a set of places based on a string",
                "input_schema": {
                    "type": "object",
                    "properties": {
                        "textQuery": {
                            "type": "string",
                            "description": "The text string on which to search",
                        },
                        "priceLevels": {
                            "type": "array",
                            "description": "Price levels to query places, value can be one of [PRICE_LEVEL_INEXPENSIVE, PRICE_LEVEL_MODERATE, PRICE_LEVEL_EXPENSIVE, PRICE_LEVEL_VERY_EXPENSIVE]",
                        },
                        "openNow": {
                            "type": "boolean",
                            "description": "whether those places are open for business.",
                        },
                    },
                    "required": ["textQuery"],
                },
            }
        ],
        messages=[
            {
                "role": "user",
                "content": "What are some affordable and good Italian restaurants open now in San Francisco??",
            }
        ],
    )
    print(message.model_dump_json(indent=2))
    # Example response:
    # {
    #   "id": "msg_vrtx_018pk1ykbbxAYhyWUdP1bJoQ",
    #   "content": [
    #     {
    #       "text": "To answer your question about affordable and good Italian restaurants
    #       that are currently open in San Francisco....
    # ...
    

    REST

    L'exemple suivant utilise des points de terminaison régionaux. Pour utiliser le point de terminaison global, consultez Spécifier le point de terminaison global.

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

    • LOCATION : région compatible avec les modèles Anthropic Claude. Pour utiliser le point de terminaison mondial, consultez Spécifier le point de terminaison mondial.
    • MODEL : nom du modèle à utiliser.
    • ROLE : rôle associé à un message. Vous pouvez spécifier user ou assistant. Le premier message doit utiliser le rôle user. Les modèles Claude fonctionnent avec des tours user et assistant alternés. Si le message final utilise le rôle assistant, le contenu de la réponse continue immédiatement à partir du contenu de ce message. Cela vous permet de limiter une partie de la réponse du modèle.
    • STREAM : valeur booléenne qui spécifie si la réponse est diffusée ou non. Diffusez votre réponse en flux continu pour réduire la perception de la latence que peuvent avoir les utilisateurs finaux. Définissez la valeur sur true pour diffuser la réponse et sur false pour la renvoyer en une fois.
    • CONTENT : contenu du message user ou assistant (du texte, par exemple).
    • MAX_TOKENS : nombre maximal de jetons pouvant être générés dans la réponse. Un jeton correspond environ à 3,5 caractères. 100 jetons correspondent environ à 60-80 mots.

      Spécifiez une valeur inférieure pour obtenir des réponses plus courtes et une valeur supérieure pour des réponses potentiellement plus longues.

    Méthode HTTP et URL :

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/anthropic/models/MODEL:rawPredict

    Corps JSON de la requête :

    
    {
      "anthropic_version": "vertex-2023-10-16",
      "max_tokens": MAX_TOKENS,
      "stream": STREAM,
      "tools": [
        {
          "name": "text_search_places_api",
          "description": "Returns information about a set of places based on a string",
          "input_schema": {
            "type": "object",
            "properties": {
              "textQuery": {
                "type": "string",
                "description": "The text string on which to search"
              },
              "priceLevels": {
                "type": "array",
                "description": "Price levels to query places, value can be one of [PRICE_LEVEL_INEXPENSIVE, PRICE_LEVEL_MODERATE, PRICE_LEVEL_EXPENSIVE, PRICE_LEVEL_VERY_EXPENSIVE]",
              },
              "openNow": {
                "type": "boolean",
                "description": "Describes whether a place is open for business at
                the time of the query."
              },
            },
            "required": ["textQuery"]
          }
        }
      ],
      "messages": [
        {
          "role": "user",
          "content": "What are some affordable and good Italian restaurants that are open now in San Francisco??"
        }
      ]
    }
    

    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, puis exécutez la commande suivante :

    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/anthropic/models/MODEL:rawPredict"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

    $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/anthropic/models/MODEL:rawPredict" | Select-Object -Expand Content

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

    Utiliser Vertex AI Studio

    Pour certains modèles Anthropic Claude, vous pouvez utiliser Vertex AI Studio pour créer rapidement des prototypes et tester des modèles d'IA générative dans la console Google Cloud . Par exemple, vous pouvez utiliser Vertex AI Studio pour comparer les réponses du modèle Claude à celles d'autres modèles acceptés, tels que Google Gemini.

    Pour en savoir plus, consultez Démarrage rapide : envoyer des requêtes textuelles à Gemini à l'aide de Vertex AI Studio.

    Quotas et disponibilité par région d'Anthropic Claude

    Les modèles Claude sont soumis à des quotas régionaux et, pour les modèles compatibles avec un point de terminaison mondial, à un quota mondial. Le quota est spécifié en requêtes par minute (RPM) et en jetons par minute (TPM). Le nombre de jetons par minute inclut à la fois les jetons d'entrée et de sortie.

    Dans l'optique de maintenir les performances globales du service et une utilisation acceptable, les quotas maximaux peuvent varier en fonction du compte et, dans certains cas, l'accès peut être limité. Consultez les quotas de votre projet sur la page Quotas et limites du système de la console Google Cloud . Vous devez également disposer des quotas suivants :

    • online_prediction_requests_per_base_model et global_online_prediction_requests_per_base_model définissent votre quota de requêtes par minute.

    • Pour TPM, trois valeurs de quota s'appliquent à des modèles spécifiques :

      • Pour les modèles qui comptabilisent les jetons d'entrée et de sortie ensemble, online_prediction_tokens_per_minute_per_base_model et global_online_prediction_tokens_per_minute_per_base_model définissent le quota de TPM du modèle.
      • Pour les modèles qui comptent les jetons d'entrée et de sortie séparément, online_prediction_input_tokens_per_minute_per_base_model et global_online_prediction_input_tokens_per_minute_per_base_model définissent le quota de TPM d'entrée, tandis que online_prediction_output_tokens_per_minute_per_base_model et global_online_prediction_output_tokens_per_minute_per_base_model définissent le quota de TPM de sortie.

      Pour savoir quels modèles comptabilisent les jetons d'entrée et de sortie séparément, consultez Quotas par modèle et par région.

    Jetons d'entrée

    La liste suivante définit les jetons d'entrée qui peuvent être comptabilisés dans votre quota de TPM d'entrée. Le nombre de jetons d'entrée comptabilisés par chaque modèle peut varier. Pour savoir quels jetons d'entrée sont comptabilisés par un modèle, consultez Quotas par modèle et par région.

    • Les jetons d'entrée incluent tous les jetons d'entrée, y compris les jetons de lecture et d'écriture du cache.
    • La section Jetons d'entrée non mis en cache n'inclut que les jetons d'entrée qui n'ont pas été lus à partir d'un cache (jetons de lecture du cache).
    • Jetons d'écriture du cache : inclut les jetons utilisés pour créer ou mettre à jour un cache.

    Quotas par modèle et par région

    Le tableau suivant présente les quotas par défaut et la longueur de contexte disponible pour chaque modèle dans chaque région.

    Modèle Région Quotas Longueur du contexte
    Claude Opus 4
    us-east5 200 000
    global endpoint 200 000
    Claude Sonnet 4
    us-east5 200 000
    europe-west1 200 000
    asia-east1 200 000
    global endpoint 200 000
    Claude 3.7 Sonnet
    us-east5 200 000
    europe-west1 200 000
    global endpoint 200 000
    Claude 3.5 Sonnet v2
    us-east5
    • QPM : 90
    • TPM : 540 000 (entrée et sortie)
    200 000
    europe-west1
    • RPM : 55
    • TPM : 330 000 (entrée et sortie)
    200 000
    global endpoint
    • RPM : 25
    • TPM : 140 000 (entrée et sortie)
    200 000
    Claude 3.5 Haiku
    us-east5
    • QPM : 80
    • TPM : 350 000 (entrée et sortie)
    200 000
    europe-west1
    • QPM : 90
    • TPM : 400 000 (entrée et sortie)
    200 000
    Claude 3.5 Sonnet
    us-east5
    • QPM : 80
    • TPM : 350 000 (entrée et sortie)
    200 000
    europe-west1
    • RPM : 130
    • TPM : 600 000 (entrée et sortie)
    200 000
    asia-southeast1
    • QPM : 35
    • TPM : 150 000 (entrée et sortie)
    200 000
    Claude 3 Opus
    us-east5
    • QPM : 20
    • TPM : 105 000 (entrée et sortie)
    200 000
    Claude 3 Haiku
    us-east5
    • QPM : 245
    • TPM : 600 000 (entrée et sortie)
    200 000
    europe-west1
    • QPM : 75
    • TPM : 181 000 (entrée et sortie)
    200 000
    asia-southeast1
    • QPM : 70
    • TPM : 174 000 (entrée et sortie)
    200 000

    Si vous souhaitez augmenter vos quotas pour l'IA générative sur Vertex AI, vous pouvez en faire la demande via la console Google Cloud . Pour en savoir plus sur les quotas, consultez Utiliser des quotas.