יצירת שיחות עם ריבוי פניות (צ'אט) בעזרת Gemini API


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

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

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

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

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

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

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

שליחת בקשה להנחיה בצ'אט

כדי ליצור שיחה עם כמה תורנויות (כמו צ'אט), מתחילים בהפעלת השיחה באמצעות קריאה ל-startChat(). לאחר מכן, משתמשים ב-sendMessageStream() (או ב-sendMessage()) כדי לשלוח הודעה חדשה למשתמש, וההודעה והתגובה יתווספו להיסטוריית הצ'אט.

יש שתי אפשרויות אפשריות ל-role שמשויך לתוכן בשיחה:

  • user: התפקיד שמספק את ההנחיות. זהו ערך ברירת המחדל לשיחות ל-sendMessageStream() (או ל-sendMessage()), והפונקציה תיצור חריגה אם יועבר תפקיד אחר.

  • model: התפקיד שמספק את התשובות. אפשר להשתמש בתפקיד הזה כשקוראים ל-startChat() עם history קיים.

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

סטרימינג

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

בדוגמה הזו מוסבר איך להשתמש ב-startChat() וב-sendMessageStream() כדי להעביר תגובות מהמודל בסטרימינג:

import FirebaseVertexAI

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

// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")

// Optionally specify existing chat history
let history = [
  ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
  ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]

// Initialize the chat with optional chat history
let chat = model.startChat(history: history)

// To stream generated text output, call sendMessageStream and pass in the message
let contentStream = try chat.sendMessageStream("How many paws are in my house?")
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

ללא סטרימינג

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

בדוגמה הזו מוסבר איך משתמשים ב-startChat() וב-sendMessage() כדי לשלוח הודעה למשתמש חדש:

import FirebaseVertexAI

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

// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")

// Optionally specify existing chat history
let history = [
  ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
  ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]

// Initialize the chat with optional chat history
let chat = model.startChat(history: history)

// To generate text output, call sendMessage and pass in the message
let response = try await chat.sendMessage("How many paws are in my house?")
print(response.text ?? "No text in response.")

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

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

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

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

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

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

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

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


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