מדריך לכוונון עדין

במדריך הזה נסביר איך להתחיל להשתמש בשירות לכוונון של Gemini API באמצעות ה-SDK ל-Python או באמצעות ה-API ל-REST באמצעות curl. בדוגמאות מוסבר איך לשפר את מודל הטקסט שמאחורי שירות היצירה של טקסט ב-Gemini API.

מגבלות

לפני שמכווננים מודל, חשוב לדעת על המגבלות הבאות:

כוונון עדין של מערכי נתונים

כשמשנים את מערכי הנתונים של Gemini 1.5 Flash, יש מגבלות הבאות:

  • הגודל המקסימלי של קלט לכל דוגמה הוא 40,000 תווים.
  • הגודל המקסימלי של הפלט לכל דוגמה הוא 5,000 תווים.
  • יש תמיכה רק בדוגמאות של זוגות קלט-פלט. אין תמיכה בשיחות בסגנון צ'אט עם כמה תשובות.

מודלים מותאמים

למדדים מותאמים יש את המגבלות הבאות:

  • מגבלת הקלט של מודל Gemini 1.5 Flash מכוונן היא 40,000 תווים.
  • אין תמיכה במצב JSON עם מודלים מותאמים.
  • יש תמיכה רק בהזנת טקסט.

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

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

קבלה ואבטחה של מפתח ה-API

כדי לקרוא ל-Gemini API, צריך מפתח API. אם עדיין אין לכם מפתח, תוכלו ליצור מפתח ב-Google AI Studio.

קבלת מפתח API

מומלץ מאוד לא להטמיע מפתח API במערכת בקרת הגרסאות.

מומלץ לאחסן את מפתח ה-API במאגר סודות כמו Secret Manager של Google Cloud.

במדריך הזה נניח שאתם ניגשים למפתח ה-API כמשתנה סביבה.

התקנת חבילת ה-SDK והגדרת מפתח ה-API

.

ערכת ה-SDK של Python ל-Gemini API נכללת בחבילה google-genai.

  1. מתקינים את יחסי התלות באמצעות pip:

    pip install -U google-genai
    
  2. מוסיפים את מפתח ה-API למשתנה הסביבה GOOGLE_API_KEY:

    export GOOGLE_API_KEY="YOUR_KEY_HERE"
    
  3. יוצרים API Client, והוא יאסוף את המפתח מהסביבה:

    from google import genai
    
    client = genai.Client()
    

הצגת רשימה של מודלים שעברו כוונון

אפשר לבדוק את המודלים המכווננים הקיימים באמצעות השיטה tunedModels.list.

from google import genai
from google.genai import types
client = genai.Client() # Get the key from the GOOGLE_API_KEY env variable

for model_info in client.models.list():
    print(model_info.name)

יצירת מודל שעבר כוונון

כדי ליצור מודל שעבר כוונון, צריך להעביר את מערך הנתונים למודל בשיטה tunedModels.create.

בדוגמה הזו, תכווננו מודל כדי ליצור את המספר הבא ברצף. לדוגמה, אם הקלט הוא 1, הפלט של המודל אמור להיות 2. אם הקלט הוא one hundred, הפלט אמור להיות one hundred one.

# create tuning model
training_dataset =  [
    ["1", "2"],
    ["3", "4"],
    ["-3", "-2"],
    ["twenty two", "twenty three"],
    ["two hundred", "two hundred one"],
    ["ninety nine", "one hundred"],
    ["8", "9"],
    ["-98", "-97"],
    ["1,000", "1,001"],
    ["10,100,000", "10,100,001"],
    ["thirteen", "fourteen"],
    ["eighty", "eighty one"],
    ["one", "two"],
    ["three", "four"],
    ["seven", "eight"],
]
training_dataset=types.TuningDataset(
        examples=[
            types.TuningExample(
                text_input=i,
                output=o,
            )
            for i,o in training_dataset
        ],
    )
tuning_job = client.tunings.tune(
    base_model='models/gemini-1.5-flash-001-tuning',
    training_dataset=training_dataset,
    config=types.CreateTuningJobConfig(
        epoch_count= 5,
        batch_size=4,
        learning_rate=0.001,
        tuned_model_display_name="test tuned model"
    )
)

# generate content with the tuned model
response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III',
)

print(response.text)

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

ניסיון של המודל

כדי לבדוק את הביצועים של המודל המכוונן, אפשר להשתמש ב-method‏ tunedModels.generateContent ולציין את השם שלו.

response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III'
)

לא מיושם

חלק מהתכונות (דיווח על התקדמות, עדכון התיאור ומחיקה של מודלים מותאמים) עדיין לא יושמו ב-SDK החדש.