Génération de texte

L'API Gemini peut générer un résultat textuel lorsqu'elle reçoit du texte, des images, des vidéos et des contenus audio en entrée.

Ce guide vous explique comment générer du texte à l'aide des méthodes generateContent et streamGenerateContent. Pour en savoir plus sur l'utilisation des fonctionnalités de vision et audio de Gemini, consultez les guides Vision et Audio.

Générer du texte à partir d'une entrée textuelle

Le moyen le plus simple de générer du texte à l'aide de l'API Gemini consiste à fournir au modèle une seule entrée textuelle, comme illustré dans cet exemple:

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Explain how AI works";

const result = await model.generateContent(prompt);
console.log(result.response.text());

Dans ce cas, l'invite ("Expliquez le fonctionnement de l'IA") n'inclut aucun exemple de sortie, aucune instruction système ni aucune information de mise en forme. Il s'agit d'une approche zero-shot. Dans certains cas d'utilisation, une invite one-shot ou few-shot peut produire un résultat plus conforme aux attentes des utilisateurs. Dans certains cas, vous pouvez également fournir des instructions système pour aider le modèle à comprendre la tâche ou à suivre des consignes spécifiques.

Générer du texte à partir d'une entrée texte-image

L'API Gemini accepte les entrées multimodales qui combinent du texte et des fichiers multimédias. L'exemple suivant montre comment générer du texte à partir d'une entrée texte et image:

import { GoogleGenerativeAI } from "@google/generative-ai";
import * as fs from 'node:fs';

const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString("base64"),
      mimeType,
    },
  };
}

const prompt = "Describe how this product might be manufactured.";
const imagePart = fileToGenerativePart("/path/to/image.png", "image/png");

const result = await model.generateContent([prompt, imagePart]);
console.log(result.response.text());

Générer un flux de texte

Par défaut, le modèle renvoie une réponse une fois le processus de génération de texte terminé. Vous pouvez accélérer les interactions en n'attendant pas le résultat complet, mais en utilisant le streaming pour gérer les résultats partiels.

L'exemple suivant montre comment implémenter le streaming à l'aide de la méthode streamGenerateContent pour générer du texte à partir d'une invite de saisie textuelle uniquement.

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Explain how AI works";

const result = await model.generateContentStream(prompt);

for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

Créer une conversation par chat

Le SDK Gemini vous permet de collecter plusieurs séries de questions et de réponses, ce qui permet aux utilisateurs d'obtenir des réponses par étapes ou de l'aide pour résoudre des problèmes en plusieurs parties. Cette fonctionnalité du SDK fournit une interface permettant de suivre l'historique des conversations, mais utilise en arrière-plan la même méthode generateContent pour créer la réponse.

L'exemple de code suivant illustre une implémentation de chat de base:

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

let result = await chat.sendMessage("I have 2 dogs in my house.");
console.log(result.response.text());
let result2 = await chat.sendMessage("How many paws are in my house?");
console.log(result2.response.text());

Vous pouvez également utiliser le streaming avec le chat, comme illustré dans l'exemple suivant:

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

let result = await chat.sendMessageStream("I have 2 dogs in my house.");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}
let result2 = await chat.sendMessageStream("How many paws are in my house?");
for await (const chunk of result2.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

Configurer la génération de texte

Chaque requête que vous envoyez au modèle inclut des paramètres qui contrôlent la manière dont le modèle génère des réponses. Vous pouvez utiliser GenerationConfig pour configurer ces paramètres. Si vous ne configurez pas les paramètres, le modèle utilise des options par défaut, qui peuvent varier selon le modèle.

L'exemple suivant montre comment configurer plusieurs des options disponibles.

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const result = await model.generateContent({
    contents: [
        {
          role: 'user',
          parts: [
            {
              text: "Explain how AI works",
            }
          ],
        }
    ],
    generationConfig: {
      maxOutputTokens: 1000,
      temperature: 0.1,
    }
});

console.log(result.response.text());

Ajouter des instructions système

Les instructions système vous permettent d'orienter le comportement d'un modèle en fonction de vos besoins et de vos cas d'utilisation spécifiques.

En fournissant des instructions système au modèle, vous lui fournissez un contexte supplémentaire pour qu'il comprenne la tâche, génère des réponses plus personnalisées et respecte des consignes spécifiques pendant toute l'interaction de l'utilisateur avec le modèle. Vous pouvez également spécifier le comportement au niveau du produit en définissant des instructions système, distinctes des requêtes fournies par les utilisateurs finaux.

Vous pouvez définir des instructions système lorsque vous initialisez votre modèle:

// Set the system instruction during model initialization
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  systemInstruction: "You are a cat. Your name is Neko.",
});

Vous pouvez ensuite envoyer des requêtes au modèle comme d'habitude.

Étape suivante

Maintenant que vous avez découvert les principes de base de l'API Gemini, vous pouvez essayer les éléments suivants:

  • Analyse visuelle: découvrez comment utiliser l'analyse visuelle native de Gemini pour traiter des images et des vidéos.
  • Compréhension audio: découvrez comment utiliser la compréhension audio native de Gemini pour traiter des fichiers audio.