במדריך הזה נסביר איך להתחיל להשתמש בשירות לכוונון של 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
קבלה ואבטחה של מפתח ה-API
כדי לקרוא ל-Gemini API, צריך מפתח API. אם עדיין אין לכם מפתח, תוכלו ליצור מפתח ב-Google AI Studio.
מומלץ מאוד לא להטמיע מפתח API במערכת בקרת הגרסאות.
מומלץ לאחסן את מפתח ה-API במאגר סודות כמו Secret Manager של Google Cloud.
במדריך הזה נניח שאתם ניגשים למפתח ה-API כמשתנה סביבה.
התקנת חבילת ה-SDK והגדרת מפתח ה-API
.ערכת ה-SDK של Python ל-Gemini API נכללת בחבילה google-genai
.
מתקינים את יחסי התלות באמצעות pip:
pip install -U google-genai
מוסיפים את מפתח ה-API למשתנה הסביבה
GOOGLE_API_KEY
:export GOOGLE_API_KEY="YOUR_KEY_HERE"
יוצרים 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 החדש.