88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support
Chat

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/null

Chat 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/null

Appel 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 | head

Traitement 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/null

Instruction 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/*}:generateContent

Stream Générer du contenu

POST https://88api.ai/v1beta/{model=models/*}:streamGenerateContent

Méthode d'authentification

Incluez la clé API dans l'URL de la requête:

?key=$API_KEY

$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éTapezObligatoireDescriptif
partstableauouiParties de contenu ordonnées qui constituent un seul message
rolechaînenonLe producteur du contenu dans la conversation. user, model, function ou tool

Part object properties:

PropriétéTapezObligatoireDescriptif
textchaînenonContenu textuel pur
inlineDataobjetnonDonnées d'octets multimédia en ligne
fileDataobjetnonRéférence URI au fichier téléchargé
functionCallobjetnonDemande d'appel de fonction
functionResponseobjetnonRéponse à l'appel de fonction
executableCodeobjetnonCode exécutable
codeExecutionResultobjetnonRésultat de l'exécution du code

InlineData object properties:

PropriétéTapezObligatoireDescriptif
mimeTypechaîneouiType de média MIME
datachaîneouiDonnées multimédias codées en Base64

FileData object properties:

PropriétéTapezObligatoireDescriptif
mimeTypechaîneouiType de fichier MIME
fileUrichaîneouiURI 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éTapezObligatoireDescriptif
functionDeclarationstableaunonListe facultative de déclarations de fonctions
codeExecutionobjetnonActiver le modèle pour exécuter le code

FunctionDeclaration object properties:

PropriétéTapezObligatoireDescriptif
namechaîneouiNom de la fonction
descriptionchaînenonDescription de la fonction
parametersobjetnonParamètres de fonction, au format JSON Schema

FunctionCall object properties:

PropriétéTapezObligatoireDescriptif
namechaîneouiNom de la fonction à appeler
argsobjetnonPaires clé-valeur d'arguments de fonction

FunctionResponse object properties:

PropriétéTapezObligatoireDescriptif
namechaîneouiNom de la fonction appelée
responseobjetouiDonnées de réponse de l'appel de fonction

ExecutableCode object properties:

PropriétéTapezObligatoireDescriptif
languageénumérationouiLangage de programmation du code
codechaîneouiCode à exécuter

CodeExecutionResult object properties:

PropriétéTapezObligatoireDescriptif
outcomeénumérationouiStatut du résultat de l'exécution du code
outputchaînenonContenu de sortie de l'exécution du code

CodeExecution object properties:

PropriétéTapezObligatoireDescriptif
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éTapezObligatoireDescriptif
functionCallingConfigobjetnonConfiguration des appels de fonctions

FunctionCallingConfig object properties:

PropriétéTapezObligatoireDescriptif
modeénumérationnonSpécifie le mode d'appel de fonction
allowedFunctionNamestableaunonListe 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 fonction
  • AUTO: le modèle décide automatiquement quand appeler une fonction
  • ANY: Le modèle doit appeler une fonction
  • NONE: 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éTapezObligatoireDescriptif
categoryénumérationouiCatégorie de sécurité
thresholdénumérationouiSeuil de blocage

HarmCategory enum values:

  • HARM_CATEGORY_HARASSMENT: Contenu de harcèlement
  • HARM_CATEGORY_HATE_SPEECH: Discours et contenus haineux
  • HARM_CATEGORY_SEXUALLY_EXPLICIT: Contenu explicitement sexuel
  • HARM_CATEGORY_DANGEROUS_CONTENT : Contenu dangereux
  • HARM_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ÉGLIGIBLE
  • BLOCK_MEDIUM_AND_ABOVE : Permet de publier des contenus avec un score NÉGLIGIBLE et FAIBLE
  • BLOCK_ONLY_HIGH: Permet de publier des contenus présentant un niveau de risque NÉGLIGIBLE, FAIBLE et MOYEN
  • BLOCK_NONE: autorise tous les contenus
  • OFF: 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ÉGLIGIBLE
  • BLOCK_MEDIUM_AND_ABOVE: Bloque le contenu nuisible avec une probabilité moyenne ou supérieure, autorisant le contenu de niveau NÉGLIGIBLE et FAIBLE
  • BLOCK_ONLY_HIGH: bloque uniquement les contenus nuisibles avec une probabilité élevée, autorisant les contenus de niveau NÉGLIGIBLE, FAIBLE et MOYEN
  • BLOCK_NONE: Ne bloque aucun contenu, autorisant tous les niveaux
  • OFF: 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éTapezObligatoireDescriptif
stopSequencestableaunonEnsemble de séquences de caractères pour arrêter la génération (jusqu'à 5)
responseMimeTypechaînenonType MIME du texte candidat généré
responseSchemaobjetnonSchéma de sortie du texte candidat généré
responseModalitiestableaunonModalités de réponse demandées
candidateCountentiernonNombre de réponses générées à retourner
maxOutputTokensentiernonNombre maximum de jetons dans les réponses des candidats
temperaturenumérononContrôle le caractère aléatoire de la sortie, plage [0.0, 2.0]
topPnumérononLimite supérieure de probabilité cumulée des jetons à prendre en compte lors de l'échantillonnage
topKentiernonNombre maximum de jetons à considérer lors de l'échantillonnage
seedentiernonGraine utilisée pour le décodage
presencePenaltynumérononPénalité de présence
frequencyPenaltynumérononPénalité de fréquence
responseLogprobsbooléennonS'il faut exporter les résultats des logprobs dans la réponse
logprobsentiernonNombre de problèmes de journalisation les plus importants renvoyés
enableEnhancedCivicAnswersbooléennonPermet des réponses améliorées en matière de service civique
speechConfigobjetnonConfiguration de la génération vocale
thinkingConfigobjetnonConfiguration de la fonction de réflexion
mediaResolutionénumérationnonRésolution multimédia spécifiée

Supported MIME types:

  • text/plain: (par défaut) Sortie texte
  • application/json : réponse JSON
  • text/x.enum: ENUM comme réponse sous forme de chaîne

Modality enum values:

  • TEXT: indique que le modèle doit renvoyer du texte
  • IMAGE: indique que le modèle doit renvoyer l'image
  • AUDIO: Indique que le modèle doit renvoyer l'audio

Schema object properties:

PropriétéTapezObligatoireDescriptif
typeénumérationouiType de données
descriptionchaînenonDescription du champ
enumtableaunonListe des valeurs d'énumération (lorsque le type est une chaîne)
examplen'importe quelnonExemple de valeur
nullablebooléennonSi cela peut être nul
formatchaînenonFormat de chaîne (par exemple, date, date-heure)
itemsobjetnonSchéma pour les éléments du tableau (lorsque le type est un tableau)
propertiesobjetnonSchéma des propriétés d'objet (lorsque le type est objet)
requiredtableaunonListe des noms de propriétés requis
minimumnumérononValeur minimale pour les nombres
maximumnumérononValeur maximale pour les nombres
minItemsentiernonLongueur minimale des tableaux
maxItemsentiernonLongueur maximale des tableaux
minLengthentiernonLongueur minimale des cordes
maxLengthentiernonLongueur maximale des chaînes

Type enum values:

  • TYPE_UNSPECIFIED : Type non précisé
  • STRING : Type de chaîne
  • NUMBER: Type de numéro
  • INTEGER : Type entier
  • BOOLEAN : Type booléen
  • ARRAY: Type de tableau
  • OBJECT : Type d'objet

Supported programming languages (ExecutableCode):

  • LANGUAGE_UNSPECIFIED : Langue non précisée
  • PYTHON : langage de programmation Python

Code execution result enum (Outcome):

  • OUTCOME_UNSPECIFIED : Résultat non précisé
  • OUTCOME_OK: exécution du code réussie
  • OUTCOME_FAILED: échec de l'exécution du code
  • OUTCOME_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éTapezDescriptif
contentobjetContenu généré renvoyé par le modèle
finishReasonénumérationRaison pour laquelle le modèle cesse de générer des jetons
safetyRatingstableauListe des notes de sécurité pour la réponse du candidat
citationMetadataobjetInformations de référence pour le candidat généré
tokenCountentierNombre de jetons pour ce candidat
groundingAttributionstableauInformations sur les sources qui ont contribué à générer une réponse fondée
groundingMetadataobjetMétadonnées de référence pour l'objet candidat
avgLogprobsnuméroScore de probabilité logarithmique moyen pour le candidat
logprobsResultobjetEnregistrer les scores de probabilité pour les jetons de réponse et les jetons précédents
urlRetrievalMetadataobjetMétadonnées liées à l'outil de récupération de contexte d'URL
urlContextMetadataobjetMétadonnées liées à l'outil de récupération de contexte d'URL
indexentierIndex 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èle
  • MAX_TOKENS: Limite maximale de tokens spécifiée dans la requête atteinte
  • SAFETY: 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écitation
  • LANGUAGE: Répondez au contenu du candidat marqué pour l'utilisation d'une langue non prise en charge
  • OTHER: Raison inconnue
  • BLOCKLIST: Opération de génération de token arrêtée car le contenu contient des mots interdits
  • PROHIBITED_CONTENT: opération de génération de jeton arrêtée car le contenu peut contenir du contenu interdit
  • SPII: opération de génération de jeton arrêtée car le contenu peut contenir des informations personnelles sensibles
  • MALFORMED_FUNCTION_CALL: Appel de fonction généré par le modèle invalide
  • IMAGE_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éTapezDescriptif
blockReasonénumérationRaison du blocage de l'invite
safetyRatingstableauCote de sécurité pour l'invite

BlockReason enum values:

  • BLOCK_REASON_UNSPECIFIED : Valeur par défaut, cette valeur n'est pas utilisée
  • SAFETY: invite du système bloquée pour des raisons de sécurité
  • OTHER: Invite bloquée pour des raisons inconnues
  • BLOCKLIST: le système a bloqué cette invite car elle contenait des termes dans la liste de blocage
  • PROHIBITED_CONTENT: le système a bloqué cette invite car elle contenait du contenu interdit
  • IMAGE_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éTapezDescriptif
promptTokenCountentierNombre de jetons dans l'invite
cachedContentTokenCountentierNombre de jetons dans la partie mise en cache de l'invite
candidatesTokenCountentierNombre total de jetons dans toutes les réponses de candidats générées
totalTokenCountentierNombre total de jetons pour la demande de génération
toolUsePromptTokenCountentierNombre de jetons dans l'invite d'utilisation de l'outil
thoughtsTokenCountentierNombre de jetons pour les pensées du modèle de pensée
promptTokensDetailstableauListe des modalités traitées dans la saisie de la demande
candidatesTokensDetailstableauListe des modalités renvoyées dans la réponse
cacheTokensDetailstableauListe des modalités dans le contenu mis en cache de l'entrée de la requête
toolUsePromptTokensDetailstableauListe 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éTapezDescriptif
categoryénumérationCatégorie de cette note
probabilityénumérationProbabilité nuisible pour ce contenu
blockedbooléenSi ce contenu a été bloqué en raison de cette note

HarmProbability enum values:

  • NEGLIGIBLE : Probabilité nocive négligeable
  • LOW: Probabilité nocive faible
  • MEDIUM : Probabilité moyenne nocive
  • HIGH: Probabilité nocive élevée

Métadonnées des citations

CitationMetadata object properties:

PropriétéTapezDescriptif
citationSourcestableauRéférences sources pour des réponses spécifiques

CitationSource object properties:

PropriétéTapezDescriptif
startIndexentierIndex de début du segment de réponse attribué à cette source
endIndexentierIndex de fin de l'attribution (exclusif)
urichaîneURI attribué à la partie texte de cette source
licensechaîneLicence 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éTapezDescriptif
groundingChunkstableauListe des documents de référence à l'appui extraits de sources de mise à la terre spécifiées
groundingSupportstableauListe de support de mise à la terre
webSearchQueriestableauRequêtes de recherche sur le Web pour les recherches Web ultérieures
searchEntryPointobjetPoint d'entrée de recherche Google pour les recherches Web ultérieures
retrievalMetadataobjetMétadonnées liées à la récupération dans le processus de référence

GroundingAttribution object properties:

PropriétéTapezDescriptif
sourceIdobjetIdentifiant de la source ayant contribué à cette attribution
contentobjetContenu de la source ayant contribué à cette attribution

AttributionSourceId object properties:

PropriétéTapezDescriptif
groundingPassageobjetIdentifiant du paragraphe incorporé
semanticRetrieverChunkobjetIdentifiant du Chunk extrait par Semantic Retriever

GroundingPassageId object properties:

PropriétéTapezDescriptif
passageIdchaîneID du paragraphe correspondant à GroundingPassage.id de GenerateAnswerRequest
partIndexentierIndex de la pièce dans GroundingPassage.content

SemanticRetrieverChunk object properties:

PropriétéTapezDescriptif
sourcechaîneNom de la source correspondant à SemanticRetrieverConfig.source de la requête
chunkchaîneNom du Chunk contenant le texte attribué

SearchEntryPoint object properties:

PropriétéTapezDescriptif
renderedContentchaîneSegment de code de contenu Web intégrable dans une page Web ou une application WebView
sdkBlobchaîneJSON codé en base64, représentant un tableau de termes de recherche et de tuples d'URL de recherche

Segment object properties:

PropriétéTapezDescriptif
partIndexentierIndex de l'objet Part au sein de son objet Content parent
startIndexentierIndex de début de la partie donnée en octets
endIndexentierIndex de fin du morceau donné en octets
textchaîneTexte correspondant au fragment dans la réponse

RetrievalMetadata object properties:

PropriétéTapezDescriptif
googleSearchDynamicRetrievalScorenuméroScore de probabilité des informations issues de la recherche Google aidant à répondre à la question, plage [0,1]

GroundingChunk object properties:

PropriétéTapezDescriptif
webobjetMorceau de mise à la terre du Web

Web object properties:

PropriétéTapezDescriptif
urichaîneRéférence URI pour le morceau
titlechaîneTitre du bloc de données

GroundingSupport object properties:

PropriétéTapezDescriptif
groundingChunkIndicestableauListe d'index, utilisée pour spécifier les citations liées aux revendications de droit d'auteur
confidenceScorestableauScores de confiance pour les documents de référence justificatifs, plage de 0 à 1
segmentobjetSegment 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 pur
  • IMAGE: 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éTapezDescriptif
modalityénumérationModalité associée à ce nombre de jetons
tokenCountentierNombre 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éTapezDescriptif
includeThoughtsbooléenFaut-il inclure du contenu de réflexion dans la réponse
thinkingBudgetentierNombre de jetons d'idée que le modèle doit générer

Génération vocale

SpeechConfig object properties:

PropriétéTapezDescriptif
voiceConfigobjetConfiguration pour une sortie vocale unique
multiSpeakerVoiceConfigobjetConfiguration pour les paramètres multi-enceintes
languageCodechaîneCode de langue pour la synthèse vocale

VoiceConfig object properties:

PropriétéTapezDescriptif
prebuiltVoiceConfigobjetConfiguration pour la voix prédéfinie à utiliser

PrebuiltVoiceConfig object properties:

PropriétéTapezDescriptif
voiceNamechaîneNom de la voix prédéfinie à utiliser

MultiSpeakerVoiceConfig object properties:

PropriétéTapezDescriptif
speakerVoiceConfigstableauToutes les voix de haut-parleur activées

SpeakerVoiceConfig object properties:

PropriétéTapezDescriptif
speakerchaîneNom de l'orateur à utiliser
voiceConfigobjetConfiguration de la voix à utiliser

Supported language codes:

  • zh-CN: chinois (simplifié)
  • en-US: anglais (États-Unis)
  • ja-JP : japonais
  • ko-KR: coréen
  • fr-FR: français
  • de-DE: allemand
  • es-ES : espagnol
  • pt-BR: portugais (Brésil)
  • hi-IN: hindi
  • ar-XA: arabe
  • it-IT: italien
  • tr-TR: turc
  • vi-VN: vietnamien
  • th-TH: thaïlandais
  • ru-RU: russe
  • pl-PL : Polonais
  • nl-NL: néerlandais

Résultats des problèmes de journalisation

LogprobsResult object properties:

PropriétéTapezDescriptif
topCandidatestableauTableau de candidats triés par log de probabilité par ordre décroissant
chosenCandidatestableauTableau 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éTapezDescriptif
candidatestableauCandidats triés par log de probabilité par ordre décroissant

Candidate (Logprobs) object properties:

PropriétéTapezDescriptif
tokenchaîneValeur de chaîne de jeton pour le candidat
tokenIdentierValeur d'ID de jeton pour le candidat
logProbabilitynuméroLog de probabilité pour le candidat

Fonction de récupération d'URL

UrlRetrievalMetadata object properties:

PropriétéTapezDescriptif
urlRetrievalContextstableauListe des contextes de récupération d'URL

UrlRetrievalContext object properties:

PropriétéTapezDescriptif
retrievedUrlchaîneURL récupérée par l'outil

UrlContextMetadata object properties:

PropriétéTapezDescriptif
urlMetadatatableauListe des contextes d'URL

UrlMetadata object properties:

PropriétéTapezDescriptif
retrievedUrlchaîneURL récupérée par l'outil
urlRetrievalStatusénumérationStatut de récupération de l'URL

UrlRetrievalStatus enum values:

  • URL_RETRIEVAL_STATUS_SUCCESS: récupération de l'URL réussie
  • URL_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ée
  • HARM_CATEGORY_DEROGATORY : PaLM - Commentaires négatifs ou nuisibles ciblant l'identité et/ou les attributs protégés
  • HARM_CATEGORY_TOXICITY: PaLM – Contenu grossier, impoli ou grossier
  • HARM_CATEGORY_VIOLENCE : PaLM - Scénarios illustrant la violence contre des individus ou des groupes
  • HARM_CATEGORY_SEXUAL : PaLM - Références à un comportement sexuel ou à tout autre contenu explicite
  • HARM_CATEGORY_MEDICAL: PaLM - Promouvoir le conseil médical non vérifié
  • HARM_CATEGORY_DANGEROUS: PaLM – Les contenus dangereux favorisent, encouragent ou facilitent les comportements nuisibles
  • HARM_CATEGORY_HARASSMENT: Gémeaux – Contenu sur le harcèlement
  • HARM_CATEGORY_HATE_SPEECH : Gémeaux – Discours et contenus haineux
  • HARM_CATEGORY_SEXUALLY_EXPLICIT: Gémeaux – Contenu explicitement sexuel
  • HARM_CATEGORY_DANGEROUS_CONTENT: Gémeaux - Contenu dangereux
  • HARM_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ée
  • NEGLIGIBLE : Probabilité nocive négligeable
  • LOW: Probabilité nocive faible
  • MEDIUM : Probabilité moyenne nocive
  • HIGH: Probabilité nocive élevée

Modality enum values:

  • MODALITY_UNSPECIFIED : Modalité non précisée
  • TEXT: Texte pur
  • IMAGE : Image
  • VIDEO : Vidéo
  • AUDIO : Audio
  • DOCUMENT: Document, par exemple PDF

MediaResolution enum values:

  • MEDIA_RESOLUTION_UNSPECIFIED: résolution multimédia non définie
  • MEDIA_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ée
  • URL_RETRIEVAL_STATUS_SUCCESS: récupération de l'URL réussie
  • URL_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'erreurDescriptif
400Erreur de format de requête ou paramètre invalide
401Clé API invalide ou manquante
403Autorisations insuffisantes ou limite de quota
429Fréquence des demandes trop élevée
500Erreur interne du serveur

Explications détaillées des codes d'erreur

Code d'erreurStatutDescriptifSolutions
400INVALID_ARGUMENTParamètre de requête non valide ou erreur de formatVérifiez le format des paramètres de la demande et les champs obligatoires
400FAILED_PRECONDITIONCondition préalable à la demande non remplieS'assurer que les conditions préalables aux appels API sont remplies
401UNAUTHENTICATEDClé API invalide, manquante ou expiréeVérifier la validité et le format de la clé API
403PERMISSION_DENIEDAutorisations insuffisantes ou quota épuiséVérifier les autorisations des clés API ou mettre à niveau le quota
404NOT_FOUNDLe modèle ou la ressource spécifié n'existe pasVérifier le nom du modèle et le chemin de la ressource
413PAYLOAD_TOO_LARGECorps de la demande trop grandRéduire la taille du contenu d'entrée ou traiter par lots
429RESOURCE_EXHAUSTEDFréquence des demandes dépassée ou quota insuffisantRéduisez la fréquence des demandes ou attendez la réinitialisation du quota
500INTERNALErreur interne du serveurRéessayez la demande, si elle persiste, contactez le support
503UNAVAILABLEService temporairement indisponibleAttendez un moment et réessayez
504DEADLINE_EXCEEDEDDemande expiréeRé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"
          }
        ]
      }
    ]
  }
}