Format de discussion Google Gemini (générer du contenu)
Documentation officielle
📝Présentation
L'API Google Gemini prend en charge la génération de contenu à l'aide d'images, d'audio, de code, d'outils, etc. Étant donné l'entrée, GenerateContentRequest génère des réponses de modèle. Prend en charge la génération de texte, la compréhension visuelle, le traitement audio, le contexte long, l'exécution de code, le schéma JSON, l'appel de fonction et de nombreuses autres fonctionnalités.
💡 Exemples de requêtes
Chat textuel de base ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[{"text": "Write a story about a magic backpack."}]
}]
}' 2> /dev/nullChat d'analyse d'images ✅
# Use temporary file to save base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"
# Use temporary file to save JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT
cat > "$TEMP_JSON" `<< EOF
{
"contents": [{
"parts":[
{"text": "Tell me about this instrument"},
{
"inline_data": {
"mime_type":"image/jpeg",
"data": "$(cat "$TEMP_B64")"
}
}
]
}]
}
EOF
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d "@$TEMP_JSON" 2>` /dev/nullAppel de fonction ✅
cat > tools.json `<< EOF
{
"function_declarations": [
{
"name": "enable_lights",
"description": "Turn on the lighting system."
},
{
"name": "set_light_color",
"description": "Set the light color. Lights must be enabled for this to work.",
"parameters": {
"type": "object",
"properties": {
"rgb_hex": {
"type": "string",
"description": "The light color as a 6-digit hex string, e.g. ff0000 for red."
}
},
"required": [
"rgb_hex"
]
}
},
{
"name": "stop_lights",
"description": "Turn off the lighting system."
}
]
}
EOF
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-d @<(echo '
{
"system_instruction": {
"parts": {
"text": "You are a helpful lighting system bot. You can turn lights on and off, and you can set the color. Do not perform any other tasks."
}
},
"tools": ['$(cat tools.json)'],
"tool_config": {
"function_calling_config": {"mode": "auto"}
},
"contents": {
"role": "user",
"parts": {
"text": "Turn on the lights please."
}
}
}
') 2>`/dev/null |sed -n '/"content"/,/"finishReason"/p'Réponse de schéma JSON ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"contents": [{
"parts":[
{"text": "List 5 popular cookie recipes"}
]
}],
"generationConfig": {
"response_mime_type": "application/json",
"response_schema": {
"type": "ARRAY",
"items": {
"type": "OBJECT",
"properties": {
"recipe_name": {"type":"STRING"},
}
}
}
}
}' 2> /dev/null | headTraitement audio 🟡
Limites de téléchargement de fichiers
Prend uniquement en charge le téléchargement d'audio via inline_data au format base64, ne prend pas en charge
prend en charge file_data.file_uri ou File API.
# Use File API to upload audio data to API request
# Use base64 inline_data to upload audio data to API request
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
AUDIO_B64=$(base64 $B64FLAGS "$AUDIO_PATH")
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [
{"text": "Please describe this audio file."},
{"inline_data": {"mime_type": "audio/mpeg", "data": "'$AUDIO_B64'"}}
]
}]
}' 2> /dev/null | jq ".candidates[].content.parts[].text"Traitement vidéo 🟡
Limites de téléchargement de fichiers
Prend uniquement en charge le téléchargement de vidéos via inline_data au format base64, non
prend en charge file_data.file_uri ou File API.
# Use File API to upload video data to API request
# Use base64 inline_data to upload video data to API request
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
VIDEO_B64=$(base64 $B64FLAGS "$VIDEO_PATH")
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [
{"text": "Transcribe the audio from this video and provide visual descriptions."},
{"inline_data": {"mime_type": "video/mp4", "data": "'$VIDEO_B64'"}}
]
}]
}' 2> /dev/null | jq ".candidates[].content.parts[].text"Traitement PDF 🟡
Limites de téléchargement de fichiers
Les fichiers PDF ne peuvent être téléchargés qu'en base64 via inline_data. file_data.file_uri
et l'API File ne sont pas pris en charge.
MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
# Upload a PDF to the API request with base64 inline_data
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi
PDF_B64=$(base64 $B64FLAGS "$PDF_PATH")
echo $MIME_TYPE
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [
{"text": "Can you add a few more lines to this poem?"},
{"inline_data": {"mime_type": "application/pdf", "data": "'$PDF_B64'"}}
]
}]
}' 2> /dev/null | jq ".candidates[].content.parts[].text"Boîte de dialogue de discussion ✅
curl https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{"role":"user",
"parts":[{
"text": "Hello"}]},
{"role": "model",
"parts":[{
"text": "Great to meet you. What would you like to know?"}]},
{"role":"user",
"parts":[{
"text": "I have two dogs in my house. How many paws are in my house?"}]},
]
}' 2> /dev/null | grep "text"Réponse en streaming ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$API_KEY" \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{
"contents": [{
"parts": [{"text": "Write a story about a magic backpack"}]
}]
}'Exécution de code ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts": [{"text": "Calculate the Fibonacci Sequence10item"}]
}],
"tools": [{
"codeExecution": {}
}]
}'Configuration de génération ✅
curl https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Explain how AI works"}
]
}],
"generationConfig": {
"stopSequences": [
"Title"
],
"temperature": 1.0,
"maxOutputTokens": 800,
"topP": 0.8,
"topK": 10
}
}' 2> /dev/null | grep "text"Paramètres de sécurité ✅
echo '{
"safetySettings": [
{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
{"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
],
"contents": [{
"parts":[{
"text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d @request.json 2> /dev/nullInstruction système ✅
curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
"parts":
{ "text": "You are a cat. Your name is Neko."}},
"contents": {
"parts": {
"text": "Hello there"}}}'📮 Demande
Points de terminaison
Générer du contenu
POST https://88api.ai/v1beta/{model=models/*}:generateContentStream Générer du contenu
POST https://88api.ai/v1beta/{model=models/*}:streamGenerateContentMéthode d'authentification
Incluez la clé API dans l'URL de la requête:
?key=$API_KEYOù $API_KEY est votre clé API Google AI.
Paramètres du chemin
model
- Type : chaîne
- Obligatoire : oui
Le nom du modèle pour lequel générer des complétions.
Format : models/{model}, par ex. models/gemini-2.0-flash
Paramètres du corps de la requête
contents
- Type: tableau
- Obligatoire : oui
Le contenu de la conversation en cours avec le modèle. Pour une requête à tour unique, il s’agit d’une instance unique. Pour les requêtes multitours de type chat, il s'agit d'un champ répété contenant l'historique de la conversation et la dernière requête.
Content object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
parts | tableau | oui | Parties de contenu ordonnées qui constituent un seul message |
role | chaîne | non | Le producteur du contenu dans la conversation. user, model, function ou tool |
Part object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
text | chaîne | non | Contenu textuel pur |
inlineData | objet | non | Données d'octets multimédia en ligne |
fileData | objet | non | Référence URI au fichier téléchargé |
functionCall | objet | non | Demande d'appel de fonction |
functionResponse | objet | non | Réponse à l'appel de fonction |
executableCode | objet | non | Code exécutable |
codeExecutionResult | objet | non | Résultat de l'exécution du code |
InlineData object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
mimeType | chaîne | oui | Type de média MIME |
data | chaîne | oui | Données multimédias codées en Base64 |
FileData object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
mimeType | chaîne | oui | Type de fichier MIME |
fileUri | chaîne | oui | URI du fichier |
tools
- Type: tableau
- Obligatoire : non
Liste des outils que le modèle peut utiliser pour générer la réponse suivante. Les outils pris en charge incluent les fonctions et l'exécution de code.
Tool object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
functionDeclarations | tableau | non | Liste facultative de déclarations de fonctions |
codeExecution | objet | non | Activer le modèle pour exécuter le code |
FunctionDeclaration object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
name | chaîne | oui | Nom de la fonction |
description | chaîne | non | Description de la fonction |
parameters | objet | non | Paramètres de fonction, au format JSON Schema |
FunctionCall object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
name | chaîne | oui | Nom de la fonction à appeler |
args | objet | non | Paires clé-valeur d'arguments de fonction |
FunctionResponse object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
name | chaîne | oui | Nom de la fonction appelée |
response | objet | oui | Données de réponse de l'appel de fonction |
ExecutableCode object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
language | énumération | oui | Langage de programmation du code |
code | chaîne | oui | Code à exécuter |
CodeExecutionResult object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
outcome | énumération | oui | Statut du résultat de l'exécution du code |
output | chaîne | non | Contenu de sortie de l'exécution du code |
CodeExecution object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
| Objet vide | - | Objet de configuration vide pour permettre l'exécution de code |
toolConfig
- Type : objet
- Obligatoire : non
Configuration des outils pour tous les outils spécifiés dans la demande.
ToolConfig object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
functionCallingConfig | objet | non | Configuration des appels de fonctions |
FunctionCallingConfig object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
mode | énumération | non | Spécifie le mode d'appel de fonction |
allowedFunctionNames | tableau | non | Liste des noms de fonctions pouvant être appelés |
FunctionCallingMode enum values:
MODE_UNSPECIFIED: Mode par défaut, le modèle décide s'il doit appeler une fonctionAUTO: le modèle décide automatiquement quand appeler une fonctionANY: Le modèle doit appeler une fonctionNONE: Le modèle ne peut pas appeler une fonction
safetySettings
- Type: tableau
- Obligatoire : non
Une liste d’instances SafetySetting pour filtrer le contenu dangereux.
SafetySetting object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
category | énumération | oui | Catégorie de sécurité |
threshold | énumération | oui | Seuil de blocage |
HarmCategory enum values:
HARM_CATEGORY_HARASSMENT: Contenu de harcèlementHARM_CATEGORY_HATE_SPEECH: Discours et contenus haineuxHARM_CATEGORY_SEXUALLY_EXPLICIT: Contenu explicitement sexuelHARM_CATEGORY_DANGEROUS_CONTENT: Contenu dangereuxHARM_CATEGORY_CIVIC_INTEGRITY: Contenu susceptible d'être utilisé pour porter atteinte à l'intégrité civique
HarmBlockThreshold enum values:
BLOCK_LOW_AND_ABOVE: Permet de publier des contenus ayant un score NÉGLIGIBLEBLOCK_MEDIUM_AND_ABOVE: Permet de publier des contenus avec un score NÉGLIGIBLE et FAIBLEBLOCK_ONLY_HIGH: Permet de publier des contenus présentant un niveau de risque NÉGLIGIBLE, FAIBLE et MOYENBLOCK_NONE: autorise tous les contenusOFF: désactive les filtres de sécurité
Complete HarmBlockThreshold enum values:
HARM_BLOCK_THRESHOLD_UNSPECIFIED: Seuil non renseignéBLOCK_LOW_AND_ABOVE: Bloque le contenu nuisible avec une probabilité moyenne ou supérieure, autorisant uniquement le contenu de niveau NÉGLIGIBLEBLOCK_MEDIUM_AND_ABOVE: Bloque le contenu nuisible avec une probabilité moyenne ou supérieure, autorisant le contenu de niveau NÉGLIGIBLE et FAIBLEBLOCK_ONLY_HIGH: bloque uniquement les contenus nuisibles avec une probabilité élevée, autorisant les contenus de niveau NÉGLIGIBLE, FAIBLE et MOYENBLOCK_NONE: Ne bloque aucun contenu, autorisant tous les niveauxOFF: désactive complètement les filtres de sécurité
systemInstruction
- Type : objet (Contenu)
- Obligatoire : non
Instruction système définie par le développeur. Actuellement, ne prend en charge que le texte.
generationConfig
- Type : objet
- Obligatoire : non
Options de génération de modèle et de configuration de sortie.
GenerationConfig object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
stopSequences | tableau | non | Ensemble de séquences de caractères pour arrêter la génération (jusqu'à 5) |
responseMimeType | chaîne | non | Type MIME du texte candidat généré |
responseSchema | objet | non | Schéma de sortie du texte candidat généré |
responseModalities | tableau | non | Modalités de réponse demandées |
candidateCount | entier | non | Nombre de réponses générées à retourner |
maxOutputTokens | entier | non | Nombre maximum de jetons dans les réponses des candidats |
temperature | numéro | non | Contrôle le caractère aléatoire de la sortie, plage [0.0, 2.0] |
topP | numéro | non | Limite supérieure de probabilité cumulée des jetons à prendre en compte lors de l'échantillonnage |
topK | entier | non | Nombre maximum de jetons à considérer lors de l'échantillonnage |
seed | entier | non | Graine utilisée pour le décodage |
presencePenalty | numéro | non | Pénalité de présence |
frequencyPenalty | numéro | non | Pénalité de fréquence |
responseLogprobs | booléen | non | S'il faut exporter les résultats des logprobs dans la réponse |
logprobs | entier | non | Nombre de problèmes de journalisation les plus importants renvoyés |
enableEnhancedCivicAnswers | booléen | non | Permet des réponses améliorées en matière de service civique |
speechConfig | objet | non | Configuration de la génération vocale |
thinkingConfig | objet | non | Configuration de la fonction de réflexion |
mediaResolution | énumération | non | Résolution multimédia spécifiée |
Supported MIME types:
text/plain: (par défaut) Sortie texteapplication/json: réponse JSONtext/x.enum: ENUM comme réponse sous forme de chaîne
Modality enum values:
TEXT: indique que le modèle doit renvoyer du texteIMAGE: indique que le modèle doit renvoyer l'imageAUDIO: Indique que le modèle doit renvoyer l'audio
Schema object properties:
| Propriété | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
type | énumération | oui | Type de données |
description | chaîne | non | Description du champ |
enum | tableau | non | Liste des valeurs d'énumération (lorsque le type est une chaîne) |
example | n'importe quel | non | Exemple de valeur |
nullable | booléen | non | Si cela peut être nul |
format | chaîne | non | Format de chaîne (par exemple, date, date-heure) |
items | objet | non | Schéma pour les éléments du tableau (lorsque le type est un tableau) |
properties | objet | non | Schéma des propriétés d'objet (lorsque le type est objet) |
required | tableau | non | Liste des noms de propriétés requis |
minimum | numéro | non | Valeur minimale pour les nombres |
maximum | numéro | non | Valeur maximale pour les nombres |
minItems | entier | non | Longueur minimale des tableaux |
maxItems | entier | non | Longueur maximale des tableaux |
minLength | entier | non | Longueur minimale des cordes |
maxLength | entier | non | Longueur maximale des chaînes |
Type enum values:
TYPE_UNSPECIFIED: Type non préciséSTRING: Type de chaîneNUMBER: Type de numéroINTEGER: Type entierBOOLEAN: Type booléenARRAY: Type de tableauOBJECT: Type d'objet
Supported programming languages (ExecutableCode):
LANGUAGE_UNSPECIFIED: Langue non préciséePYTHON: langage de programmation Python
Code execution result enum (Outcome):
OUTCOME_UNSPECIFIED: Résultat non préciséOUTCOME_OK: exécution du code réussieOUTCOME_FAILED: échec de l'exécution du codeOUTCOME_DEADLINE_EXCEEDED: l'exécution du code a expiré
cachedContent
- Type : chaîne
- Obligatoire : non
Nom du contenu mis en cache, utilisé comme contexte pour fournir des prédictions. Format: cachedContents/{cachedContent}
📥 Réponse
Générer une réponse de contenu
Réponse à partir de modèles prenant en charge plusieurs réponses candidates. Le système rapporte les évaluations de sécurité et le filtrage du contenu pour l'invite et chaque candidat.
candidates
- Type: tableau
- Description: Liste des réponses candidates du modèle
Candidate object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
content | objet | Contenu généré renvoyé par le modèle |
finishReason | énumération | Raison pour laquelle le modèle cesse de générer des jetons |
safetyRatings | tableau | Liste des notes de sécurité pour la réponse du candidat |
citationMetadata | objet | Informations de référence pour le candidat généré |
tokenCount | entier | Nombre de jetons pour ce candidat |
groundingAttributions | tableau | Informations sur les sources qui ont contribué à générer une réponse fondée |
groundingMetadata | objet | Métadonnées de référence pour l'objet candidat |
avgLogprobs | numéro | Score de probabilité logarithmique moyen pour le candidat |
logprobsResult | objet | Enregistrer les scores de probabilité pour les jetons de réponse et les jetons précédents |
urlRetrievalMetadata | objet | Métadonnées liées à l'outil de récupération de contexte d'URL |
urlContextMetadata | objet | Métadonnées liées à l'outil de récupération de contexte d'URL |
index | entier | Index du candidat dans la liste des candidats en réponse |
FinishReason enum values:
STOP: Point d'arrêt naturel ou séquence d'arrêt prévue pour le modèleMAX_TOKENS: Limite maximale de tokens spécifiée dans la requête atteinteSAFETY: Répondre au contenu du candidat marqué pour des raisons de sécuritéRECITATION: Répondre au contenu du candidat marqué pour des raisons de récitationLANGUAGE: Répondez au contenu du candidat marqué pour l'utilisation d'une langue non prise en chargeOTHER: Raison inconnueBLOCKLIST: Opération de génération de token arrêtée car le contenu contient des mots interditsPROHIBITED_CONTENT: opération de génération de jeton arrêtée car le contenu peut contenir du contenu interditSPII: opération de génération de jeton arrêtée car le contenu peut contenir des informations personnelles sensiblesMALFORMED_FUNCTION_CALL: Appel de fonction généré par le modèle invalideIMAGE_SAFETY: la génération du jeton s'est arrêtée car l'image générée a violé les règles de sécurité
promptFeedback
- Type : objet
- Description: commentaires rapides liés au filtrage de contenu
PromptFeedback object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
blockReason | énumération | Raison du blocage de l'invite |
safetyRatings | tableau | Cote de sécurité pour l'invite |
BlockReason enum values:
BLOCK_REASON_UNSPECIFIED: Valeur par défaut, cette valeur n'est pas utiliséeSAFETY: invite du système bloquée pour des raisons de sécuritéOTHER: Invite bloquée pour des raisons inconnuesBLOCKLIST: le système a bloqué cette invite car elle contenait des termes dans la liste de blocagePROHIBITED_CONTENT: le système a bloqué cette invite car elle contenait du contenu interditIMAGE_SAFETY: Image du candidat bloquée car elle générait du contenu dangereux
usageMetadata
- Type : objet
- Description: Métadonnées sur l'utilisation du jeton pour la demande de génération
UsageMetadata object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
promptTokenCount | entier | Nombre de jetons dans l'invite |
cachedContentTokenCount | entier | Nombre de jetons dans la partie mise en cache de l'invite |
candidatesTokenCount | entier | Nombre total de jetons dans toutes les réponses de candidats générées |
totalTokenCount | entier | Nombre total de jetons pour la demande de génération |
toolUsePromptTokenCount | entier | Nombre de jetons dans l'invite d'utilisation de l'outil |
thoughtsTokenCount | entier | Nombre de jetons pour les pensées du modèle de pensée |
promptTokensDetails | tableau | Liste des modalités traitées dans la saisie de la demande |
candidatesTokensDetails | tableau | Liste des modalités renvoyées dans la réponse |
cacheTokensDetails | tableau | Liste des modalités dans le contenu mis en cache de l'entrée de la requête |
toolUsePromptTokensDetails | tableau | Liste des modalités traitées pour l'utilisation de l'outil dans la saisie de la demande |
modelVersion
- Type : chaîne
- Description: Version du modèle utilisée pour générer la réponse
responseId
- Type : chaîne
- Description: ID pour chaque réponse
Exemple de réponse complète
{
"candidates": [
{
"content": {
"parts": [
{
"text": "Hello!I am Gemini,one by Google Developed artificial intelligence assistant。I can help you answer your questions、provide information、Assistance with writing、Various tasks such as coding and programming。Please tell me what I can do for you!"
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"probability": "NEGLIGIBLE",
"blocked": false
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE",
"blocked": false
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"probability": "NEGLIGIBLE",
"blocked": false
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"probability": "NEGLIGIBLE",
"blocked": false
}
],
"tokenCount": 47
}
],
"promptFeedback": {
"safetyRatings": [
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"probability": "NEGLIGIBLE"
},
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"probability": "NEGLIGIBLE"
}
]
},
"usageMetadata": {
"promptTokenCount": 4,
"candidatesTokenCount": 47,
"totalTokenCount": 51,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 4
}
],
"candidatesTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 47
}
]
},
"modelVersion": "gemini-2.0-flash",
"responseId": "response-12345"
}🔧 Fonctionnalités avancées
Évaluations de sécurité
SafetyRating object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
category | énumération | Catégorie de cette note |
probability | énumération | Probabilité nuisible pour ce contenu |
blocked | booléen | Si ce contenu a été bloqué en raison de cette note |
HarmProbability enum values:
NEGLIGIBLE: Probabilité nocive négligeableLOW: Probabilité nocive faibleMEDIUM: Probabilité moyenne nociveHIGH: Probabilité nocive élevée
Métadonnées des citations
CitationMetadata object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
citationSources | tableau | Références sources pour des réponses spécifiques |
CitationSource object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
startIndex | entier | Index de début du segment de réponse attribué à cette source |
endIndex | entier | Index de fin de l'attribution (exclusif) |
uri | chaîne | URI attribué à la partie texte de cette source |
license | chaîne | Licence du projet GitHub attribuée au fragment source |
Exécution de code
Lorsque les outils d'exécution de code sont activés, le modèle peut générer et exécuter du code pour résoudre des problèmes.
Code execution example response:
{
"candidates": [
{
"content": {
"parts": [
{
"text": "Let me calculate the Fibonacci sequence10item:"
},
{
"executableCode": {
"language": "PYTHON",
"code": "def fibonacci(n):\n if n <= 1:\n return n\n else:\n return fibonacci(n-1) + fibonacci(n-2)\n\nresult = fibonacci(10)\nprint(f'No.10The term Fibonacci number is: {result}')"
}
},
{
"codeExecutionResult": {
"outcome": "OK",
"output": "No.10The term Fibonacci number is: 55"
}
},
{
"text": "So the Fibonacci sequence number10The item is55。"
}
],
"role": "model"
},
"finishReason": "STOP"
}
]
}Mise à la terre
GroundingMetadata object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
groundingChunks | tableau | Liste des documents de référence à l'appui extraits de sources de mise à la terre spécifiées |
groundingSupports | tableau | Liste de support de mise à la terre |
webSearchQueries | tableau | Requêtes de recherche sur le Web pour les recherches Web ultérieures |
searchEntryPoint | objet | Point d'entrée de recherche Google pour les recherches Web ultérieures |
retrievalMetadata | objet | Métadonnées liées à la récupération dans le processus de référence |
GroundingAttribution object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
sourceId | objet | Identifiant de la source ayant contribué à cette attribution |
content | objet | Contenu de la source ayant contribué à cette attribution |
AttributionSourceId object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
groundingPassage | objet | Identifiant du paragraphe incorporé |
semanticRetrieverChunk | objet | Identifiant du Chunk extrait par Semantic Retriever |
GroundingPassageId object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
passageId | chaîne | ID du paragraphe correspondant à GroundingPassage.id de GenerateAnswerRequest |
partIndex | entier | Index de la pièce dans GroundingPassage.content |
SemanticRetrieverChunk object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
source | chaîne | Nom de la source correspondant à SemanticRetrieverConfig.source de la requête |
chunk | chaîne | Nom du Chunk contenant le texte attribué |
SearchEntryPoint object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
renderedContent | chaîne | Segment de code de contenu Web intégrable dans une page Web ou une application WebView |
sdkBlob | chaîne | JSON codé en base64, représentant un tableau de termes de recherche et de tuples d'URL de recherche |
Segment object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
partIndex | entier | Index de l'objet Part au sein de son objet Content parent |
startIndex | entier | Index de début de la partie donnée en octets |
endIndex | entier | Index de fin du morceau donné en octets |
text | chaîne | Texte correspondant au fragment dans la réponse |
RetrievalMetadata object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
googleSearchDynamicRetrievalScore | numéro | Score de probabilité des informations issues de la recherche Google aidant à répondre à la question, plage [0,1] |
GroundingChunk object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
web | objet | Morceau de mise à la terre du Web |
Web object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
uri | chaîne | Référence URI pour le morceau |
title | chaîne | Titre du bloc de données |
GroundingSupport object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
groundingChunkIndices | tableau | Liste d'index, utilisée pour spécifier les citations liées aux revendications de droit d'auteur |
confidenceScores | tableau | Scores de confiance pour les documents de référence justificatifs, plage de 0 à 1 |
segment | objet | Segment de contenu auquel appartient cette demande d'assistance |
Traitement multimodal
L'API Gemini prend en charge le traitement de plusieurs modalités d'entrée et de sortie:
Supported input modalities:
TEXT: Texte purIMAGE: Images (JPEG, PNG, WebP, HEIC, HEIF)AUDIO: Audio (WAV, MP3, AIFF, AAC, OGG, FLAC)VIDEO: Vidéos (MP4, MPEG, MOV, AVI, FLV, MPG, WEBM, WMV, 3GPP)DOCUMENT: Documents (PDF)
ModalityTokenCount object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
modality | énumération | Modalité associée à ce nombre de jetons |
tokenCount | entier | Nombre de jetons |
MediaResolution enum values:
MEDIA_RESOLUTION_LOW: Basse résolution (64 jetons)MEDIA_RESOLUTION_MEDIUM: Résolution moyenne (256 jetons)MEDIA_RESOLUTION_HIGH: Haute résolution (256 jetons pour la mise à l'échelle et le recadrage)
Fonction de réflexion
ThinkingConfig object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
includeThoughts | booléen | Faut-il inclure du contenu de réflexion dans la réponse |
thinkingBudget | entier | Nombre de jetons d'idée que le modèle doit générer |
Génération vocale
SpeechConfig object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
voiceConfig | objet | Configuration pour une sortie vocale unique |
multiSpeakerVoiceConfig | objet | Configuration pour les paramètres multi-enceintes |
languageCode | chaîne | Code de langue pour la synthèse vocale |
VoiceConfig object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
prebuiltVoiceConfig | objet | Configuration pour la voix prédéfinie à utiliser |
PrebuiltVoiceConfig object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
voiceName | chaîne | Nom de la voix prédéfinie à utiliser |
MultiSpeakerVoiceConfig object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
speakerVoiceConfigs | tableau | Toutes les voix de haut-parleur activées |
SpeakerVoiceConfig object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
speaker | chaîne | Nom de l'orateur à utiliser |
voiceConfig | objet | Configuration de la voix à utiliser |
Supported language codes:
zh-CN: chinois (simplifié)en-US: anglais (États-Unis)ja-JP: japonaisko-KR: coréenfr-FR: françaisde-DE: allemandes-ES: espagnolpt-BR: portugais (Brésil)hi-IN: hindiar-XA: arabeit-IT: italientr-TR: turcvi-VN: vietnamienth-TH: thaïlandaisru-RU: russepl-PL: Polonaisnl-NL: néerlandais
Résultats des problèmes de journalisation
LogprobsResult object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
topCandidates | tableau | Tableau de candidats triés par log de probabilité par ordre décroissant |
chosenCandidates | tableau | Tableau des candidats choisis, pas nécessairement dans topCandidates (la longueur est égale au nombre total d'étapes de décodage) |
TopCandidates object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
candidates | tableau | Candidats triés par log de probabilité par ordre décroissant |
Candidate (Logprobs) object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
token | chaîne | Valeur de chaîne de jeton pour le candidat |
tokenId | entier | Valeur d'ID de jeton pour le candidat |
logProbability | numéro | Log de probabilité pour le candidat |
Fonction de récupération d'URL
UrlRetrievalMetadata object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
urlRetrievalContexts | tableau | Liste des contextes de récupération d'URL |
UrlRetrievalContext object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
retrievedUrl | chaîne | URL récupérée par l'outil |
UrlContextMetadata object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
urlMetadata | tableau | Liste des contextes d'URL |
UrlMetadata object properties:
| Propriété | Tapez | Descriptif |
|---|---|---|
retrievedUrl | chaîne | URL récupérée par l'outil |
urlRetrievalStatus | énumération | Statut de récupération de l'URL |
UrlRetrievalStatus enum values:
URL_RETRIEVAL_STATUS_SUCCESS: récupération de l'URL réussieURL_RETRIEVAL_STATUS_ERROR: la récupération de l'URL a échoué en raison d'une erreur
Catégories de préjudice complètes
HarmCategory enum values:
HARM_CATEGORY_UNSPECIFIED: Catégorie non préciséeHARM_CATEGORY_DEROGATORY: PaLM - Commentaires négatifs ou nuisibles ciblant l'identité et/ou les attributs protégésHARM_CATEGORY_TOXICITY: PaLM – Contenu grossier, impoli ou grossierHARM_CATEGORY_VIOLENCE: PaLM - Scénarios illustrant la violence contre des individus ou des groupesHARM_CATEGORY_SEXUAL: PaLM - Références à un comportement sexuel ou à tout autre contenu expliciteHARM_CATEGORY_MEDICAL: PaLM - Promouvoir le conseil médical non vérifiéHARM_CATEGORY_DANGEROUS: PaLM – Les contenus dangereux favorisent, encouragent ou facilitent les comportements nuisiblesHARM_CATEGORY_HARASSMENT: Gémeaux – Contenu sur le harcèlementHARM_CATEGORY_HATE_SPEECH: Gémeaux – Discours et contenus haineuxHARM_CATEGORY_SEXUALLY_EXPLICIT: Gémeaux – Contenu explicitement sexuelHARM_CATEGORY_DANGEROUS_CONTENT: Gémeaux - Contenu dangereuxHARM_CATEGORY_CIVIC_INTEGRITY: Gémeaux – Contenu susceptible d'être utilisé pour porter atteinte à l'intégrité civique
HarmProbability enum values:
HARM_PROBABILITY_UNSPECIFIED: Probabilité non préciséeNEGLIGIBLE: Probabilité nocive négligeableLOW: Probabilité nocive faibleMEDIUM: Probabilité moyenne nociveHIGH: Probabilité nocive élevée
Modality enum values:
MODALITY_UNSPECIFIED: Modalité non préciséeTEXT: Texte purIMAGE: ImageVIDEO: VidéoAUDIO: AudioDOCUMENT: Document, par exemple PDF
MediaResolution enum values:
MEDIA_RESOLUTION_UNSPECIFIED: résolution multimédia non définieMEDIA_RESOLUTION_LOW: résolution multimédia réglée sur faible (64 jetons)MEDIA_RESOLUTION_MEDIUM: Résolution multimédia réglée sur moyenne (256 jetons)MEDIA_RESOLUTION_HIGH: résolution multimédia réglée sur élevée (en utilisant 256 tokens pour la mise à l'échelle et le recadrage)
UrlRetrievalStatus enum values:
URL_RETRIEVAL_STATUS_UNSPECIFIED: Valeur par défaut, cette valeur n'est pas utiliséeURL_RETRIEVAL_STATUS_SUCCESS: récupération de l'URL réussieURL_RETRIEVAL_STATUS_ERROR: la récupération de l'URL a échoué en raison d'une erreur
🔍 Gestion des erreurs
Codes d'erreur courants
| Code d'erreur | Descriptif |
|---|---|
400 | Erreur de format de requête ou paramètre invalide |
401 | Clé API invalide ou manquante |
403 | Autorisations insuffisantes ou limite de quota |
429 | Fréquence des demandes trop élevée |
500 | Erreur interne du serveur |
Explications détaillées des codes d'erreur
| Code d'erreur | Statut | Descriptif | Solutions |
|---|---|---|---|
400 | INVALID_ARGUMENT | Paramètre de requête non valide ou erreur de format | Vérifiez le format des paramètres de la demande et les champs obligatoires |
400 | FAILED_PRECONDITION | Condition préalable à la demande non remplie | S'assurer que les conditions préalables aux appels API sont remplies |
401 | UNAUTHENTICATED | Clé API invalide, manquante ou expirée | Vérifier la validité et le format de la clé API |
403 | PERMISSION_DENIED | Autorisations insuffisantes ou quota épuisé | Vérifier les autorisations des clés API ou mettre à niveau le quota |
404 | NOT_FOUND | Le modèle ou la ressource spécifié n'existe pas | Vérifier le nom du modèle et le chemin de la ressource |
413 | PAYLOAD_TOO_LARGE | Corps de la demande trop grand | Réduire la taille du contenu d'entrée ou traiter par lots |
429 | RESOURCE_EXHAUSTED | Fréquence des demandes dépassée ou quota insuffisant | Réduisez la fréquence des demandes ou attendez la réinitialisation du quota |
500 | INTERNAL | Erreur interne du serveur | Réessayez la demande, si elle persiste, contactez le support |
503 | UNAVAILABLE | Service temporairement indisponible | Attendez un moment et réessayez |
504 | DEADLINE_EXCEEDED | Demande expirée | Réduisez la taille de l'entrée ou réessayez la demande |
Exemple de réponse d'erreur
{
"error": {
"code": 400,
"message": "Invalid argument: contents",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "contents",
"description": "contents is required"
}
]
}
]
}
}