הגישה הניסיונית ל-Gemini Nano מיועדת למפתחים שרוצים לבדוק שיפורים באפליקציות שלהם באמצעות יכולות AI מתקדמות במכשיר. במדריך הזה מוסבר איך להתנסות ב-Gemini Nano באמצעות Google AI Edge SDK באפליקציה שלכם.
הורדת האפליקציה לדוגמה
אם אתם רוצים לעקוב אחרי הדגמה מוכנה, תוכלו להיעזר באפליקציה לדוגמה ב-GitHub.
דרישות מוקדמות
כדי להתנסות ב-Gemini Nano, צריך מכשיר מדגמי Pixel 9. לפני שתמשיכו, חשוב לוודא שיש לכם כרטיס כזה, ושאתם מחוברים רק לחשבון שבו אתם מתכוונים להשתמש לצורך הבדיקה.
- הצטרפות לקבוצת Google aicore-experimental
- מצטרפים לתוכנית הבדיקה של Android AICore.
אחרי שתבצעו את השלבים האלה, שם האפליקציה בחנות Play (בקטע 'ניהול האפליקציות והמכשיר') אמור להשתנות מ-Android AICore ל-Android AICore (בטא).
עדכון קבצי APK והורדה של קבצים בינאריים
- מעדכנים את קובץ ה-APK של AICore:
- בצד שמאל למעלה, מקישים על סמל הפרופיל
- מקישים על ניהול אפליקציות ומכשירים > ניהול.
- מקישים על Android AICore.
- אם יש עדכון זמין, מקישים על עדכון.
- מעדכנים את Private Compute Service APK:
- בצד שמאל למעלה, מקישים על סמל הפרופיל
- מקישים על ניהול אפליקציות ומכשירים > ניהול.
- מקישים על Private Compute Services.
- אם יש עדכון זמין, מקישים על עדכון.
- בודקים את הגרסה בכרטיסייה מידע על האפליקציה הזו ומוודאים שגרסת האפליקציה היא 1.0.release.658389993 ואילך.
- מפעילים מחדש את המכשיר וממתינים כמה דקות עד שההרשמה לבדיקה תיכנס לתוקף
- בודקים את גרסת ה-APK של AICore בחנות Play (בקטע 'מידע על האפליקציה הזו') כדי לוודא שהיא מתחילה ב-0.thirdpartyeap
הגדרת Gradle
מוסיפים את הקטע הבא לבלוק יחסי התלות בתצורה של build.gradle
:
implementation("com.google.ai.edge.aicore:aicore:0.0.1-exp01")
בהגדרות של build.gradle
, מגדירים את יעד ה-SDK המינימלי ל-31:
defaultConfig {
...
minSdk = 31
...
}
קבלת AICore והרצת היסק
יוצרים אובייקט GenerationConfig
עם פרמטרים להתאמה אישית של המאפיינים של אופן ההסקה של המודל.
הפרמטרים כוללים:
- טמפרטורה: קובעת את מידת האקראיות. ערכים גבוהים יותר מגדילים את המגוון
- Top K: מספר הטוקנים מהטוקנים עם הדירוג הגבוה ביותר שצריך להביא בחשבון
- Candidate Count: מספר התשובות המקסימלי להחזרה
- Max output tokens: אורך התגובה
- Worker Executor: ה-
ExecutorService
שבו צריך להריץ את המשימות ברקע - Callback Executor: ה-
Executor
שבו צריך להפעיל את פונקציות ה-callback
Kotlin
val generationConfig = generationConfig { context = ApplicationProvider.getApplicationContext() // required temperature = 0.2f topK = 16 maxOutputTokens = 256 }
Java
GenerationConfig.Builder configBuilder = GenerationConfig.Companion.builder(); configBuilder.setContext(context); configBuilder.setTemperature(0.2f); configBuilder.setTopK(16); configBuilder.setMaxOutputTokens(256);
יוצרים downloadCallback
אופציונלי. זוהי פונקציית קריאה חוזרת שמשמשת להורדת מודל. ההודעות שמוחזרות הן למטרות ניפוי באגים.
יוצרים את האובייקט GenerativeModel
עם הגדרות היצירה וההורדה האופציונליות שיצרתם קודם.
Kotlin
val downloadConfig = DownloadConfig(downloadCallback) val model = GenerativeModel( generationConfig = generationConfig, downloadConfig = downloadConfig // optional )
Java
GenerativeModel model = new GenerativeModel( generationConfig, downloadConfig = DownloadConfig(downloadCallback) // optional );
מריצים את ההסקה עם המודל ומעבירים את ההנחיה. מכיוון ש-GenerativeModel.generateContent()
היא פונקציית השהיה, צריך לוודא שהיא נמצאת בהיקף המתאים של פונקציית ה-coroutine כדי להפעיל אותה.
Kotlin
scope.launch { // Single string input prompt val input = "I want you to act as an English proofreader. I will provide you texts, and I would like you to review them for any spelling, grammar, or punctuation errors. Once you have finished reviewing the text, provide me with any necessary corrections or suggestions for improving the text: These arent the droids your looking for." val response = generativeModel.generateContent(input) print(response.text) // Or multiple strings as input val response = generativeModel.generateContent( content { text("I want you to act as an English proofreader. I will provide you texts and I would like you to review them for any spelling, grammar, or punctuation errors.") text("Once you have finished reviewing the text, provide me with any necessary corrections or suggestions for improving the text:") text("These arent the droids your looking for.") } ) print(response.text) }
Java
Futures.addCallback( String input = "I want you to act as an English proofreader. I will provide you texts, and I would like you to review them for any spelling, grammar, or punctuation errors. Once you have finished reviewing the text, provide me with any necessary corrections or suggestions for improving the text: These aren't the droids you're looking for." modelFutures.generateContent(input), new FutureCallback<GenerateContentResponse>() { @Override public void onSuccess(GenerateContentResponse result) { // generation successful } @Override public void onFailure(Throwable t) { // generation failed } }, ContextCompat.getMainExecutor(this));
אם יש לכם משוב על Google AI Edge SDK או משוב כלשהו לצוות שלנו, אתם יכולים לשלוח כרטיס.
טיפים להנחיות
עיצוב הנחיות הוא התהליך של יצירת הנחיות שמניבות תגובה אופטימלית ממודלים של שפה. כתיבת הנחיות עם מבנה טוב היא חלק חיוני כדי להבטיח תשובות מדויקות ואיכותיות ממודל שפה. ריכזנו כאן כמה דוגמאות לתרחישים נפוצים לשימוש ב-Gemini Nano. מידע נוסף זמין במאמר שיטות להצגת הנחיות ב-Gemini.
בכתיבה מחדש:
I want you to act as an English proofreader. I will provide you texts, and I
would like you to review them for any spelling, grammar, or punctuation errors.
Once you have finished reviewing the text, provide me with any necessary
corrections or suggestions for improving the text: These arent the droids your
looking for
תרחישים לדוגמה לשימוש בתשובות מהירות:
Prompt: Predict up to 5 emojis as a response to a text chat message. The output
should only include emojis.
input: The new visual design is blowing my mind 🤯
output: ➕,💘, ❤🔥
input: Well that looks great regardless
output: 💗,🪄
input: Unfortunately this won't work
output: 💔,😔
input: sounds good, I'll look into that
output: 🙏,👍
input: 10hr cut of jeff goldblum laughing URL
output: 😂,💀,⚰️
input: Woo! Launch time!
Output:
לסיכום:
Summarize this text as bullet points of key information.
Text: A quantum computer exploits quantum mechanical phenomena to perform
calculations exponentially faster than any modern traditional computer. At
very tiny scales, physical matter acts as both particles and as waves, and
quantum computing uses specialized hardware to leverage this behavior. The
operating principles of quantum devices are beyond the scope of classical
physics. When deployed at scale, quantum computers could be used in a wide
variety of applications such as: in cybersecurity to break existing encryption
methods while helping researchers create new ones, in meteorology to develop
better weather forecasting etc. However, the current state-of-the-art quantum
computers are still largely experimental and impractical.