Solicita predicciones con modelos de Claude

Puedes usar el SDK de Anthropic o comandos curl para enviar solicitudes al extremo de Vertex AI con los siguientes nombres de modelos:

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

Las versiones del modelo Anthropic Claude se deben usar con un sufijo que comience con un símbolo @ (como claude-3-7-sonnet@20250219 o claude-3-5-haiku@20241022) para garantizar un comportamiento coherente.

Antes de comenzar

Para usar los modelos de Anthropic Claude con Vertex AI, debes realizar los siguientes pasos. La API de Vertex AI (aiplatform.googleapis.com) debe estar habilitada para usar Vertex AI. Si ya tienes un proyecto existente con la API de Vertex AI habilitada, puedes usar ese proyecto en lugar de crear uno nuevo.

Asegúrate de tener los permisos necesarios para habilitar y usar modelos de socios. Para obtener más información, consulta Otorga los permisos necesarios.

  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. Make sure 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. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Enable the API

  8. Ve a una de las siguientes tarjetas de modelo de Model Garden y, luego, haz clic en Habilitar:
  9. Anthropic recomienda que habilites el registro de 30 días de tu actividad de instrucciones y finalizaciones para registrar cualquier uso inadecuado del modelo. Para habilitar el registro, consulta [Registro de solicitudes y respuestas][logging].
  10. Usa el SDK de Anthropic

    Puedes realizar solicitudes a la API para los modelos Anthropic Claude con el SDK de Anthropic Claude. Para obtener más información, consulta lo siguiente:

    Realiza una llamada de transmisión a un modelo Claude con el SDK de Vertex de Anthropic.

    En la siguiente muestra de código, se usa el SDK de Vertex de Anthropic para realizar una llamada de transmisión a un modelo de Claude.

    Python

    Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API de Python.

    En el siguiente ejemplo, se usan extremos regionales. Para usar el extremo global, consulta Cómo especificar el extremo 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.
    

    Realiza una llamada unaria a un modelo de Claude con el SDK de Vertex de Anthropic.

    En la siguiente muestra de código, se usa el SDK de Vertex de Anthropic para realizar una llamada unaria a un modelo de Claude.

    Python

    Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API de Python.

    En el siguiente ejemplo, se usan extremos regionales. Para usar el extremo global, consulta Cómo especificar el extremo 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...
    #   ...
    

    Usa un comando curl

    Puedes usar un comando curl para realizar una solicitud al extremo de Vertex AI. El comando curl especifica qué modelo de Claude compatible deseas usar.

    Las versiones del modelo Anthropic Claude se deben usar con un sufijo que comience con un símbolo @ (como claude-3-7-sonnet@20250219 o claude-3-5-haiku@20241022) para garantizar un comportamiento coherente.

    En el siguiente tema, se muestra cómo crear un comando curl y se incluye un comando curl de muestra.

    REST

    Para probar un mensaje de texto con la API de Vertex AI, envía una solicitud POST al extremo del modelo de publicador.

    En el siguiente ejemplo, se usan extremos regionales. Para usar el extremo global, consulta Cómo especificar el extremo global.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • LOCATION: Es una región que admite modelos de Claude Anthropic. Para usar el extremo global, consulta Cómo especificar el extremo global.
    • MODEL: El nombre del modelo que deseas usar.
    • ROLE: El rol asociado a un mensaje. Puedes especificar un user o un assistant. El primer mensaje debe usar el rol user. Los modelos de Claude operan con turnos alternativos de user y assistant. Si el mensaje final usa el rol assistant, el contenido de la respuesta continúa inmediatamente desde el contenido de ese mensaje. Puedes usar esto para restringir parte de la respuesta del modelo.
    • STREAM: Un valor booleano que especifica si la respuesta se transmite o no. Transmite tu respuesta para reducir la percepción de latencia del uso final. Configúralo como true para transmitir la respuesta y false para mostrar la respuesta de una sola vez.
    • CONTENT: el contenido, como texto, del mensaje user o assistant.
    • MAX_TOKENS: Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene aproximadamente 3.5 caracteres. 100 tokens corresponden a casi 60 u 80 palabras.

      Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.

    • TOP_P (opcional): Top-P cambia la manera en la que el modelo selecciona tokens para la salida. Los tokens se seleccionan del más probable al menos probable hasta que la suma de sus probabilidades sea igual al valor de Top-P. Por ejemplo, si los tokens A, B y C tienen una probabilidad de 0.3, 0.2 y 0.1, y el valor P superior es 0.5, el modelo elegirá A o B como el siguiente token mediante la temperatura y excluirá a C como candidato.

      Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.

    • TOP_K (opcional): Top-K cambia la manera en la que el modelo selecciona los tokens para el resultado. K superior a 1 significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación voraz), mientras que el K superior a 3 significa que el siguiente token se selecciona de los tres tokens más probables mediante la temperatura.

      Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.

      Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.

    • TYPE: Para Claude 3.7 Sonnet y modelos de Claude posteriores, especifica enable para habilitar el modo de pensamiento extendido.
    • BUDGET_TOKENS: Si habilitas el pensamiento extendido, debes especificar la cantidad de tokens que el modelo puede usar para su razonamiento interno como parte del resultado. Los presupuestos más grandes pueden permitir un análisis más exhaustivo de los problemas complejos y mejorar la calidad de las respuestas. Debes especificar un valor mayor o igual que 1024, pero menor que MAX_TOKENS.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    Ejemplo del comando 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}'
    

    Uso de herramientas (llamadas a función)

    Los modelos de Claude de Anthropic admiten herramientas y llamadas a función para mejorar las capacidades de un modelo. Para obtener más información, consulta la descripción general del uso de herramientas en la documentación de Anthropic.

    En los siguientes ejemplos, se muestra cómo usar herramientas con un SDK o un comando curl. En los ejemplos, se buscan restaurantes cercanos en San Francisco que estén abiertos.

    Python

    Si deseas obtener información para instalar o actualizar el SDK de Vertex AI para Python, consulta Instala el SDK de Vertex AI para Python. Para obtener más información, consulta la documentación de referencia de la API de Python.

    En el siguiente ejemplo, se usan extremos regionales. Para usar el extremo global, consulta Cómo especificar el extremo 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

    En el siguiente ejemplo, se usan extremos regionales. Para usar el extremo global, consulta Cómo especificar el extremo global.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • LOCATION: Es una región que admite modelos de Claude Anthropic. Para usar el extremo global, consulta Cómo especificar el extremo global.
    • MODEL: Es el nombre del modelo que se usará.
    • ROLE: El rol asociado a un mensaje. Puedes especificar un user o un assistant. El primer mensaje debe usar el rol user. Los modelos de Claude operan con turnos alternativos de user y assistant. Si el mensaje final usa el rol assistant, el contenido de la respuesta continúa inmediatamente desde el contenido de ese mensaje. Puedes usar esto para restringir parte de la respuesta del modelo.
    • STREAM: Un valor booleano que especifica si la respuesta se transmite o no. Transmite tu respuesta para reducir la percepción de latencia del uso final. Configúralo como true para transmitir la respuesta y false para mostrar la respuesta de una sola vez.
    • CONTENT: el contenido, como texto, del mensaje user o assistant.
    • MAX_TOKENS: Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene aproximadamente 3.5 caracteres. 100 tokens corresponden a casi 60 u 80 palabras.

      Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

    
    {
      "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??"
        }
      ]
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    Usa Vertex AI Studio

    En el caso de algunos modelos de Anthropic Claude, puedes usar Vertex AI Studio para crear prototipos y probar modelos de IA generativa rápidamente en la consola de Google Cloud . Por ejemplo, puedes usar Vertex AI Studio para comparar las respuestas del modelo de Claude con otros modelos compatibles, como Google Gemini.

    Para obtener más información, consulta Guía de inicio rápido: Envía instrucciones de texto a Gemini con Vertex AI Studio.

    Cuotas de Anthropic Claude y disponibilidad de regiones

    Los modelos Claude tienen cuotas regionales y, en el caso de los modelos que admiten un extremo global, una cuota global. La cuota se especifica en consultas por minuto (QPM) y tokens por minuto (TPM). TPM incluye tokens de entrada y salida.

    Para mantener el rendimiento general del servicio y el uso aceptable, es posible que las cuotas máximas varíen según la cuenta y, en algunos casos, se puede restringir el acceso. Consulta las cuotas de tu proyecto en la página Cuotas y límites del sistema de la consola de Google Cloud . También debes tener disponibles las siguientes cuotas:

    • online_prediction_requests_per_base_model y global_online_prediction_requests_per_base_model definen tu cuota de QPM.

    • En el caso del TPM, hay tres valores de cuota que se aplican a modelos específicos:

      • En el caso de los modelos que cuentan los tokens de entrada y salida juntos, online_prediction_tokens_per_minute_per_base_model y global_online_prediction_tokens_per_minute_per_base_model definen la cuota de TPM del modelo.
      • En el caso de los modelos que cuentan los tokens de entrada y salida por separado, online_prediction_input_tokens_per_minute_per_base_model y global_online_prediction_input_tokens_per_minute_per_base_model definen la cuota de TPM de entrada, y online_prediction_output_tokens_per_minute_per_base_model y global_online_prediction_output_tokens_per_minute_per_base_model definen la cuota de TPM de salida.

      Para ver qué modelos cuentan los tokens de entrada y salida por separado, consulta Cuotas por modelo y región.

    Tokens de entrada

    En la siguiente lista, se definen los tokens de entrada que pueden contabilizarse para tu cuota de TPM de entrada. Los tokens de entrada que cuenta cada modelo pueden variar. Para ver qué tokens de entrada cuenta un modelo, consulta Cuotas por modelo y región.

    • Los tokens de entrada incluyen todos los tokens de entrada, incluidos los tokens de lectura y escritura de caché.
    • Los tokens de entrada no almacenados en caché incluyen solo los tokens de entrada que no se leyeron desde una caché (tokens de lectura de caché).
    • Los tokens de escritura de caché incluyen los tokens que se usaron para crear o actualizar una caché.

    Cuotas por modelo y región

    En la siguiente tabla, se muestran las cuotas predeterminadas y la longitud del contexto admitida para cada modelo en cada región.

    Modelo Región Cuotas Longitud del contexto
    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
    • QPM: 55
    • TPM: 500,000 (entrada y salida sin caché)
    200,000
    europe-west1
    • QPM: 40
    • TPM: 300,000 (entrada y salida sin caché)
    200,000
    global endpoint
    • QPM: 35
    • TPM: 300,000 (entrada y salida sin caché)
    200,000
    Claude 3.5 Sonnet v2
    us-east5
    • QPM: 90
    • TPM: 540,000 (entrada y salida)
    200,000
    europe-west1
    • QPM: 55
    • TPM: 330,000 (entrada y salida)
    200,000
    global endpoint
    • QPM: 25
    • TPM: 140,000 (entrada y salida)
    200,000
    Claude 3.5 Haiku
    us-east5
    • QPM: 80
    • TPM: 350,000 (entrada y salida)
    200,000
    Claude 3.5 Sonnet
    us-east5
    • QPM: 80
    • TPM: 350,000 (entrada y salida)
    200,000
    europe-west1
    • QPM: 130
    • TPM: 600,000 (entrada y salida)
    200,000
    asia-southeast1
    • QPM: 35
    • TPM: 150,000 (entrada y salida)
    200,000
    Claude 3 Opus
    us-east5
    • QPM: 20
    • TPM: 105,000 (entrada y salida)
    200,000
    Claude 3 Haiku
    us-east5
    • QPM: 245
    • TPM: 600,000 (entrada y salida)
    200,000
    europe-west1
    • QPM: 75
    • TPM: 181,000 (entrada y salida)
    200,000
    asia-southeast1
    • QPM: 70
    • TPM: 174,000 (entrada y salida)
    200,000

    Si quieres aumentar tus cuotas para la IA generativa en Vertex AI, puedes usar la Google Cloud consola para solicitar un aumento de la cuota. Para obtener más información sobre las cuotas, consulta Trabaja con cuotas.