בעזרת Gemini API אפשר ליצור שיחות בפורמט חופשי במספר סבבים. ה-SDK של Vertex AI in Firebase מפשט את התהליך על ידי ניהול המצב של השיחה, כך שלא כמו ב-generateContentStream()
או ב-generateContent()
, אתם לא צריכים לאחסן את היסטוריית השיחות בעצמכם.
אפשרויות אחרות לעבודה עם Gemini API
אפשר גם להתנסות בגרסה חלופית 'Google AI' של Gemini API
כדי לקבל גישה בחינם (במגבלות ובאזורים שבהם היא זמינה) באמצעות Google AI Studio ו-Google AI SDK ללקוח. צריך להשתמש ב-SDK האלה לצורך יצירת אב טיפוס בלבד באפליקציות לנייד ובאפליקציות אינטרנט.אחרי שתתמצאו באופן שבו פועל Gemini API, תוכלו לעבור ל-Vertex AI in Firebase SDKs (המסמכים האלה) שיש בהם תכונות נוספות רבות שחשובות לאפליקציות לנייד ולאפליקציות אינטרנט, כמו הגנה על ה-API מפני ניצול לרעה באמצעות Firebase App Check ותמיכה בבקשות עם קובצי מדיה גדולים.
אפשר גם להפעיל את Vertex AI Gemini API בצד השרת (למשל באמצעות Python, Node.js או Go)
. משתמשים בערכות ה-SDK של Vertex AI בצד השרת, ב-Firebase Genkit או ב-Firebase Extensions עבור Gemini API.
לפני שמתחילים
אם עדיין לא עשיתם זאת, כדאי לעיין במדריך למתחילים בנושא ערכות ה-SDK של Vertex AI in Firebase. חשוב לוודא שכל הפעולות הבאות בוצעו:
מגדירים פרויקט Firebase חדש או קיים, כולל שימוש בחבילת התמחור Blaze והפעלה של ממשקי ה-API הנדרשים.
קישור האפליקציה ל-Firebase, כולל רישום האפליקציה והוספת הגדרות Firebase לאפליקציה.
מוסיפים את ה-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.")
כאן מוסבר איך בוחרים מודל, ואם רוצים גם מיקום, שמתאימים לתרחיש לדוגמה ולאפליקציה.
מה עוד אפשר לעשות?
- כך סופרים אסימונים לפני ששולחים הנחיות ארוכות למודל.
- מגדירים את Cloud Storage for Firebase כדי שתוכלו לכלול קבצים גדולים בבקשות עם מודלים מרובים של קלט, ולקבל פתרון מנוהל יותר לשליחת קבצים בהנחיות. הקבצים יכולים לכלול תמונות, קובצי PDF, סרטונים וקטעי אודיו.
- כדאי להתחיל לחשוב על ההכנות לקראת ההשקה בסביבת הייצור, כולל הגדרת Firebase App Check כדי להגן על ה-Gemini API מפני ניצול לרעה על ידי לקוחות לא מורשים. בנוסף, חשוב לעיין ברשימת המשימות להעברה לייצור.
ניסיון ביכולות אחרות של Gemini API
- יצירת טקסט מהנחיות בטקסט בלבד.
- יצירת טקסט מהנחיות מולטימודיאליות (כולל טקסט, תמונות, קובצי PDF, וידאו ואודיו).
- יצירת פלט מובנה (כמו JSON) גם מהנחיות טקסט וגם מהנחיות מולטימודיאליות.
- משתמשים בקריאה לפונקציה כדי לחבר מודלים גנרטיביים למערכות ולמידע חיצוניים.
איך שולטים ביצירת תוכן
- הסבר על תכנון הנחיות, כולל שיטות מומלצות, אסטרטגיות והנחיות לדוגמה.
- להגדיר את הפרמטרים של המודל, כמו טמפרטורה ואסימונים מקסימליים של פלט (עבור Gemini) או יחס גובה-רוחב ויצירת אנשים (עבור Imagen).
- שימוש בהגדרות הבטיחות כדי לשנות את הסבירות לקבלת תשובות שעשויות להיחשב כמזיקות.
מידע נוסף על המודלים הנתמכים
כאן תוכלו לקרוא מידע נוסף על המודלים הזמינים לתרחישי שימוש שונים, על המכסות ועל התמחור שלהם.שליחת משוב על חוויית השימוש ב-Vertex AI in Firebase