תאריך פרסום: 11 בנובמבר 2024, תאריך עדכון אחרון: 20 במאי 2025
הסבר | פיתוח אתרים | תוספים | סטטוס Chrome | כוונת רכישה |
---|---|---|---|---|
GitHub | תצוגה | כוונה לערוך ניסוי |
באמצעות Prompt API, אפשר לשלוח בקשות בשפה טבעית ל-Gemini Nano בדפדפן.
יש הרבה דרכים להשתמש ב-Prompt API בתוספים ל-Chrome. לדוגמה:
- אירועים ביומן באופן מיידי. פיתוח תוסף ל-Chrome שחולץ באופן אוטומטי פרטי אירועים מדפי אינטרנט, כדי שמשתמשים יוכלו ליצור רשומות ביומן בכמה שלבים בלבד.
- חילוץ חלק של אנשי קשר. תוכלו ליצור תוסף שיאחזר פרטים ליצירת קשר מאתרים, כדי שיהיה למשתמשים קל יותר ליצור קשר עם עסק או להוסיף פרטים לרשימת אנשי הקשר שלהם.
- סינון דינמי של תוכן. ליצור תוסף ל-Chrome שינתח כתבות חדשותיות ויטשטש או יסתיר תוכן באופן אוטומטי על סמך נושאים שהמשתמשים מגדירים.
אלה רק כמה אפשרויות, ואנחנו סקרנים לראות מה יהיו התוצרים שלכם.
בדיקת דרישות החומרה
ה-API של גלאי השפות ו-Translator API פועלים במחשב רק ב-Chrome.
ממשקי Prompt API, Summarizer API, Writer API ו-Rewriter API פועלים ב-Chrome כשמתקיימים התנאים הבאים:
- מערכת הפעלה: Windows 10 או 11, macOS מגרסה 13 ואילך (Ventura ואילך) או Linux. עדיין אין תמיכה ב-Chrome ל-Android, ל-iOS ול-ChromeOS בממשקי ה-API שלנו שמבוססים על Gemini Nano.
- אחסון: נפח אחסון של 22GB לפחות בנפח האחסון שמכיל את פרופיל Chrome שלכם.
- GPU: יותר מ-4GB של VRAM.
- רשת: נתונים ללא הגבלה או חיבור ללא חיוב לפי נפח.
הדרישות האלה קיימות עבורכם בתהליך הפיתוח ועבור המשתמשים שלכם שעובדים עם התכונות שאתם מפתחים.
שימוש ב-Prompt API בתוספים
לפני שמשתמשים ב-API הזה, צריך לאשר את המדיניות של Google בנושא שימוש אסור ב-AI גנרטיבי.
יש שתי פונקציות תוסף שזמינות במרחב השמות LanguageModel
:
availability()
כדי לבדוק מה המודל מסוגל לעשות ואם הוא זמין.create()
כדי להתחיל סשן של מודל שפה.
הורדת המודל
ב-Prompt API נעשה שימוש במודל Gemini Nano ב-Chrome. ה-API מובנה ב-Chrome, אבל המודל מוריד בנפרד בפעם הראשונה שתוסף משתמש ב-API.
כדי לבדוק אם המודל מוכן לשימוש, צריך להפעיל את הפונקציה LanguageModel.availability()
האסינכרונית. הפונקציה אמורה להחזיר אחת מהתגובות הבאות:
- הערך
"unavailable"
מציין שההטמעה לא תומכת באפשרויות המבוקשות, או שהיא לא תומכת בכלל בהצגת הנחיה לבחירת מודל שפה. - הערך
"downloadable"
מציין שההטמעה תומכת באפשרויות המבוקשות, אבל תצטרך להוריד משהו (לדוגמה, מודל השפה עצמו או כוונון מדויק) כדי ליצור סשן באמצעות האפשרויות האלה. - הערך
"downloading"
מציין שההטמעה תומכת באפשרויות המבוקשות, אבל תצטרך לסיים פעולת הורדה מתמשכת לפני שתוכל ליצור סשן באמצעות האפשרויות האלה. - הערך
"available"
מציין שההטמעה תומכת באפשרויות המבוקשות בלי צורך בהורדות חדשות.
כדי להפעיל את הורדת המודל וליצור את הסשן של מודל השפה, צריך להפעיל את הפונקציה LanguageModel.availability()
האסינכרונית. אם התשובה להודעה availability()
היא 'downloadable'
, מומלץ להאזין להתקדמות ההורדה. כך תוכלו להודיע למשתמש אם ההורדה נמשכת זמן רב.
const session = await LanguageModel.create({
monitor(m) {
m.addEventListener("downloadprogress", (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
יכולות המודל
הפונקציה params()
מאפשרת לקבל מידע על הפרמטרים של מודל השפה. לאובייקט יש את השדות הבאים:
defaultTopK
: ערך ברירת המחדל של top-K (ברירת המחדל:3
).maxTopK
: הערך של ה-K העליון (8
).defaultTemperature
: טמפרטורת ברירת המחדל (1.0
). ערך הטמפרטורה חייב להיות בין0.0
ל-2.0
.maxTemperature
: הטמפרטורה המקסימלית.
await LanguageModel.params();
// {defaultTopK: 3, maxTopK: 8, defaultTemperature: 1, maxTemperature: 2}
יצירת סשן
אחרי ש-Prompt API יכול לפעול, יוצרים סשן באמצעות הפונקציה create()
.
אפשר להנחות את המודל באמצעות הפונקציות prompt()
או promptStreaming()
.
התאמה אישית של הסשן
אפשר להתאים אישית כל סשן באמצעות topK
ו-temperature
באמצעות אובייקט אופציונלי של אפשרויות. ערכי ברירת המחדל של הפרמטרים האלה מוחזרים מ-LanguageModel.params()
.
const params = await LanguageModel.params();
// Initializing a new session must either specify both `topK` and
// `temperature` or neither of them.
const slightlyHighTemperatureSession = await LanguageModel.create({
temperature: Math.max(params.defaultTemperature * 1.2, 2.0),
topK: params.defaultTopK,
});
אובייקט האפשרויות האופציונלי של פונקציית create()
מקבל גם שדה signal
, שמאפשר להעביר AbortSignal
כדי להשמיד את הסשן.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const session = await LanguageModel.create({
signal: controller.signal,
})
הנחיות ראשוניות
באמצעות הנחיות ראשוניות, אפשר לספק למודל השפה הקשר לגבי אינטראקציות קודמות. לדוגמה, כדי לאפשר למשתמש להמשיך סשן ששמור אחרי הפעלה מחדש של הדפדפן.
const session = await LanguageModel.create({
initialPrompts: [
{ role: 'system', content: 'You are a helpful and friendly assistant.' },
{ role: 'user', content: 'What is the capital of Italy?' },
{ role: 'assistant', content: 'The capital of Italy is Rome.'},
{ role: 'user', content: 'What language is spoken there?' },
{ role: 'assistant', content: 'The official language of Italy is Italian. [...]' }
]
});
מגבלות של פעילות באתר
לכל סשן של מודל שפה יש מספר מקסימלי של אסימונים שהוא יכול לעבד. אפשר לבדוק את השימוש ואת ההתקדמות לקראת המגבלה הזו באמצעות המאפיינים הבאים באובייקט הסשן:
console.log(`${session.inputUsage}/${session.inputQuota}`);
שמירת נתונים בסשן
בכל סשן מתבצע מעקב אחרי ההקשר של השיחה. האינטראקציות הקודמות נלקחות בחשבון באינטראקציות עתידיות עד שחלון ההקשר של הסשן מתמלא.
const session = await LanguageModel.create({
initialPrompts: [{
role: "system",
content: "You are a friendly, helpful assistant specialized in clothing choices."
}]
});
const result1 = await session.prompt(
"What should I wear today? It is sunny. I am unsure between a t-shirt and a polo."
);
console.log(result1);
const result2 = await session.prompt(
"That sounds great, but oh no, it is actually going to rain! New advice?"
);
console.log(result2);
שכפול סשן
כדי לחסוך במשאבים, אפשר לשכפל סשן קיים באמצעות הפונקציה clone()
. הקשר של השיחה מתאפס, אבל ההנחיה הראשונית נשארת ללא שינוי. הפונקציה clone()
מקבלת אובייקט אופציונלי של אפשרויות עם שדה signal
, שמאפשר להעביר AbortSignal
כדי להשמיד את הסשן שהועתק.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const clonedSession = await session.clone({
signal: controller.signal,
});
הנחיה למודל
אפשר להנחות את המודל באמצעות הפונקציות prompt()
או promptStreaming()
.
פלט ללא סטרימינג
אם אתם מצפים לתוצאה קצרה, תוכלו להשתמש בפונקציה prompt()
שמחזירה את התגובה ברגע שהיא זמינה.
// Start by checking if it's possible to create a session based on the
// availability of the model, and the characteristics of the device.
const {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
await LanguageModel.params();
const available = await LanguageModel.availability();
if (available !== 'unavailable') {
const session = await LanguageModel.create();
// Prompt the model and wait for the whole result to come back.
const result = await session.prompt("Write me a poem!");
console.log(result);
}
פלט בסטרימינג
אם התגובה צפויה להיות ארוכה יותר, כדאי להשתמש בפונקציה promptStreaming()
שמאפשרת להציג תוצאות חלקיות כשהן מגיעות מהמודל. הפונקציה promptStreaming()
מחזירה ReadableStream
.
const {defaultTemperature, maxTemperature, defaultTopK, maxTopK } =
await LanguageModel.params();
const available = await LanguageModel.availability();
if (available !== 'unavailable') {
const session = await LanguageModel.create();
// Prompt the model and stream the result:
const stream = session.promptStreaming('Write me an extra-long poem!');
for await (const chunk of stream) {
console.log(chunk);
}
}
הפסקת ההרצה של הנחיה
גם prompt()
וגם promptStreaming()
מקבלים פרמטר שני אופציונלי עם שדה signal
, שמאפשר להפסיק את ההפעלה של ההנחיות.
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
const result = await session.prompt(
'Write me a poem!',
{ signal: controller.signal }
);
סיום סשן
אם אתם לא צריכים יותר את הסשן, תוכלו להתקשר למספר destroy()
כדי לפנות משאבים. כשסשן נהרס, אי אפשר להשתמש בו יותר וכל ביצוע מתמשך מבוטל. אם אתם מתכוונים להציג למודל הנחיות לעיתים קרובות, כדאי לשמור את הסשן כי יצירת סשן עשויה להימשך זמן מה.
await session.prompt(
"You are a friendly, helpful assistant specialized in clothing choices."
);
session.destroy();
// The promise is rejected with an error explaining that
// the session is destroyed.
await session.prompt(
"What should I wear today? It is sunny, and I am unsure between a
t-shirt and a polo."
);
הדגמה (דמו)
כדי לבדוק את Prompt API בתוספים ל-Chrome, צריך להתקין את תוסף הדגמה. קוד המקור של התוסף זמין ב-GitHub.
השתתפות ושיתוף משוב
המשוב שלכם יכול להשפיע ישירות על האופן שבו אנחנו מפתחים ומטמיעים גרסאות עתידיות של ה-API הזה, ושל כל ממשקי ה-API המובנים של AI.
- כדי לשלוח משוב על ההטמעה ב-Chrome, אפשר לשלוח דיווח על באג או בקשה להוספת תכונה.
- כדי לשתף משוב על צורת ה-API, אפשר להגיב ל-issue קיים או ליצור issue חדש במאגר ב-GitHub של Prompt API.
- מורידים את התוסף לדוגמה של Prompt API ב-GitHub.
- כדי להשתתף במאמצים ליצירת התקנים, אתם יכולים להצטרף לקבוצת הקהילה של Web Incubator.