Genera texto con la API de Vertex AI Gemini

En esta guía, enviarás una solicitud de instrucción de texto y una solicitud de instrucción multimodal y de imagen a la API de Vertex AI Gemini y verás las respuestas.

Requisitos previos

Para completar esta guía, debes tener un proyecto de Google Cloud con la API de Vertex AI habilitada. Sigue la guía de configuración de Vertex AI para completar estos pasos.

Agrega la biblioteca cliente de Vertex AI como dependencia

La biblioteca cliente de Vertex AI incluye muchas funciones. Para acelerar la compilación, habilita solo las funciones que necesites:

cargo add google-cloud-aiplatform-v1 --no-default-features --features prediction-service

Envía una instrucción a la API de Vertex AI Gemini

  1. Inicializa el cliente con la configuración predeterminada:
let client = PredictionService::builder().build().await?;
  1. Compila el nombre del modelo. En este ejemplo, se recibe el ID del proyecto como argumento, se usa una ubicación fija (global) y se establece el modelo en una versión específica de Gemini:
const MODEL: &str = "gemini-3.8-flash";
let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");

Si ejecutas esta función en tu propio código, pasa el ID del proyecto (sin ningún prefijo projects/) del proyecto que seleccionaste en los requisitos previos.

  1. Envía la solicitud:
let response = client
    .generate_content()
    .set_model(&model)
    .set_contents([Content::new()
        .set_role("user")
        .set_parts([Part::new().set_text(
            "What's a good name for a flower shop that specializes in selling bouquets of dried flowers?",
        )])])
    .send()
    .await;
  1. Imprimir la respuesta Puedes usar el especificador de formato :#? para dar formato a los objetos de respuesta anidados:
println!("RESPONSE = {response:#?}");

Instrucción de texto: código completo

use google_cloud_aiplatform_v1::client::PredictionService;
use google_cloud_aiplatform_v1::model::{Content, Part};

pub async fn sample(project_id: &str) -> anyhow::Result<()> {
    let client = PredictionService::builder().build().await?;

    const MODEL: &str = "gemini-3.8-flash";
    let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");

    let response = client
        .generate_content()
        .set_model(&model)
        .set_contents([Content::new()
            .set_role("user")
            .set_parts([Part::new().set_text(
                "What's a good name for a flower shop that specializes in selling bouquets of dried flowers?",
            )])])
        .send()
        .await;
    println!("RESPONSE = {response:#?}");

    Ok(())
}

Envía una instrucción y una imagen a la API de Vertex AI Gemini

  1. Inicializa el cliente con la configuración predeterminada:
let client = PredictionService::builder().build().await?;
  1. Compila el nombre del modelo:
const MODEL: &str = "gemini-3.8-flash";
let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");
  1. Crea la parte de la imagen de la solicitud:
Part::new().set_file_data(
    FileData::new()
        .set_mime_type("image/jpeg")
        .set_file_uri("gs://generativeai-downloads/images/scones.jpg"),
),
  1. Crea la parte de la instrucción de texto de la solicitud:
Part::new().set_text("Describe this picture."),
  1. Envía la solicitud completa:
let response = client
    .generate_content()
    .set_model(&model)
    .set_contents([Content::new().set_role("user").set_parts([
        Part::new().set_file_data(
            FileData::new()
                .set_mime_type("image/jpeg")
                .set_file_uri("gs://generativeai-downloads/images/scones.jpg"),
        ),
        Part::new().set_text("Describe this picture."),
    ])])
    .send()
    .await;
  1. Imprime la respuesta completa:
println!("RESPONSE = {response:#?}");

Instrucción e imagen: código completo

use google_cloud_aiplatform_v1::client::PredictionService;
use google_cloud_aiplatform_v1::model::{Content, FileData, Part};

pub async fn sample(project_id: &str) -> anyhow::Result<()> {
    let client = PredictionService::builder().build().await?;

    const MODEL: &str = "gemini-3.8-flash";
    let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");

    let response = client
        .generate_content()
        .set_model(&model)
        .set_contents([Content::new().set_role("user").set_parts([
            Part::new().set_file_data(
                FileData::new()
                    .set_mime_type("image/jpeg")
                    .set_file_uri("gs://generativeai-downloads/images/scones.jpg"),
            ),
            Part::new().set_text("Describe this picture."),
        ])])
        .send()
        .await;
    println!("RESPONSE = {response:#?}");

    Ok(())
}