Ce tutoriel vous aidera à vous familiariser avec le service de réglage de l'API Gemini à l'aide du SDK Python ou de l'API REST avec curl. Les exemples montrent comment régler le modèle de texte derrière le service de génération de texte de l'API Gemini.
![]() |
![]() |
![]() |
Limites
Avant d'ajuster un modèle, vous devez prendre en compte les limites suivantes:
Ensembles de données d'affinage
Les ensembles de données de réglage fin pour Gemini 1.5 Flash sont soumis aux limites suivantes:
- La taille d'entrée maximale par exemple est de 40 000 caractères.
- La taille maximale de sortie par exemple est de 5 000 caractères.
- Seuls les exemples de paires d'entrée-sortie sont acceptés. Les conversations multitours de type chat ne sont pas acceptées.
Modèles réglés
Les modèles optimisés présentent les limites suivantes:
- La limite d'entrée d'un modèle Flash Gemini 1.5 affiné est de 40 000 caractères.
- Le mode JSON n'est pas compatible avec les modèles optimisés.
- Seule la saisie de texte est acceptée.
Avant de commencer: configurez votre projet et votre clé API
Avant d'appeler l'API Gemini, vous devez configurer votre projet et votre clé API.
Répertorier les modèles réglés
Vous pouvez vérifier vos modèles affinés existants à l'aide de la méthode 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=$GOOGLE_API_KEY \
-H "Content-Type: application/json" > tuned_models2.json
jq .tunedModels[].name < tuned_models.json
fi
Créer un modèle réglé
Pour créer un modèle affiné, vous devez transmettre votre ensemble de données au modèle dans la méthode tunedModels.create
.
Dans cet exemple, vous allez optimiser un modèle pour générer le prochain nombre de la séquence. Par exemple, si l'entrée est 1
, le modèle doit renvoyer 2
. Si l'entrée est one hundred
, le résultat doit être one hundred one
.
curl -X POST "https://generativelanguage.googleapis.com/v1beta/tunedModels?key=$GOOGLE_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=$GOOGLE_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=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' > tuned_model.json
cat tuned_model.json | jq ".state"
Les valeurs optimales pour le nombre d'époques, la taille de lot et le taux d'apprentissage dépendent de votre ensemble de données et des autres contraintes de votre cas d'utilisation. Pour en savoir plus sur ces valeurs, consultez les sections Paramètres de réglage avancés et Hyperparamètres.
Votre modèle ajusté est immédiatement ajouté à la liste des modèles ajustés, mais son état est défini sur "création" pendant l'ajustement.
Essayer le modèle
Vous pouvez utiliser la méthode tunedModels.generateContent
et spécifier le nom du modèle optimisé pour tester ses performances.
curl -X POST https://generativelanguage.googleapis.com/v1beta/$modelname:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-d '{
"contents": [{
"parts": [{
"text": "LXIII"
}]
}]
}' 2> /dev/null
Supprimer le modèle
Vous pouvez nettoyer la liste des modèles optimisés en supprimant ceux dont vous n'avez plus besoin.
Utilisez la méthode tunedModels.delete
pour supprimer un modèle. Si vous avez annulé des tâches de réglage, vous pouvez les supprimer, car leurs performances peuvent être imprévisibles.
curl -X DELETE https://generativelanguage.googleapis.com/v1beta/${modelname}?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json'