GeminiGoogleApiLlm
Configurer l'API Gemini de Google, générer du contenu, créer un chat et exploiter les capacités multimodales texte et image.
Prérequis et installation
Google propose le SDK @google/generative-ai pour Node.js et le navigateur. Récupère ta clé API sur aistudio.google.com.
npm install @google/generative-ai
import { GoogleGenerativeAI } from '@google/generative-ai';
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: 'gemini-2.0-flash' });
A retenir : Google AI Studio offre un tier gratuit généreux — idéal pour prototyper avant de passer à Vertex AI en production.
Générer du contenu
generateContent() est l'appel de base pour envoyer un prompt et recevoir une réponse.
const result = await model.generateContent(
'Explique le concept de REST API en 3 phrases simples.'
);
console.info(result.response.text());
Pour un prompt plus structuré avec instructions :
const result = await model.generateContent({
contents: [{
role: 'user',
parts: [{ text: 'Génère un composant Angular pour un formulaire de contact.' }]
}],
generationConfig: {
temperature: 0.7,
maxOutputTokens: 2048,
topP: 0.95,
},
systemInstruction: 'Tu es un expert Angular. Réponds avec du code TypeScript moderne.',
});
console.infoo(result.response.text());
Session de chat
La méthode startChat() maintient automatiquement l'historique de la conversation.
const chat = model.startChat({
history: [
{ role: 'user', parts: [{ text: 'Bonjour, tu peux m\'aider avec Angular ?' }] },
{ role: 'model', parts: [{ text: 'Bien sûr ! Que veux-tu savoir ?' }] }
],
generationConfig: { maxOutputTokens: 1000 },
});
const result = await chat.sendMessage('Comment créer un signal ?');
console.infoo(result.response.text());
// Continuer la conversation
const result2 = await chat.sendMessage('Et un computed ?');
console.info(result2.response.text());
A retenir : Contrairement à l'API Claude, Gemini gère l'historique automatiquement dans la session
chat — tu n'as qu'à appeler sendMessage().
Multimodal : texte et image
Gemini supporte nativement l'analyse d'images (vision). Envoie une image avec un texte en même temps.
import fs from 'fs';
// Charger une image locale
function imageToBase64(path) {
return {
inlineData: {
data: fs.readFileSync(path).toString('base64'),
mimeType: 'image/jpeg'
}
};
}
const result = await model.generateContent([
imageToBase64('./screenshot.jpg'),
{ text: 'Décris ce que tu vois dans cette image et identifie les problèmes UI.' }
]);
console.info(result.response.text());
Streaming
Utilise generateContentStream() pour afficher la réponse progressivement.
const stream = await model.generateContentStream(
'Écris un tutoriel complet sur les Promises JavaScript.'
);
let fullText = '';
for await (const chunk of stream.stream) {
const chunkText = chunk.text();
process.stdout.write(chunkText);
fullText += chunkText;
}
// Récupérer la réponse complète et les métadonnées
const finalResponse = await stream.response;
console.info('\nTokens utilisés:', finalResponse.usageMetadata);
Modèles disponibles
| Modèle | Points forts | Contexte |
|---|---|---|
gemini-2.0-flash | Rapide, multimodal, gratuit | 1M tokens |
gemini-2.5-pro | Raisonnement avancé, code | 1M tokens |
gemini-1.5-flash | Équilibre vitesse/qualité | 1M tokens |
Note : Le contexte de 1M tokens de Gemini est l'un des plus grands du marché — idéal pour analyser des documents longs ou de grandes bases de code.