當 Gemini API 收到文字、圖片、影片和音訊做為輸入內容時,便可產生文字輸出內容。
本指南將說明如何使用 generateContent
和 streamGenerateContent
方法產生文字。如要瞭解如何使用 Gemini 的視覺和音訊功能,請參閱「視覺」和「音訊」指南。
使用純文字輸入內容產生文字
使用 Gemini API 產生文字最簡單的方法,就是為模型提供單一純文字輸入內容,如以下範例所示:
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());
在這種情況下,「說明 AI 運作方式」提示不會包含任何輸出範例、系統指示或格式資訊。這是一種零樣本方法。在某些用途中,單拍或多拍提示可能會產生更符合使用者期待的輸出內容。在某些情況下,您可能還需要提供系統操作說明,協助模型瞭解任務或遵循特定規範。
使用文字和圖片輸入內容來生成文字
Gemini API 支援結合文字和媒體檔案的多模態輸入內容。以下範例說明如何根據文字和圖片輸入內容產生文字:
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());
產生文字串流
根據預設,模型會在完成整個文字產生程序後傳回回應。您可以不等待整個結果,改用串流處理部分結果,藉此加快互動速度。
以下範例說明如何使用 streamGenerateContent
方法實作串流,從純文字輸入提示產生文字。
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);
}
建立即時通訊對話
您可以使用 Gemini SDK 收集多輪問題和回覆,讓使用者逐步取得答案,或針對多重問題尋求協助。這個 SDK 功能提供一個介面,可追蹤對話記錄,但幕後會使用相同的 generateContent
方法建立回應。
以下程式碼範例顯示基本即時通訊實作方式:
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());
你也可以使用串流直播搭配即時通訊,如以下範例所示:
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);
}
設定文字產生
您傳送至模型的每個提示都包含參數,用來控制模型生成回覆的方式。您可以使用 GenerationConfig
設定這些參數。如果您未設定參數,模型會使用預設選項,這些選項可能因模型而異。
以下範例說明如何設定幾個可用的選項。
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());
後續步驟
瞭解 Gemini API 的基本概念後,您可以嘗試以下操作: