Générer du texte à l'aide de l'API Gemini Vertex AI

Dans ce guide, vous allez envoyer une requête de prompt textuel et une requête de prompt multimodal et d'image à l'API Gemini Vertex AI, puis afficher les réponses.

Prérequis

Pour suivre ce guide, vous devez disposer d'un projet Google Cloud pour lequel l'API Vertex AI est activée. Suivez le guide de configuration de Vertex AI pour effectuer ces étapes.

Ajouter la bibliothèque cliente Vertex AI en tant que dépendance

La bibliothèque cliente Vertex AI inclut de nombreuses fonctionnalités. Pour accélérer la compilation, n'activez que les fonctionnalités dont vous avez besoin :

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

Envoyer un prompt à l'API Gemini Vertex AI

  1. Initialisez le client à l'aide des paramètres par défaut :
let client = PredictionService::builder().build().await?;
  1. Créez le nom du modèle. Cet exemple reçoit l'ID du projet en tant qu'argument, utilise un emplacement fixe (global) et définit le modèle sur une version spécifique de Gemini :
const MODEL: &str = "gemini-3.8-flash";
let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");

Si vous exécutez cette fonction dans votre propre code, transmettez l'ID du projet (sans préfixe projects/) que vous avez sélectionné dans les conditions préalables.

  1. Envoyez la requête :
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. Imprimez la réponse. Vous pouvez utiliser le spécificateur de format :#? pour mettre en forme les objets de réponse imbriqués :
println!("RESPONSE = {response:#?}");

Prompt textuel : compléter le code

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(())
}

Envoyer un prompt et une image à l'API Gemini Vertex AI

  1. Initialisez le client à l'aide des paramètres par défaut :
let client = PredictionService::builder().build().await?;
  1. Créez le nom du modèle :
const MODEL: &str = "gemini-3.8-flash";
let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");
  1. Créez la partie image de la requête :
Part::new().set_file_data(
    FileData::new()
        .set_mime_type("image/jpeg")
        .set_file_uri("gs://generativeai-downloads/images/scones.jpg"),
),
  1. Créez la partie prompt textuel de la requête :
Part::new().set_text("Describe this picture."),
  1. Envoyez la requête complète :
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. Imprimer la réponse complète :
println!("RESPONSE = {response:#?}");

Prompt et image : code complet

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(())
}