API Gemini có thể tạo đầu ra văn bản khi được cung cấp văn bản, hình ảnh, video và âm thanh làm dữ liệu đầu vào.
Hướng dẫn này cho bạn biết cách tạo văn bản bằng các phương thức generateContent
và streamGenerateContent
. Để tìm hiểu về cách sử dụng các tính năng hình ảnh và âm thanh của Gemini, hãy tham khảo hướng dẫn về Hình ảnh và Âm thanh.
Trước khi bắt đầu: Thiết lập dự án và khoá API
Trước khi gọi API Gemini, bạn cần thiết lập dự án và định cấu hình khoá API.
Tạo văn bản từ dữ liệu đầu vào chỉ có văn bản
Cách đơn giản nhất để tạo văn bản bằng Gemini API là cung cấp cho mô hình một dữ liệu đầu vào chỉ bao gồm văn bản, như trong ví dụ sau:
// 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());
Trong trường hợp này, câu lệnh ("Viết một câu chuyện về một chiếc ba lô thần kỳ") không bao gồm bất kỳ ví dụ đầu ra, hướng dẫn hệ thống hoặc thông tin định dạng nào. Đây là phương pháp không cần chụp ảnh. Đối với một số trường hợp sử dụng, lời nhắc một lần hoặc vài lần có thể tạo ra kết quả phù hợp hơn với kỳ vọng của người dùng. Trong một số trường hợp, bạn cũng nên cung cấp hướng dẫn hệ thống để giúp mô hình hiểu được nhiệm vụ hoặc tuân theo các nguyên tắc cụ thể.
Tạo văn bản từ dữ liệu đầu vào là văn bản và hình ảnh
API Gemini hỗ trợ phương thức nhập đa phương thức kết hợp văn bản với tệp phương tiện. Ví dụ sau đây cho thấy cách tạo văn bản qua phương thức nhập văn bản và hình ảnh:
// 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());
Giống như lời nhắc chỉ bằng văn bản, lời nhắc đa phương thức có thể bao gồm nhiều phương pháp và cách tinh chỉnh. Tuỳ thuộc vào kết quả của ví dụ này, bạn có thể muốn thêm các bước vào lời nhắc hoặc đưa ra hướng dẫn cụ thể hơn. Để tìm hiểu thêm, hãy xem phần Chiến lược nhắc nhập tệp.
Tạo luồng văn bản
Theo mặc định, mô hình sẽ trả về một phản hồi sau khi hoàn tất toàn bộ quá trình tạo văn bản. Bạn có thể đạt được các lượt tương tác nhanh hơn bằng cách không phải đợi toàn bộ kết quả mà thay vào đó hãy sử dụng tính năng truyền trực tuyến để xử lý một phần kết quả.
Ví dụ sau đây cho biết cách triển khai tính năng truyền trực tuyến bằng phương thức streamGenerateContent
để tạo văn bản từ lời nhắc nhập chỉ văn bản.
// 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);
}
Xây dựng cuộc trò chuyện có tính tương tác
Bạn có thể sử dụng Gemini API để tạo trải nghiệm trò chuyện tương tác cho người dùng. Việc sử dụng tính năng trò chuyện của API cho phép bạn thu thập nhiều vòng câu hỏi và câu trả lời, cho phép người dùng từng bước tìm câu trả lời hoặc nhận sự trợ giúp cho các vấn đề có nhiều phần. Tính năng này rất phù hợp với các ứng dụng yêu cầu giao tiếp liên tục, chẳng hạn như chatbot, người hướng dẫn tương tác hoặc trợ lý hỗ trợ khách hàng.
Ví dụ về mã sau đây cho thấy cách triển khai tính năng trò chuyện cơ bản:
// 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());
Bật tính năng truyền trực tiếp cuộc trò chuyện
Bạn cũng có thể sử dụng tính năng phát trực tiếp kèm theo tính năng trò chuyện, như trong ví dụ sau:
// 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);
}
Định cấu hình tính năng tạo văn bản
Mọi lời nhắc bạn gửi đến mô hình đều bao gồm các tham số kiểm soát cách mô hình tạo ra phản hồi. Bạn có thể sử dụng GenerationConfig
để định cấu hình các tham số này. Nếu bạn không định cấu hình các tham số, mô hình sẽ sử dụng các tuỳ chọn mặc định, tuỳ theo mô hình.
Ví dụ sau đây cho thấy cách định cấu hình một số tuỳ chọn có sẵn.
// 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
chỉ định số lượng phản hồi đã tạo để trả về.
Hiện tại, bạn chỉ có thể đặt giá trị này thành 1. Nếu bạn không đặt giá trị, giá trị mặc định sẽ là 1.
stopSequences
chỉ định tập hợp các trình tự ký tự (tối đa 5) sẽ ngừng tạo đầu ra. Nếu được chỉ định, API sẽ dừng tại lần xuất hiện đầu tiên của stop_sequence. Trình tự dừng sẽ không được đưa vào phản hồi.
maxOutputTokens
đặt số lượng mã thông báo tối đa để đưa vào một đề xuất.
temperature
kiểm soát tính ngẫu nhiên của kết quả. Sử dụng các giá trị cao hơn để có nhiều phản hồi sáng tạo hơn và các giá trị thấp hơn để có nhiều phản hồi có thể xác định hơn. Giá trị có thể nằm trong khoảng [0,0, 2,0].
Bạn cũng có thể định cấu hình từng lệnh gọi đến generateContent
:
const result = await model.generateContent({
contents: [
{
role: 'user',
parts: [
{
text: prompt,
}
],
}
],
generationConfig: {
maxOutputTokens: 1000,
temperature: 0.1,
},
});
console.log(result.response.text());
Mọi giá trị được đặt trên lệnh gọi riêng lẻ sẽ ghi đè các giá trị trên hàm khởi tạo mô hình.
Bước tiếp theo
Giờ đây, khi đã tìm hiểu thông tin cơ bản về API Gemini, bạn có thể thử:
- Tìm hiểu thị giác: Tìm hiểu cách sử dụng tính năng tìm hiểu thị giác gốc của Gemini để xử lý hình ảnh và video.
- Hướng dẫn hệ thống: Hướng dẫn hệ thống cho phép bạn định hướng hành vi của mô hình dựa trên nhu cầu và trường hợp sử dụng cụ thể của bạn.
- Tìm hiểu âm thanh: Tìm hiểu cách sử dụng tính năng tìm hiểu âm thanh gốc của Gemini để xử lý tệp âm thanh.