generateContent et streamGenerateContent.
Différences avec l’API Chat Completions
L’API Gemini Generate Content utilise le format de requête natif officiel de Google (champcontents), plutôt que le format compatible OpenAI (champ messages). Si vous utilisez déjà le SDK Google Gemini ou êtes familier avec le format d’API officiel, vous pouvez utiliser directement cette API sans modifier le format de requête.
Portée actuellement prise en charge
L’interface accepte les entrées de texte, d’images, de vidéos et d’audio (inlineData ou fileData), la configuration de réflexion et les déclarations de fonctions personnalisées. Les champs natifs tels que la sortie audio, les outils intégrés et le cache de contexte explicite ne disposent pas encore d’une garantie de disponibilité uniforme ; veuillez vous référer au retour réel du modèle spécifique.
Lors de la soumission de fichiers tels que des fichiers audio avec fileData.fileUri, assurez-vous que le fichier est directement accessible via HTTPS, ne dépend pas d’un état de connexion, et que la durée de validité du lien signé couvre l’intégralité du temps de traitement de la requête. L’analyse audio non fluide ne renvoie les résultats qu’après que le modèle a terminé le traitement, ce qui peut dépasser 90 secondes ; le client doit définir un délai d’expiration total suffisamment long en fonction de la taille du fichier et du scénario métier, afin d’éviter de déconnecter la connexion alors que le serveur traite encore la requête.
Processus de demande
Avant d’utiliser l’API Gemini Generate Content, veuillez d’abord accéder à la page Gemini Generate Content API, puis cliquer sur le bouton « Obtenir » pour obtenir les identifiants nécessaires à la requête. Si vous n’êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion. La première demande bénéficie d’un quota gratuit.Utilisation de base
Non-Streaming(non fluide)
Envoyez une requête POST à/v1beta/models/{model}:generateContent :
Remarque : la sériegemini-3.xflash est un modèle de réflexion et consommera d’abord des reasoning tokens ; veuillez définirgenerationConfig.maxOutputTokensà 512 ou plus, sinon seul un contenu vide pourrait être renvoyé.
usageMetadata sont facturés selon la sémantique Gemini native :
promptTokenCountinclutcachedContentTokenCount, et la partie correspondant au cache est calculée au prix de lecture du cache, sans être comptabilisée à nouveau comme une entrée ordinaire.promptTokensDetailsetcacheTokensDetailsseront normalisés en détailstext_tokens,image_tokens,video_tokens,audio_tokensetcached_*correspondants soususage.prompt_tokens_details. Ces valeurs sont respectivement incluses dansprompt_tokensetcached_tokens; les différentes modalités sont recalculées uniquement selon leurs prix respectifs, sans double facturation.candidatesTokenCountetthoughtsTokenCountsont tous deux calculés au prix des tokens de sortie.toolUsePromptTokenCountcorrespond à des tokens d’entrée d’outils indépendants, calculés au prix des tokens d’entrée.
usage normalisé ; entre les protocoles de modèles, le coût de cet appel est lu de manière uniforme depuis usage.cost. cost est un aperçu facultatif du coût ; lorsque l’aperçu des prix est temporairement indisponible, la réponse du modèle est tout de même renvoyée normalement, mais peut ne pas inclure ce champ. La facturation finale prévaut selon les enregistrements d’utilisation.
Streaming(flux)
Envoyez une requête POST à/v1beta/models/{model}:streamGenerateContent?alt=sse :
usageMetadata et usage normalisé, et le coût reste situé dans usage.cost :
data: [DONE]. Si l’aperçu des prix final est temporairement indisponible, usage renverra toujours l’utilisation des tokens, mais omettra cost.
Modèles pris en charge
Fonctionnalités avancées
Instructions système
Configuration de génération
Mode JSON
Mode de réflexion (Thinking)
Les modèles qui prennent en charge la fonctionnalité de réflexion (tels que gemini-2.5-flash et gemini-2.5-pro) peuvent activer le mode de réflexion :Appel de fonction
Conversation à plusieurs tours
Compréhension d’images
Paramètres de sécurité
Le filtrage du contenu peut être contrôlé viasafetySettings :

