Gemini API สามารถสร้างเอาต์พุตข้อความได้เมื่อระบุข้อความ รูปภาพ วิดีโอ และเสียงเป็นอินพุต
คู่มือนี้จะแสดงวิธีสร้างข้อความโดยใช้เมธอด generateContent
และ streamGenerateContent
หากต้องการดูข้อมูลเกี่ยวกับความสามารถในการทำงานกับภาพและเสียงของ Gemini ให้อ่านคู่มือVisionและเสียง
สร้างข้อความจากการป้อนข้อความเท่านั้น
วิธีที่ง่ายที่สุดในการสร้างข้อความโดยใช้ 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") จะไม่มีตัวอย่างเอาต์พุต วิธีการของระบบ หรือข้อมูลการจัดรูปแบบ การถ่ายภาพแบบไม่มีตัวอย่าง สําหรับ Use Case บางรายการ พรอมต์แบบคำเดียวหรือแบบไม่กี่คำอาจให้ผลลัพธ์ที่สอดคล้องกับความคาดหวังของผู้ใช้มากกว่า ในบางกรณี คุณอาจต้องระบุคำสั่งของระบบด้วย เพื่อช่วยให้โมเดลเข้าใจงานหรือทำตามหลักเกณฑ์ที่เฉพาะเจาะจง
สร้างข้อความจากอินพุตข้อความและรูปภาพ
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);
}
สร้างการสนทนาใน Chat
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());
เพิ่มวิธีการของระบบ
คำสั่งของระบบช่วยให้คุณควบคุมลักษณะการทํางานของโมเดลตามความต้องการและกรณีการใช้งานที่เฉพาะเจาะจง
การให้คําแนะนําระบบโมเดลเป็นการให้บริบทเพิ่มเติมแก่โมเดลเพื่อให้เข้าใจงาน สร้างคําตอบที่กําหนดเองมากขึ้น และปฏิบัติตามหลักเกณฑ์ที่เฉพาะเจาะจงตลอดการโต้ตอบของผู้ใช้กับโมเดล นอกจากนี้ คุณยังระบุลักษณะการทํางานระดับผลิตภัณฑ์ได้ด้วยการตั้งค่าวิธีการของระบบแยกจากพรอมต์ที่ผู้ใช้ปลายทางระบุ
คุณตั้งค่าคำสั่งของระบบได้เมื่อเริ่มต้นโมเดล ดังนี้
// 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.",
});
จากนั้นคุณจะส่งคำขอไปยังโมเดลได้ตามปกติ
ขั้นตอนถัดไป
เมื่อได้สำรวจข้อมูลเบื้องต้นเกี่ยวกับ Gemini API แล้ว คุณอาจลองทำสิ่งต่อไปนี้
- การทำความเข้าใจภาพ: ดูวิธีใช้การทำความเข้าใจภาพแบบเนทีฟของ Gemini เพื่อประมวลผลรูปภาพและวิดีโอ
- การทำความเข้าใจเสียง: ดูวิธีใช้การทำความเข้าใจเสียงในตัวของ Gemini เพื่อประมวลผลไฟล์เสียง