כשמספקים טקסט, תמונות, וידאו וקול כקלט, Gemini API יכול ליצור פלט טקסט.
במדריך הזה מוסבר איך ליצור טקסט באמצעות השיטות generateContent
ו-streamGenerateContent
. למידע נוסף על העבודה עם יכולות הראייה והאודיו של Gemini, תוכלו לעיין במדריכים בנושא Vision ואודיו.
יצירת טקסט מקלט טקסט בלבד
הדרך הפשוטה ביותר ליצור טקסט באמצעות Gemini API היא לספק למודל קלט יחיד של טקסט בלבד, כפי שמתואר בדוגמה הבאה:
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[{"text": "Write a story about a magic backpack."}]
}]
}' 2> /dev/null
במקרה כזה, ההנחיה ('Explain how AI works') לא כוללת דוגמאות לפלט, הוראות מערכת או מידע על פורמט. זוהי גישה של הנחיה ישירה (zero-shot). בתרחישי שימוש מסוימים, הנחיה חד-פעמית או לכמה הנחיות עשויה להניב פלט שמתאים יותר לציפיות של המשתמשים. במקרים מסוימים, כדאי גם לספק הוראות מערכת כדי לעזור למודל להבין את המשימה או לפעול לפי הנחיות ספציפיות.
יצירת טקסט ממידע שמוזן כטקסט ותמונה
Gemini API תומך בקלט רב-מודלי שמשלב טקסט עם קובצי מדיה. הדוגמה הבאה מראה איך ליצור טקסט ממידע קלט של טקסט ותמונה:
# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"
# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT
cat > "$TEMP_JSON" << EOF
{
"contents": [{
"parts":[
{"text": "Tell me about this instrument"},
{
"inline_data": {
"mime_type":"image/jpeg",
"data": "$(cat "$TEMP_B64")"
}
}
]
}]
}
EOF
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d "@$TEMP_JSON" 2> /dev/null
בדומה להנחיות בטקסט בלבד, הנחיות במגוון מישורים יכולות לכלול שיטות שונות ושיפורים שונים. בהתאם לפלט מהדוגמה הזו, יכול להיות שתרצו להוסיף שלבים להנחיה או להפוך את ההוראות לספציפיות יותר. למידע נוסף, ראו שיטות להצגת בקשות להעלאת קבצים.
יצירת מקור טקסט
כברירת מחדל, המודל מחזיר תשובה אחרי השלמת כל תהליך יצירת הטקסט. כדי לקבל אינטראקציות מהירות יותר, אפשר לא להמתין לתוצאה המלאה, אלא להשתמש בסטרימינג כדי לטפל בתוצאות חלקיות.
בדוגמה הבאה מוסבר איך מטמיעים סטרימינג באמצעות השיטה streamGenerateContent
כדי ליצור טקסט מבקשת קלט של טקסט בלבד.
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=${GOOGLE_API_KEY}" \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'
יצירת צ'אט אינטראקטיבי
באמצעות Gemini SDK אפשר לאסוף כמה סיבובים של שאלות ותשובות, כדי לאפשר למשתמשים להתקדם בהדרגה לקבלת תשובות או לקבל עזרה בבעיות שמכילות כמה חלקים. התכונה הזו של ה-SDK מספקת ממשק למעקב אחרי היסטוריית השיחות, אבל מאחורי הקלעים היא משתמשת באותה שיטה generateContent
כדי ליצור את התשובה.
בדוגמה הבאה מוצגת הטמעה בסיסית של צ'אט:
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{"role":"user",
"parts":[{
"text": "Hello"}]},
{"role": "model",
"parts":[{
"text": "Great to meet you. What would you like to know?"}]},
{"role":"user",
"parts":[{
"text": "I have two dogs in my house. How many paws are in my house?"}]},
]
}' 2> /dev/null | grep "text"
הפעלת סטרימינג של צ'אט
אפשר גם להשתמש בשידור חי עם צ'אט, כמו בדוגמה הבאה:
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{"role":"user",
"parts":[{
"text": "Hello"}]},
{"role": "model",
"parts":[{
"text": "Great to meet you. What would you like to know?"}]},
{"role":"user",
"parts":[{
"text": "I have two dogs in my house. How many paws are in my house?"}]},
]
}' 2> /dev/null | grep "text"
הגדרת יצירת טקסט
כל הנחיה ששולחים למודל כוללת פרמטרים ששולטים באופן שבו המודל יוצר תשובות. אפשר להשתמש ב-GenerationConfig
כדי להגדיר את הפרמטרים האלה. אם לא תגדירו את הפרמטרים, המודל ישתמש באפשרויות ברירת המחדל, שעשויות להשתנות בהתאם למודל.
בדוגמה הבאה מוסבר איך להגדיר כמה מהאפשרויות הזמינות.
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Write a story about a magic backpack."}
]
}],
"safetySettings": [
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_ONLY_HIGH"
}
],
"generationConfig": {
"stopSequences": [
"Title"
],
"temperature": 1.0,
"maxOutputTokens": 800,
"topP": 0.8,
"topK": 10
}
}' 2> /dev/null | grep "text"
stopSequences
מציין את קבוצת רצפי התווים (עד 5) שיעצור את יצירת הפלט. אם יצוין, ה-API יפסיק עם ההופעה הראשונה של stop_sequence
. רצף העצירות לא ייכלל בתשובה.
temperature
קובע את מידת האקראיות של הפלט. מומלץ להשתמש בערכים גבוהים יותר כדי לקבל תגובות יצירתיות יותר, ובערכים נמוכים יותר כדי לקבל תגובות גורליות יותר. הערכים יכולים לנוע בטווח [0.0, 2.0].
maxOutputTokens
מגדיר את המספר המקסימלי של אסימונים שאפשר לכלול במועמד.
topP
משנה את האופן שבו המודל בוחר אסימונים לפלט. האסימונים נבחרים מהסיכוי הגבוה ביותר לנמוך ביותר, עד שסכום ההסתברויות שלהם שווה לערך topP
. ערך ברירת המחדל של topP
הוא 0.95.
topK
משנה את האופן שבו המודל בוחר אסימונים לפלט. כשהערך של topK
הוא 1, המשמעות היא שהאסימון שנבחר הוא בעל ההסתברות הגבוהה ביותר מבין כל האסימונים במילון של המודל. לעומת זאת, כשהערך של topK
הוא 3, המשמעות היא שהאסימון הבא נבחר מתוך 3 האסימונים עם ההסתברות הגבוהה ביותר באמצעות הטמפרטורה. הטוקנים מסוננים עוד יותר על סמך topP
, והטוקן הסופי נבחר באמצעות דגימת טמפרטורה.
הוספת הוראות למערכת
הוראות המערכת מאפשרות לכם לקבוע את ההתנהגות של מודל על סמך הצרכים הספציפיים שלכם ותרחישי לדוגמה.
כשנותנים למערכת ההנחיות למודלים, מספקים למודל הקשר נוסף כדי שהוא יוכל להבין את המשימה, ליצור תשובות מותאמות אישית יותר ולפעול בהתאם להנחיות ספציפיות במהלך האינטראקציה המלאה של המשתמש עם המודל. אפשר גם לציין התנהגות ברמת המוצר על ידי הגדרת הוראות מערכת, בנפרד מההנחיות שמספקים משתמשי הקצה.
אפשר להגדיר הוראות מערכת כשמאתחלים את המודל:
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
"parts":
{ "text": "You are a cat. Your name is Neko."}},
"contents": {
"parts": {
"text": "Hello there"}}}'
לדוגמה אינטראקטיבית מקצה לקצה של שימוש בהוראות המערכת, אפשר לעיין במאמר הוראות מערכת ב-Colab.
המאמרים הבאים
עכשיו, אחרי שסיימתם לקרוא את ההסבר הבסיסי על Gemini API, כדאי לנסות:
- ניתוח תמונות: איך משתמשים בניתוח התמונות המובנה של Gemini כדי לעבד תמונות וסרטונים.
- ניתוח אודיו: איך משתמשים בניתוח האודיו המקורי של Gemini כדי לעבד קובצי אודיו.