יצירת טקסט באמצעות Vertex AI Gemini API

במדריך הזה תשלחו בקשה עם הנחיית טקסט ובקשה עם הנחיה מולטי-מודאלית ותמונה ל-Vertex AI Gemini API, ותראו את התשובות.

דרישות מוקדמות

כדי להשלים את המדריך, אתם צריכים פרויקט ב- Google Cloud שבו Vertex AI API מופעל. כדי לבצע את השלבים האלה, פועלים לפי המדריך להגדרת Vertex AI.

הוספת ספריית הלקוח של Vertex AI כתלות

ספריית הלקוח של Vertex AI כוללת הרבה תכונות. כדי לזרז את הקומפילציה, הפעילו רק את התכונות שאתם צריכים:

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

שליחת הנחיה ל-Vertex AI Gemini API

  1. מאתחלים את הלקוח באמצעות הגדרות ברירת המחדל:
let client = PredictionService::builder().build().await?;
  1. יוצרים את שם המודל. בדוגמה הזו, מזהה הפרויקט מתקבל כארגומנט, נעשה שימוש במיקום קבוע (global) והמודל מוגדר לגרסה ספציפית של Gemini:
const MODEL: &str = "gemini-3.8-flash";
let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");

אם אתם מריצים את הפונקציה הזו בקוד שלכם, צריך להעביר את מזהה הפרויקט (בלי הקידומת projects/) של הפרויקט שבחרתם בדרישות המוקדמות.

  1. שולחים את הבקשה:
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. מדפיסים את התשובה. אפשר להשתמש במפרט הפורמט :#? כדי לעצב את אובייקטי התגובה בתצוגת עץ:
println!("RESPONSE = {response:#?}");

הנחיית טקסט: השלמת קוד

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

שליחת הנחיה ותמונה ל-Vertex AI Gemini API

  1. מאתחלים את הלקוח באמצעות הגדרות ברירת המחדל:
let client = PredictionService::builder().build().await?;
  1. יוצרים את שם המודל:
const MODEL: &str = "gemini-3.8-flash";
let model = format!("projects/{project_id}/locations/global/publishers/google/models/{MODEL}");
  1. יוצרים את החלק של התמונה בבקשה:
Part::new().set_file_data(
    FileData::new()
        .set_mime_type("image/jpeg")
        .set_file_uri("gs://generativeai-downloads/images/scones.jpg"),
),
  1. יוצרים את החלק של הנחיית הטקסט בבקשה:
Part::new().set_text("Describe this picture."),
  1. שולחים את הבקשה המלאה:
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. הדפסת התשובה המלאה:
println!("RESPONSE = {response:#?}");

הנחיה ותמונה: קוד מלא

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