יצירת טקסט באמצעות Gemini API

כשמספקים טקסט, תמונות, וידאו וקול כקלט, Gemini API יכול ליצור פלט טקסט.

במדריך הזה מוסבר איך ליצור טקסט באמצעות השיטות generateContent ו-streamGenerateContent. למידע נוסף על העבודה עם יכולות הראייה והאודיו של Gemini, תוכלו לעיין במדריכים בנושא ראייה ואודיו.

לפני שמתחילים: מגדירים את הפרויקט ומפתח ה-API

לפני שמפעילים את Gemini API, צריך להגדיר את הפרויקט ולהגדיר את מפתח ה-API.

יצירת טקסט מקלט טקסט בלבד

הדרך הפשוטה ביותר ליצור טקסט באמצעות Gemini API היא לספק למודל קלט יחיד של טקסט בלבד, כפי שמתואר בדוגמה הבאה:

import google.generativeai as genai

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.")
print(response.text)

במקרה כזה, ההנחיה ('כתוב סיפור על תיק גב קסום') לא כוללת דוגמאות פלט, הוראות מערכת או פרטי עיצוב. זוהי גישה של הנחיה ישירה (zero-shot). בתרחישי שימוש מסוימים, הנחיה חד-פעמית או לכמה הנחיות עשויה להניב פלט שמתאים יותר לציפיות של המשתמשים. במקרים מסוימים, כדאי גם לספק הוראות מערכת כדי לעזור למודל להבין את המשימה או לפעול לפי הנחיות ספציפיות.

יצירת טקסט ממידע שמוזן כטקסט ותמונה

Gemini API תומך בקלט רב-מודלי שמשלב טקסט עם קובצי מדיה. הדוגמה הבאה מראה איך ליצור טקסט ממידע קלט של טקסט ותמונה:

import google.generativeai as genai

import PIL.Image

model = genai.GenerativeModel("gemini-1.5-flash")
organ = PIL.Image.open(media / "organ.jpg")
response = model.generate_content(["Tell me about this instrument", organ])
print(response.text)

בדומה להנחיות בטקסט בלבד, הנחיות במגוון מישורים יכולות לכלול שיטות שונות ושיפורים שונים. בהתאם לפלט מהדוגמה הזו, יכול להיות שתרצו להוסיף שלבים להנחיה או להפוך את ההוראות לספציפיות יותר. למידע נוסף, ראו שיטות להצגת בקשה להעלאת קובץ.

יצירת מקור טקסט

כברירת מחדל, המודל מחזיר תשובה אחרי השלמת כל תהליך יצירת הטקסט. כדי לקבל אינטראקציות מהירות יותר, אפשר להימנע מהמתנה לתוצאה המלאה ולהשתמש בסטרימינג כדי לטפל בתוצאות חלקיות.

בדוגמה הבאה מוסבר איך מטמיעים סטרימינג באמצעות השיטה streamGenerateContent כדי ליצור טקסט מבקשת קלט של טקסט בלבד.

import google.generativeai as genai

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

יצירת צ'אט אינטראקטיבי

אתם יכולים להשתמש ב-Gemini API כדי ליצור חוויות צ'אט אינטראקטיביות למשתמשים שלכם. באמצעות תכונת הצ'אט של ה-API, אפשר לאסוף כמה סיבובים של שאלות ותשובות, וכך לאפשר למשתמשים להתקדם בהדרגה לקבלת תשובות או לקבל עזרה בבעיות שמחולקות לכמה חלקים. התכונה הזו מתאימה במיוחד לאפליקציות שדורשות תקשורת מתמשכת, כמו צ'אטבוטים, מורים אינטראקטיביים או עוזרי תמיכת לקוחות.

בדוגמה הבאה מוצגת הטמעה בסיסית של צ'אט:

import google.generativeai as genai

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.")
print(response.text)
response = chat.send_message("How many paws are in my house?")
print(response.text)

הפעלת סטרימינג של צ'אט

אפשר גם להשתמש בשידור חי עם צ'אט, כמו בדוגמה הבאה:

import google.generativeai as genai

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
response = chat.send_message("I have 2 dogs in my house.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message("How many paws are in my house?", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.history)

הגדרת יצירת טקסט

כל הנחיה ששולחים למודל כוללת פרמטרים ששולטים באופן שבו המודל יוצר תשובות. אפשר להשתמש ב-GenerationConfig כדי להגדיר את הפרמטרים האלה. אם לא תגדירו את הפרמטרים, המודל ישתמש באפשרויות ברירת המחדל, שעשויות להשתנות בהתאם למודל.

בדוגמה הבאה מוסבר איך להגדיר כמה מהאפשרויות הזמינות.

import google.generativeai as genai

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content(
    "Tell me a story about a magic backpack.",
    generation_config=genai.types.GenerationConfig(
        # Only one candidate for now.
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)

print(response.text)

candidateCount מציין את מספר התשובות שייווצרו ויוחזרו. בשלב זה, אפשר להגדיר את הערך הזה רק ל-1. אם לא תגדירו את הערך, הערך שמוגדר כברירת מחדל הוא 1.

stopSequences מציין את קבוצת רצפי התווים (עד 5) שיעצור את יצירת הפלט. אם יצוין, ה-API יפסיק עם ההופעה הראשונה של stop_sequence. רצף העצירות לא ייכלל בתשובה.

maxOutputTokens מגדיר את המספר המקסימלי של אסימונים שאפשר לכלול במועמד.

temperature קובע את מידת הרנדומיזציה של הפלט. מומלץ להשתמש בערכים גבוהים יותר כדי לקבל תגובות יצירתיות יותר, ובערכים נמוכים יותר כדי לקבל תגובות גורליות יותר. הערכים יכולים לנוע בטווח [0.0, 2.0].

אפשר גם להגדיר שיחות ספציפיות ל-generateContent:

response = model.generate_content(
    'Write a story about a magic backpack.',
    generation_config = genai.GenerationConfig(
        max_output_tokens=1000,
        temperature=0.1,
    )
)

ערכים שהוגדרו בקריאה הספציפית מבטלים את הערכים ב-constructor של המודל.

המאמרים הבאים

עכשיו, אחרי שסיימתם לקרוא את ההסבר הבסיסי על Gemini API, כדאי לנסות:

  • ניתוח תמונות: איך משתמשים בניתוח התמונות המובנה של Gemini כדי לעבד תמונות וסרטונים.
  • הוראות מערכת: הוראות המערכת מאפשרות לכם לקבוע את התנהגות המודל בהתאם לצרכים ולתרחישים הספציפיים שלכם.
  • ניתוח אודיו: איך משתמשים בניתוח האודיו המקורי של Gemini כדי לעבד קובצי אודיו.