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.
Generare testo da input di solo testo
Il modo più semplice per generare testo utilizzando 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 immagini
L'API Gemini supporta input multimodali che combinano testo con file multimediali. L'esempio seguente mostra come generare testo da un 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 di questo esempio, ti consigliamo di aggiungere passaggi al prompt o di essere più specifico nelle istruzioni. 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 aiuto 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 arresto non verrà 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.