این آموزش به شما کمک می کند تا با استفاده از Python SDK یا REST API با استفاده از curl شروع به کار با سرویس تنظیم API Gemini کنید. مثالها نحوه تنظیم مدل متنی در پشت سرویس تولید متن Gemini API را نشان میدهند.
قبل از شروع
قبل از تماس با Gemini API، مطمئن شوید که SDK مورد نظر خود را نصب کرده اید و یک کلید Gemini API پیکربندی شده و آماده استفاده است.
محدودیت ها
قبل از تنظیم یک مدل، باید از محدودیت های زیر آگاه باشید:
تنظیم دقیق مجموعه داده ها
مجموعه داده های تنظیم دقیق برای Gemini 1.5 Flash دارای محدودیت های زیر است:
- حداکثر اندازه ورودی در هر نمونه 40000 کاراکتر است.
- حداکثر اندازه خروجی در هر نمونه 5000 کاراکتر است.
- فقط نمونه های جفت ورودی-خروجی پشتیبانی می شوند. مکالمات چند نوبتی به سبک چت پشتیبانی نمی شود.
مدل های تیون شده
مدل های تنظیم شده دارای محدودیت های زیر هستند:
- محدودیت ورودی یک مدل فلش جمینی 1.5 تنظیم شده 40000 کاراکتر است.
- حالت JSON با مدل های تنظیم شده پشتیبانی نمی شود.
- فقط ورودی متن پشتیبانی می شود.
مدل های تنظیم شده را لیست کنید
می توانید مدل های تنظیم شده موجود خود را با روش tunedModels.list
بررسی کنید.
# Sending a page_size is optional
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${access_token}" \
-H "x-goog-user-project: ${project_id}" > tuned_models.json
jq .tunedModels[].name < tuned_models.json
# Send the nextPageToken to get the next page.
page_token=$(jq .nextPageToken < tuned_models.json | tr -d '"')
if [[ "$page_token" != "null"" ]]; then
curl -X GET https://generativelanguage.googleapis.com/v1beta/tunedModels?page_size=5\&page_token=${page_token}?key=$GEMINI_API_KEY \
-H "Content-Type: application/json" > tuned_models2.json
jq .tunedModels[].name < tuned_models.json
fi
یک مدل تنظیم شده ایجاد کنید
برای ایجاد یک مدل تنظیم شده، باید مجموعه داده خود را به مدل در متد tunedModels.create
ارسال کنید.
برای این مثال، شما یک مدل را برای تولید عدد بعدی در دنباله تنظیم می کنید. به عنوان مثال، اگر ورودی 1
باشد، مدل باید خروجی 2
داشته باشد. اگر ورودی one hundred
باشد، خروجی باید one hundred one
باشد.
curl -X POST "https://generativelanguage.googleapis.com/v1beta/tunedModels?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '
{
"display_name": "number generator model",
"base_model": "models/gemini-1.5-flash-001-tuning",
"tuning_task": {
"hyperparameters": {
"batch_size": 2,
"learning_rate": 0.001,
"epoch_count":5,
},
"training_data": {
"examples": {
"examples": [
{
"text_input": "1",
"output": "2",
},{
"text_input": "3",
"output": "4",
},{
"text_input": "-3",
"output": "-2",
},{
"text_input": "twenty two",
"output": "twenty three",
},{
"text_input": "two hundred",
"output": "two hundred one",
},{
"text_input": "ninety nine",
"output": "one hundred",
},{
"text_input": "8",
"output": "9",
},{
"text_input": "-98",
"output": "-97",
},{
"text_input": "1,000",
"output": "1,001",
},{
"text_input": "10,100,000",
"output": "10,100,001",
},{
"text_input": "thirteen",
"output": "fourteen",
},{
"text_input": "eighty",
"output": "eighty one",
},{
"text_input": "one",
"output": "two",
},{
"text_input": "three",
"output": "four",
},{
"text_input": "seven",
"output": "eight",
}
]
}
}
}
}' | tee tunemodel.json
# Check the operation for status updates during training.
# Note: you can only check the operation on v1/
operation=$(cat tunemodel.json | jq ".name" | tr -d '"')
tuning_done=false
while [[ "$tuning_done" != "true" ]];
do
sleep 5
curl -X GET "https://generativelanguage.googleapis.com/v1/${operation}?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
2> /dev/null > tuning_operation.json
complete=$(jq .metadata.completedPercent < tuning_operation.json)
tput cuu1
tput el
echo "Tuning...${complete}%"
tuning_done=$(jq .done < tuning_operation.json)
done
# Or get the TunedModel and check it's state. The model is ready to use if the state is active.
modelname=$(cat tunemodel.json | jq ".metadata.tunedModel" | tr -d '"')
curl -X GET https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GEMINI_API_KEY \
-H 'Content-Type: application/json' > tuned_model.json
cat tuned_model.json | jq ".state"
مقادیر بهینه برای تعداد دوره، اندازه دسته و نرخ یادگیری به مجموعه داده شما و سایر محدودیتهای مورد استفاده شما بستگی دارد. برای کسب اطلاعات بیشتر در مورد این مقادیر، تنظیمات تنظیم پیشرفته و Hyperparameters را ببینید.
مدل تیون شده شما فوراً به لیست مدل های تنظیم شده اضافه می شود، اما حالت آن بر روی "ایجاد" تنظیم می شود در حالی که مدل تنظیم می شود.
مدل را امتحان کنید
می توانید از روش tunedModels.generateContent
استفاده کنید و نام مدل تنظیم شده را برای تست عملکرد آن مشخص کنید.
curl -X POST https://generativelanguage.googleapis.com/v1beta/$modelname:generateContent?key=$GEMINI_API_KEY \
-H 'Content-Type: application/json' \
-d '{
"contents": [{
"parts": [{
"text": "LXIII"
}]
}]
}' 2> /dev/null
مدل را حذف کنید
میتوانید با حذف مدلهایی که دیگر نیازی ندارید، فهرست مدلهای تنظیمشده خود را پاک کنید. برای حذف یک مدل از روش tunedModels.delete
استفاده کنید. اگر کار تنظیم را لغو کردید، ممکن است بخواهید آنها را حذف کنید زیرا ممکن است عملکرد آنها غیرقابل پیشبینی باشد.
curl -X DELETE https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GEMINI_API_KEY \
-H 'Content-Type: application/json'