יצירת טקסט מהנחיות במגוון מודלים באמצעות Gemini API


כשאתם קוראים ל-Gemini API מהאפליקציה באמצעות SDK של Vertex AI in Firebase, אתם יכולים להנחות את מודל Gemini ליצור טקסט על סמך קלט רב-מודלי. הנחיות מולטימודיות יכולות לכלול כמה מודלים (או סוגי קלט), כמו טקסט עם תמונות, קובצי PDF, קובצי טקסט רגילים, וידאו ואודיו.

בכל בקשה למסלול רב-מודלי, תמיד צריך לספק את הפרטים הבאים:

כדי לבדוק הנחיות במגוון מישורים ולבצע בהן שינויים, מומלץ להשתמש ב-Vertex AI Studio.

לפני שמתחילים

אם עדיין לא עשיתם זאת, כדאי לעיין במדריך למתחילים בנושא ערכות ה-SDK של Vertex AI in Firebase. חשוב לוודא שכל הפעולות הבאות בוצעו:

  1. מגדירים פרויקט Firebase חדש או קיים, כולל שימוש בחבילת התמחור Blaze והפעלה של ממשקי ה-API הנדרשים.

  2. קישור האפליקציה ל-Firebase, כולל רישום האפליקציה והוספת הגדרות Firebase לאפליקציה.

  3. מוסיפים את ה-SDK ומפעילים את השירות Vertex AI ואת המודל הגנרטיבי באפליקציה.

אחרי שמחברים את האפליקציה ל-Firebase, מוסיפים את ה-SDK ומפעילים את השירות Vertex AI ואת המודל הגנרטיבי, אפשר לבצע קריאה ל-Gemini API.

יצירת טקסט מטקסט ומתמונה אחת יצירת טקסט מטקסט וממספר תמונות יצירת טקסט מטקסט וסרטון

קובצי מדיה לדוגמה

אם עדיין אין לכם קובצי מדיה, תוכלו להשתמש בקבצים הבאים שזמינים לכולם:

יצירת טקסט מטקסט ומתמונה אחת

לפני שמנסים את הדוגמה הזו, חשוב לוודא שמילאתם את הקטע לפני שמתחילים במדריך הזה.

אפשר להפעיל את Gemini API באמצעות הנחיות במגוון מודלים, שכוללות גם טקסט וגם קובץ יחיד (כמו תמונה, כפי שמוצג בדוגמה הזו). לשיחות האלה, צריך להשתמש במודל שתומך במדיה בהנחיות (כמו Gemini 1.5 Flash).

חשוב לקרוא את הדרישות וההמלצות לגבי קובצי קלט.

בוחרים אם להעביר את התשובה בסטרימינג (generateContentStream) או להמתין לתשובה עד שהתוצאה כולה נוצרת (generateContent).

סטרימינג

כדי לקבל אינטראקציות מהירות יותר, אפשר לא להמתין לתוצאה המלאה של יצירת המודל, אלא להשתמש בסטרימינג כדי לטפל בתוצאות חלקיות.

בדוגמה הזו מוסבר איך להשתמש ב-generateContentStream() כדי להעביר (stream) טקסט שנוצר מבקשת הנחיה מרובת-מודולים שכוללת טקסט ותמונה אחת:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image = UIImage(systemName: "bicycle") else { fatalError() }

// Provide a text prompt to include with the image
let prompt = "What's in this picture?"

// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

ללא סטרימינג

לחלופין, אפשר להמתין לקבלת התוצאה המלאה במקום להעביר אותה בסטרימינג. התוצאה תוחזר רק אחרי שהמודל ישלים את כל תהליך היצירה.

בדוגמה הזו מוסבר איך להשתמש ב-generateContent() כדי ליצור טקסט מבקשת הנחיה מרובת-מודולים שכוללת טקסט ותמונה אחת:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image = UIImage(systemName: "bicycle") else { fatalError() }

// Provide a text prompt to include with the image
let prompt = "What's in this picture?"

// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image, prompt)
print(response.text ?? "No text in response.")

איך בוחרים מודל של Gemini, ואם רוצים גם מיקום שמתאים לאפליקציה ולתרחיש השימוש.

יצירת טקסט מטקסט וממספר תמונות

לפני שמנסים את הדוגמה הזו, חשוב לוודא שמילאתם את הקטע לפני שמתחילים במדריך הזה.

אפשר להפעיל את Gemini API באמצעות הנחיות במגוון מודלים, שכוללות גם טקסט וגם כמה קבצים (כמו תמונות, כפי שמוצג בדוגמה הזו). לשיחות האלה, צריך להשתמש במודל שתומך במדיה בהנחיות (כמו Gemini 1.5 Flash).

חשוב לקרוא את הדרישות וההמלצות לגבי קובצי קלט.

בוחרים אם להעביר את התשובה בסטרימינג (generateContentStream) או להמתין לתשובה עד שהתוצאה כולה נוצרת (generateContent).

סטרימינג

כדי לקבל אינטראקציות מהירות יותר, אפשר לא להמתין לתוצאה המלאה של יצירת המודל, אלא להשתמש בסטרימינג כדי לטפל בתוצאות חלקיות.

בדוגמה הזו מוסבר איך להשתמש ב-generateContentStream() כדי להעביר (stream) טקסט שנוצר מבקשת הנחיה מרובת-מודולים שכוללת טקסט וכמה תמונות:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }

// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"

// To stream generated text output, call generateContentStream and pass in the prompt
let contentStream = try model.generateContentStream(image1, image2, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

ללא סטרימינג

לחלופין, אפשר להמתין לקבלת התוצאה המלאה במקום להשתמש בסטרימינג. התוצאה תוחזר רק אחרי שהמודל ישלים את כל תהליך היצירה.

בדוגמה הזו מוסבר איך להשתמש ב-generateContent() כדי ליצור טקסט מבקשת הנחיה מרובת-מודולים שכוללת טקסט ומספר תמונות:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

guard let image1 = UIImage(systemName: "car") else { fatalError() }
guard let image2 = UIImage(systemName: "car.2") else { fatalError() }

// Provide a text prompt to include with the images
let prompt = "What's different between these pictures?"

// To generate text output, call generateContent and pass in the prompt
let response = try await model.generateContent(image1, image2, prompt)
print(response.text ?? "No text in response.")

איך בוחרים מודל של Gemini, ואם רוצים גם מיקום שמתאים לאפליקציה ולתרחיש השימוש.

יצירת טקסט מטקסט וסרטון

לפני שמנסים את הדוגמה הזו, חשוב לוודא שמילאתם את הקטע לפני שמתחילים במדריך הזה.

אפשר להפעיל את Gemini API באמצעות הנחיות מסוג multimodal שכוללות גם טקסט וגם קובצי וידאו (כמו בדוגמה הזו). בשיחות האלה, צריך להשתמש במודל שתומך בהנחיות עם מדיה (כמו Gemini 1.5 Flash).

חשוב לקרוא את הדרישות וההמלצות לגבי קובצי קלט.

בוחרים אם להעביר את התשובה בסטרימינג (generateContentStream) או להמתין לתשובה עד שהתוצאה כולה נוצרת (generateContent).

סטרימינג

כדי לקבל אינטראקציות מהירות יותר, אפשר לא להמתין לתוצאה המלאה של יצירת המודל, אלא להשתמש בסטרימינג כדי לטפל בתוצאות חלקיות.

בדוגמה הזו מוסבר איך להשתמש ב-generateContentStream() כדי להעביר טקסט שנוצר מבקשת הנחיה מרובת-מודולים שכוללת טקסט וסרטון אחד:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

// Provide the video as `Data` with the appropriate MIME type
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")

// Provide a text prompt to include with the video
let prompt = "What is in the video?"

// To stream generated text output, call generateContentStream with the text and video
let contentStream = try model.generateContentStream(video, prompt)
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

ללא סטרימינג

לחלופין, אפשר להמתין לקבלת התוצאה המלאה במקום להפעיל את הסטרימינג. התוצאה תוחזר רק אחרי שהמודל ישלים את כל תהליך היצירה.

בדוגמה הזו מוסבר איך משתמשים ב-generateContent() כדי ליצור טקסט מבקשת הנחיה מרובת-מודולים שכוללת טקסט וסרטון אחד:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
// Gemini 1.5 models are versatile and can be used with all API capabilities
let model = vertex.generativeModel(modelName: "gemini-1.5-flash")

// Provide the video as `Data` with the appropriate MIME type.
let video = InlineDataPart(data: try Data(contentsOf: videoURL), mimeType: "video/mp4")

// Provide a text prompt to include with the video
let prompt = "What is in the video?"

// To generate text output, call generateContent with the text and video
let response = try await model.generateContent(video, prompt)
print(response.text ?? "No text in response.")

איך בוחרים מודל של Gemini, ואם רוצים גם מיקום שמתאים לאפליקציה ולתרחיש השימוש.

דרישות והמלצות לגבי קובצי קלט

במאמר קבצי קלט נתמכים ודרישות ל-Vertex AI Gemini API מוסבר על הנושאים הבאים:

  • אפשרויות שונות לשליחת קובץ בבקשה
  • סוגי קבצים נתמכים
  • סוגי ה-MIME הנתמכים ואופן הציון שלהם
  • דרישות ושיטות מומלצות לקבצים ולבקשות עם כמה שיטות להעברת נתונים

מה עוד אפשר לעשות?

  • כך סופרים אסימונים לפני ששולחים הנחיות ארוכות למודל.
  • מגדירים את Cloud Storage for Firebase כדי שתוכלו לכלול קבצים גדולים בבקשות עם מודלים מרובים של קלט, ולקבל פתרון מנוהל יותר לשליחת קבצים בהנחיות. הקבצים יכולים לכלול תמונות, קובצי PDF, סרטונים וקטעי אודיו.
  • כדאי להתחיל לחשוב על ההכנות לקראת ההשקה בסביבת הייצור, כולל הגדרת Firebase App Check כדי להגן על ה-Gemini API מפני ניצול לרעה על ידי לקוחות לא מורשים.

לנסות יכולות אחרות של Gemini API

איך שולטים ביצירת תוכן

אפשר גם להתנסות בהנחיות ובהגדרות של מודלים באמצעות Vertex AI Studio.

מידע נוסף על המודלים של Gemini

כאן תוכלו לקרוא מידע נוסף על המודלים הזמינים לתרחישי שימוש שונים, ועל המכסות והתמחור שלהם.


שליחת משוב על חוויית השימוש ב-Vertex AI in Firebase