במדריך הזה מוסבר איך להתחיל לבצע קריאות ל-Gemini API ישירות מהאפליקציה באמצעות Vertex AI SDK for Firebase.
דרישות מוקדמות
המדריך מתבסס על ההנחה שאתם מכירים את השימוש ב-Android Studio לפיתוח אפליקציות ל-Android.
ודאו שסביבת הפיתוח והאפליקציה ל-Android עומדות בדרישות הבאות:
- Android Studio (הגרסה האחרונה)
- האפליקציה ל-Android חייבת לטרגט לרמת API 21 ומעלה.
(אופציונלי) כדאי לבדוק את האפליקציה לדוגמה.
תוכלו לנסות את ה-SDK במהירות, לראות הטמעה מלאה של תרחישי שימוש שונים, או להשתמש באפליקציה לדוגמה אם אין לכם אפליקציה משלכם ל-Android. כדי להשתמש באפליקציה לדוגמה, תצטרכו לחבר אותה לפרויקט Firebase.
שלב 1: מגדירים פרויקט Firebase ומקשרים את האפליקציה ל-Firebase
אם כבר יש לכם פרויקט Firebase ואפליקציה שמקושרת ל-Firebase
במסוף Firebase, נכנסים לדף Build with Gemini ולוחצים על הכרטיס השני כדי להפעיל תהליך עבודה שעוזר לבצע את המשימות הבאות. אם לא מופיעה פריסת כרטיסים, המשמעות היא שהמשימות האלה כבר בוצעו.
תוכלו לשדרג את הפרויקט כדי להשתמש בתוכנית התמחור והתשלומים של Blaze לפי שימוש.
מפעילים בפרויקט את שני ממשקי ה-API הבאים:
aiplatform.googleapis.com
ו-firebaseml.googleapis.com
.
כדי להוסיף את ה-SDK לאפליקציה, צריך להמשיך לשלב הבא במדריך הזה.
אם אין לכם עדיין פרויקט Firebase ואפליקציה שמקושרת ל-Firebase
שלב 2: הוספת ה-SDK
אחרי שמגדירים את הפרויקט ב-Firebase והאפליקציה מחוברת ל-Firebase (לפי השלב הקודם), אפשר עכשיו להוסיף לאפליקציה את Vertex AI SDK for Firebase.
Vertex AI SDK ל-Android (firebase-vertexai
) מספק גישה ל-Gemini API.
בקובץ התצורה של המודול (ברמת האפליקציה) של Gradle (למשל, <project>/<app-module>/build.gradle.kts
), מוסיפים את התלות ב-Vertex AI SDK ל-Android:
Kotlin+KTX
dependencies {
// ... other androidx dependencies
// add the dependency for the Vertex AI SDK for Android
implementation("com.google.firebase:firebase-vertexai:16.0.0-alpha02")
}
Java
עבור Java עליך להוסיף שתי ספריות נוספות.
dependencies {
// ... other androidx dependencies
// add the dependency for the Vertex AI SDK for Android
implementation("com.google.firebase:firebase-vertexai:16.0.0-alpha02")
// Required for one-shot operations (to use `ListenableFuture` from Guava Android)
implementation("com.google.guava:guava:31.0.1-android")
// Required for streaming operations (to use `Publisher` from Reactive Streams)
implementation("org.reactivestreams:reactive-streams:1.0.4")
}
שלב 3: מפעילים את שירות Vertex AI ואת המודל הגנרטיבי
לפני שתוכלו לבצע קריאות ל-API, עליכם לאתחל את שירות Vertex AI ואת המודל הגנרטיבי.
Kotlin+KTX
// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
val generativeModel = Firebase.vertexAI.generativeModel("gemini-1.5-pro-preview-0409")
ב-Kotlin, השיטות ב-SDK הזה הן פונקציות השעיה וצריך להפעיל אותן מהיקף של Coroutine. אם אתם לא מכירים את ה-Coroutines, קראו את המאמר Kotlin Coroutines ב-Android.Java
// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
GenerativeModel gm = FirebaseVertexAI.getInstance()
.generativeModel("gemini-1.5-pro-preview-0409");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
ב-Java, שיטות הסטרימינג ב-SDK הזה מחזירות סוג Publisher
מספריית Reactive Streams.בסיום המדריך לתחילת העבודה, קראו איך לבחור מודל Gemini שמתאים למקרה שלכם.
שלב 4: קריאה ל-Gemini API
עכשיו, אחרי שקישרתם את האפליקציה ל-Firebase, הוספתם את ה-SDK והפעלתם את שירות Vertex AI ואת המודל הגנרטיבי, אתם יכולים לקרוא ל-Gemini API.
בוחרים אם רוצים לשדר את התשובה (generateContentStream
) או לחכות לתגובה עד ליצירת התוצאה במלואה (generateContent
).
סטרימינג
כברירת מחדל, המודל מחזיר תשובה אחרי השלמת תהליך היצירה. עם זאת, אפשר להשיג אינטראקציות מהירות יותר אם לא מחכים לתוצאה המלאה, אלא משתמשים בסטרימינג כדי לטפל בתוצאות חלקיות.
אפשר להשתמש ב-generateContentStream()
כדי ליצור סטרימינג של טקסט שנוצר מבקשת הנחיה שכוללת רק טקסט:
Kotlin+KTX
// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
val generativeModel = Firebase.vertexAI.generativeModel("gemini-1.5-pro-preview-0409")
// Provide a prompt that includes only text
val prompt = "Write a story about a magic backpack."
// To stream generated text output, call generateContentStream and pass in the prompt
var response = ""
generativeModel.generateContentStream(prompt).collect { chunk ->
print(chunk.text)
response += chunk.text
}
ב-Kotlin, השיטות ב-SDK הזה הן פונקציות השעיה וצריך להפעיל אותן מהיקף של Coroutine. אם אתם לא מכירים את ה-Coroutines, קראו את המאמר Kotlin Coroutines ב-Android.Java
// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
GenerativeModel gm = FirebaseVertexAI.getInstance()
.generativeModel("gemini-1.5-pro-preview-0409");
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
// Provide a prompt that contains text
Content prompt = new Content.Builder()
.addText("Write a story about a magic backpack.")
.build();
// To stream generated text output, call generateContentStream with the text input
Publisher<GenerateContentResponse> streamingResponse =
model.generateContentStream(prompt);
// Subscribe to partial results from the response
final String[] fullResponse = {""};
streamingResponse.subscribe(new Subscriber<GenerateContentResponse>() {
@Override
public void onNext(GenerateContentResponse generateContentResponse) {
String chunk = generateContentResponse.getText();
fullResponse[0] += chunk;
}
@Override
public void onComplete() {
System.out.println(fullResponse[0]);
}
@Override
public void onError(Throwable t) {
t.printStackTrace();
}
@Override
public void onSubscribe(Subscription s) { }
});
ב-Java, שיטות הסטרימינג ב-SDK הזה מחזירות סוג Publisher
מספריית Reactive Streams.ללא סטרימינג
לחלופין, תוכלו לחכות לתוצאה המלאה במקום לסטרימינג. התוצאה תוחזר רק אחרי שהמודל ישלים את תהליך היצירה כולו.
בעזרת generateContent()
אפשר ליצור טקסט מבקשה עם הנחיה שכוללת רק טקסט:
Kotlin+KTX
// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
val generativeModel = Firebase.vertexAI.generativeModel("gemini-1.5-pro-preview-0409")
// Provide a prompt that contains text
val prompt = "Write a story about a magic backpack."
// To generate text output, call generateContent with the text input
val response = generativeModel.generateContent(prompt)
print(response.text)
ב-Kotlin, השיטות ב-SDK הזה הן פונקציות השעיה וצריך להפעיל אותן מהיקף של Coroutine. אם אתם לא מכירים את ה-Coroutines, קראו את המאמר Kotlin Coroutines ב-Android.Java
// Initialize the Vertex AI service and the generative model
// Specify a model that supports your use case
// Gemini 1.5 Pro is versatile and can accept both text-only and multimodal prompt inputs
GenerativeModel gm = FirebaseVertexAI.getInstance()
.generativeModel("gemini-1.5-pro-preview-0409");
GenerativeModelFutures model = GenerativeModelFutures.from(gm);
// Provide a prompt that contains text
Content prompt = new Content.Builder()
.addText("Write a story about a magic backpack.")
.build();
// To generate text output, call generateContent with the text input
ListenableFuture<GenerateContentResponse> response = model.generateContent(prompt);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
ב-Java, השיטות ב-SDK הזה מחזירות ListenableFuture
.
אם אתם לא מכירים את ה-API הזה, כדאי לעיין במסמכי התיעוד של Android לגבי השימוש ב-ListenableFuture
.מה עוד אפשר לעשות?
מידע נוסף על הדגמים של Gemini
כאן תוכלו לקרוא על המודלים הזמינים בתרחישים שונים ועל המכסות והתמחור שלהם.
כדאי לנסות יכולות נוספות של Gemini API
- למידע נוסף על שליחת הנחיות טקסט בלבד
- שולחים בקשות להנחיות במספר מצבים עם הנחיות בפורמט טקסט ומדיה (כולל תמונות, קובצי PDF, וידאו ואודיו).
- יצירת שיחות עם כמה פניות (צ'אט).
מידע נוסף על שליטה ביצירת תוכן
- הסבר על עיצוב הנחיות, כולל שיטות מומלצות, אסטרטגיות והנחיות לדוגמה.
- להגדיר פרמטרים של המודל כמו טמפרטורה ואסימוני פלט מקסימלי.
- תוכלו להשתמש בהגדרות הבטיחות כדי לשנות את הסבירות לקבלת תגובות שעשויות להיחשב כמזיקות.
אתם יכולים גם להתנסות בהנחיות ובמודלים של הגדרות אישיות באמצעות Vertex AI Studio.
נשמח לקבל משוב על חוויית השימוש ב-Vertex AI SDK for Firebase