Genera testo utilizzando l'API Gemini

L'API Gemini può generare output di testo se vengono forniti testo, immagini, video e audio come input.

Questa guida mostra come generare testo utilizzando i metodi generateContent e streamGenerateContent. Per scoprire come utilizzare le funzionalità di visione e audio di Gemini, consulta le guide su Visione e Audio.

Prima di iniziare: configura il progetto e la chiave API

Prima di chiamare l'API Gemini, devi configurare il progetto e la chiave API.

Genera testo da input di solo testo

Il modo più semplice per generare testo con l'API Gemini è fornire al modello un singolo input di solo testo, come mostrato in questo esempio:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

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

In questo caso, il prompt ("Scrivi una storia su uno zaino magico") non include esempi di output, istruzioni di sistema o informazioni sulla formattazione. Si tratta di un approccio zero-shot. Per alcuni casi d'uso, un prompt one-shot o few-shot potrebbe produrre un output più in linea con le aspettative degli utenti. In alcuni casi, potresti anche fornire istruzioni di sistema per aiutare il modello a comprendere l'attività o a seguire linee guida specifiche.

Genera testo da input di testo e immagine

L'API Gemini supporta input multimodali che combinano testo con file multimediali. L'esempio seguente mostra come generare testo da input di testo e immagini:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.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.";
// Note: The only accepted mime types are some image types, image/*.
const imagePart = fileToGenerativePart(
  `${mediaPath}/jetpack.jpg`,
  "image/jpeg",
);

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

Come per i prompt di solo testo, i prompt multimodali possono prevedere vari approcci e perfezionamenti. A seconda dell'output dell'esempio, potresti voler aggiungere passaggi al prompt o specificare istruzioni più specifiche. Per scoprire di più, consulta la sezione Strategie di richiesta di file.

Generare uno stream di testo

Per impostazione predefinita, il modello restituisce una risposta al termine dell'intero processo di generazione del testo. Puoi ottenere interazioni più rapide non aspettando l'intero risultato, ma utilizzando lo streaming per gestire i risultati parziali.

L'esempio seguente mostra come implementare lo streaming utilizzando il metodo streamGenerateContent per generare testo da un prompt di input di solo testo.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream(prompt);

// Print text as it comes in.
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

Creare una chat interattiva

Puoi utilizzare l'API Gemini per creare esperienze di chat interattive per i tuoi utenti. L'utilizzo della funzionalità di chat dell'API consente di raccogliere più round di domande e risposte, consentendo agli utenti di procedere gradualmente verso le risposte o di ricevere assistenza per problemi articolati. Questa funzionalità è ideale per le applicazioni che richiedono una comunicazione continua, come chatbot, tutor interattivi o assistenti per l'assistenza clienti.

Il seguente esempio di codice mostra un'implementazione di chat di base:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.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());
result = await chat.sendMessage("How many paws are in my house?");
console.log(result.response.text());

Attivare lo streaming della chat

Puoi anche utilizzare lo streaming con la chat, come mostrato nell'esempio seguente:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.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);
}
result = await chat.sendMessageStream("How many paws are in my house?");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

Configurare la generazione di testo

Ogni prompt inviato al modello include parametri che controllano la modalità di generazione delle risposte da parte del modello. Puoi utilizzare GenerationConfig per configurare questi parametri. Se non configuri i parametri, il modello utilizza le opzioni predefinite, che possono variare in base al modello.

L'esempio seguente mostra come configurare diverse opzioni disponibili.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  generationConfig: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

const result = await model.generateContent(
  "Tell me a story about a magic backpack.",
);
console.log(result.response.text());

candidateCount specifica il numero di risposte generate da restituire. Al momento, questo valore può essere impostato solo su 1. Se non viene impostato, il valore predefinito è 1.

stopSequences specifica l'insieme di sequenze di caratteri (fino a 5) che interromperanno la generazione dell'output. Se specificato, l'API si fermerà alla prima apparizione di una sequenza di fermate. La sequenza di interruzioni non sarà inclusa nella risposta.

maxOutputTokens imposta il numero massimo di token da includere in un candidato.

temperature controlla la casualità dell'output. Utilizza valori più elevati per risposte più creative e valori più bassi per risposte più deterministiche. I valori possono essere compresi tra [0,0, 2,0].

Puoi anche configurare singole chiamate a generateContent:

const result = await model.generateContent({
  contents: [
    {
      role: 'user',
      parts: [
        {
          text: prompt,
        }
      ],
    }
  ],
  generationConfig: {
    maxOutputTokens: 1000,
    temperature: 0.1,
  },
});
console.log(result.response.text());

Eventuali valori impostati sulla singola chiamata sostituiscono i valori nel costruttore del modello.

Passaggi successivi

Ora che hai esplorato le nozioni di base dell'API Gemini, potresti provare a:

  • Comprensione della visione: scopri come utilizzare la comprensione della visione nativa di Gemini per elaborare immagini e video.
  • Istruzioni di sistema: le istruzioni di sistema ti consentono di indirizzare il comportamento del modello in base alle tue esigenze e ai tuoi casi d'uso specifici.
  • Comprensione audio: scopri come utilizzare la comprensione audio nativa di Gemini per elaborare i file audio.