Genera testo utilizzando l'API Vertex AI Gemini

In questa guida, invierai una richiesta di prompt testuale e una richiesta di prompt multimodale e immagine all'API Vertex AI Gemini e visualizzerai le risposte.

Prerequisiti

Per completare questa guida, devi avere un progetto Google Cloud con l'API Vertex AI abilitata. Segui la guida alla configurazione di Vertex AI per completare questi passaggi.

Aggiungi la libreria client di Vertex AI come dipendenza

La libreria client di Vertex AI include molte funzionalità. Per velocizzare la compilazione, attiva solo le funzionalità di cui hai bisogno:

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

Invia un prompt all'API Vertex AI Gemini

  1. Inizializza il client utilizzando le impostazioni predefinite:
let client = PredictionService::builder().build().await?;
  1. Crea il nome del modello. Questo esempio riceve l'ID progetto come argomento, utilizza una località fissa (global) e imposta il modello su una versione specifica di Gemini:
const MODEL: &str = "gemini-3.8-flash";
let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");

Se esegui questa funzione nel tuo codice, passa l'ID progetto (senza alcun prefisso projects/) del progetto che hai selezionato nei prerequisiti.

  1. Invia la richiesta:
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. Stampa la risposta. Puoi utilizzare l'identificatore di formato :#? per formattare gli oggetti di risposta nidificati:
println!("RESPONSE = {response:#?}");

Prompt testuale: completa il codice

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

Invia un prompt e un'immagine all'API Vertex AI Gemini

  1. Inizializza il client utilizzando le impostazioni predefinite:
let client = PredictionService::builder().build().await?;
  1. Crea il nome del modello:
const MODEL: &str = "gemini-3.8-flash";
let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");
  1. Crea la parte dell'immagine della richiesta:
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 del prompt testuale della richiesta:
Part::new().set_text("Describe this picture."),
  1. Invia la richiesta 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. Stampa la risposta completa:
println!("RESPONSE = {response:#?}");

Prompt e immagine: codice 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(())
}