Gemini API ให้คุณเข้าถึง Generative Model ล่าสุดจาก Google เมื่อคุณคุ้นเคยกับฟีเจอร์ทั่วไปที่มีให้บริการผ่าน API แล้ว ให้ลองดูบทแนะนำสำหรับภาษาที่คุณเลือกเพื่อเริ่มพัฒนา
รูปแบบ
Gemini คือชุดโมเดล Generative AI หลายรูปแบบที่พัฒนาโดย Google โมเดล Gemini สามารถยอมรับข้อความและรูปภาพในพรอมต์ ทั้งนี้ขึ้นอยู่กับรูปแบบรูปแบบที่คุณเลือกและเอาต์พุตข้อความตอบกลับ
ดูข้อมูลโมเดลโดยละเอียดได้ที่หน้ารุ่น Gemini นอกจากนี้ คุณยังใช้เมธอด list_models
เพื่อแสดงโมเดลทั้งหมดที่ใช้ได้ แล้วใช้เมธอด get_model
เพื่อดูข้อมูลเมตาสำหรับโมเดลที่เฉพาะเจาะจง
ข้อมูลและการออกแบบพรอมต์
โมเดล Gemini บางรุ่นจะยอมรับทั้งข้อมูลข้อความและไฟล์สื่อเป็นอินพุต ความสามารถนี้สร้างความเป็นไปได้มากมายในการสร้างเนื้อหา วิเคราะห์ข้อมูล และแก้ปัญหา มีข้อจำกัดและข้อกำหนดบางอย่างที่ต้องพิจารณา รวมถึงขีดจำกัดโทเค็นอินพุตทั่วไปสำหรับโมเดลที่คุณใช้อยู่ ดูข้อมูลเกี่ยวกับขีดจำกัดของโทเค็นสำหรับบางรุ่นได้ที่รุ่นของ Gemini
พรอมต์ที่ใช้ Gemini API ต้องมีขนาดไม่เกิน 20 MB Gemini API มี File API สำหรับจัดเก็บไฟล์สื่อชั่วคราวเพื่อใช้ในพรอมต์ ซึ่งช่วยให้คุณส่งข้อมูลพรอมต์ที่เกินขีดจำกัด 20 MB ได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ Files API และรูปแบบไฟล์ที่รองรับการแสดงข้อความแจ้งได้ที่ข้อความแจ้งด้วยไฟล์สื่อ
การออกแบบพรอมต์และการป้อนข้อความ
การสร้างพรอมต์ที่มีประสิทธิภาพหรือวิศวกรรมพรอมต์เป็นการผสมผสานระหว่างศิลปะและวิทยาศาสตร์ ดูข้อมูลเบื้องต้นเกี่ยวกับข้อความแจ้งเพื่อดูคำแนะนำเกี่ยวกับวิธีสร้างข้อความแจ้งและคู่มือข้อความแจ้ง 101 เพื่อดูข้อมูลเกี่ยวกับวิธีต่างๆ ในข้อความแจ้ง
สร้างเนื้อหา
Gemini API ให้คุณใช้ทั้งข้อมูลข้อความและรูปภาพในข้อความแจ้ง ทั้งนี้ขึ้นอยู่กับรูปแบบโมเดลที่คุณใช้ เช่น คุณสร้างข้อความโดยใช้พรอมต์ข้อความกับโมเดล gemini-pro
และใช้ทั้งข้อมูลข้อความและรูปภาพในการแสดงข้อความแจ้งโมเดล gemini-pro-vision
ได้ ส่วนนี้จะแสดงตัวอย่างโค้ดง่ายๆ ของแต่ละโค้ด
ดูข้อมูลอ้างอิง API ของ generateContent
เพื่อดูตัวอย่างเพิ่มเติมโดยละเอียดซึ่งครอบคลุมพารามิเตอร์ทั้งหมด
การป้อนข้อความและรูปภาพ
คุณสามารถส่งพรอมต์ข้อความพร้อมรูปภาพไปยังโมเดล gemini-pro-vision
เพื่อทำงานที่เกี่ยวข้องกับการมองเห็นได้ เช่น การใส่คำบรรยายให้กับรูปภาพ
หรือการระบุสิ่งที่อยู่ในรูปภาพ
ตัวอย่างโค้ดต่อไปนี้จะแสดงการใช้งานง่ายๆ ของพรอมต์ข้อความและรูปภาพสำหรับแต่ละภาษาที่รองรับ
Python
model = genai.GenerativeModel('gemini-pro-vision')
cookie_picture = [{
'mime_type': 'image/png',
'data': pathlib.Path('cookie.png').read_bytes()
}]
prompt = "Do these look store-bought or homemade?"
response = model.generate_content(
model="gemini-pro-vision",
content=[prompt, cookie_picture]
)
print(response.text)
ดูบทแนะนำสำหรับ Python เพื่อดูข้อมูลโค้ดที่สมบูรณ์
Go
vmodel := client.GenerativeModel("gemini-pro-vision")
data, err := os.ReadFile(filepath.Join("path-to-image", imageFile))
if err != nil {
log.Fatal(err)
}
resp, err := vmodel.GenerateContent(ctx, genai.Text("Do these look store-bought or homemade?"), genai.ImageData("jpeg", data))
if err != nil {
log.Fatal(err)
}
ดูบทแนะนำเกี่ยวกับ Go สำหรับตัวอย่างแบบเต็ม
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });
const prompt = "Do these look store-bought or homemade?";
const image = {
inlineData: {
data: Buffer.from(fs.readFileSync("cookie.png")).toString("base64"),
mimeType: "image/png",
},
};
const result = await model.generateContent([prompt, image]);
console.log(result.response.text());
ดูบทแนะนำ Node.js เพื่อดูตัวอย่างแบบเต็ม
เว็บไซต์
const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });
const prompt = "Do these look store-bought or homemade?";
const image = {
inlineData: {
data: base64EncodedImage /* see JavaScript quickstart for details */,
mimeType: "image/png",
},
};
const result = await model.generateContent([prompt, image]);
console.log(result.response.text());
ดูบทแนะนำบนเว็บสำหรับตัวอย่างแบบเต็ม
ลูกดอก (Flutter)
final model = GenerativeModel(model: 'gemini-pro-vision', apiKey: apiKey);
final prompt = 'Do these look store-bought or homemade?';
final imageBytes = await File('cookie.png').readAsBytes();
final content = [
Content.multi([
TextPart(prompt),
DataPart('image/png', imageBytes),
])
];
final response = await model.generateContent(content);
print(response.text);
ดูตัวอย่างแบบเต็มในบทแนะนำ Dart (Flutter)
Swift
let model = GenerativeModel(name: "gemini-pro-vision", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"
let response = try await model.generateContent(prompt, cookieImage)
ดูตัวอย่างแบบเต็มได้ในบทแนะนำ Swft
Android
val generativeModel = GenerativeModel(
modelName = "gemini-pro-vision",
apiKey = BuildConfig.apiKey
)
val cookieImage: Bitmap = // ...
val inputContent = content() {
image(cookieImage)
text("Do these look store-bought or homemade?")
}
val response = generativeModel.generateContent(inputContent)
print(response.text)
ดูตัวอย่างแบบเต็มได้ที่บทแนะนำของ Android
cURL
curl https://generativelanguage.googleapis.com/v1/models/gemini-pro-vision:generateContent?key=${API_KEY} \
-H 'Content-Type: application/json' \
-X POST \
-d @<(echo'{
"contents":[
{ "parts":[
{"text": "Do these look store-bought or homemade?"},
{ "inlineData": {
"mimeType": "image/png",
"data": "'$(base64 -w0 cookie.png)'"
}
}
]
}
]
}')
ดูรายละเอียดเพิ่มเติมได้ในบทแนะนำ REST API
การป้อนข้อความเท่านั้น
นอกจากนี้ Gemini API ยังจัดการกับการป้อนข้อมูลแบบข้อความเท่านั้นได้ด้วย ฟีเจอร์นี้ช่วยให้คุณทำงานประมวลผลภาษาธรรมชาติ (NLP) ได้ เช่น การเติมข้อความและการสรุป
ตัวอย่างโค้ดต่อไปนี้สาธิตการใช้งานง่ายๆ ของข้อความแจ้งแบบข้อความเท่านั้นสำหรับแต่ละภาษาที่รองรับ
Python
model = genai.GenerativeModel('gemini-pro-vision')
prompt = "Write a story about a magic backpack."
response = model.generate_content(prompt)
ดูตัวอย่างแบบเต็มได้ที่บทแนะนำ Python
Go
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-pro")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
log.Fatal(err)
}
ดูบทแนะนำเกี่ยวกับ Go สำหรับตัวอย่างแบบเต็ม
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContent(prompt);
console.log(result.response.text());
ดูบทแนะนำ Node.js เพื่อดูตัวอย่างแบบเต็ม
เว็บไซต์
const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContent(prompt);
console.log(result.response.text());
ดูบทแนะนำบนเว็บสำหรับตัวอย่างแบบเต็ม
ลูกดอก (Flutter)
final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);
ดูตัวอย่างแบบเต็มในบทแนะนำ Dart (Flutter)
Swift
let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."
let response = try await model.generateContent(prompt)
ดูตัวอย่างแบบเต็มได้ในบทแนะนำ Swft
Android
val generativeModel = GenerativeModel(
modelName = "gemini-pro",
apiKey = BuildConfig.apiKey
)
val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)
ดูตัวอย่างแบบเต็มได้ที่บทแนะนำของ Android
cURL
curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{ "contents":[
{ "parts":[{"text": "Write a story about a magic backpack"}]}
]
}'
ดูรายละเอียดเพิ่มเติมได้ในบทแนะนำ REST API
เปลี่ยนการสนทนา (แชท) แบบหลายมุมมอง
คุณใช้ Gemini API เพื่อสร้างประสบการณ์การแชทแบบอินเทอร์แอกทีฟให้กับผู้ใช้ได้ การใช้ฟีเจอร์แชทของ API จะช่วยให้คุณรวบรวมคำถามและคำตอบได้หลายรอบ ทำให้ผู้ใช้ค่อยๆ หาคำตอบหรือรับความช่วยเหลือเกี่ยวกับปัญหาที่มีหลายส่วนได้ ฟีเจอร์นี้เหมาะสำหรับแอปพลิเคชันที่ต้องมีการสื่อสารอย่างต่อเนื่อง เช่น แชทบ็อต ติวเตอร์แบบอินเทอร์แอกทีฟ หรือผู้ช่วยฝ่ายสนับสนุนลูกค้า
ตัวอย่างโค้ดต่อไปนี้จะแสดงการใช้งานการโต้ตอบแชทแบบง่ายๆ สำหรับแต่ละภาษาที่รองรับ
Python
model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat(history=[])
response = chat.send_message(
"Pretend you\'re a snowman and stay in character for each response.")
print(response.text)
response = chat.send_message(
"What\'s your favorite season of the year?")
print(response.text)
ดูการสาธิตการแชทในบทแนะนำ Python สำหรับตัวอย่างแบบเต็ม
Go
model := client.GenerativeModel("gemini-pro")
cs := model.StartChat()
cs.History = []*genai.Content{
&genai.Content{
Parts: []genai.Part{
genai.Text("Pretend you're a snowman and stay in character for each response."),
},
Role: "user",
},
&genai.Content{
Parts: []genai.Part{
genai.Text("Hello! It's cold! Isn't that great?"),
},
Role: "model",
},
}
resp, err := cs.SendMessage(ctx, genai.Text("What's your favorite season of the year?"))
if err != nil {
log.Fatal(err)
}
ดูการสาธิตแชทในบทแนะนำเกี่ยวกับ Go เพื่อดูตัวอย่างแบบเต็ม
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-pro"});
const chat = model.startChat({
history: [
{
role: "user",
parts: "Pretend you're a snowman and stay in character for each response.",
},
{
role: "model",
parts: "Hello! It's cold! Isn't that great?",
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());
ดูการสาธิตแชทในบทแนะนำ Node.js เพื่อดูตัวอย่างแบบเต็ม
เว็บไซต์
const model = genAI.getGenerativeModel({ model: "gemini-pro"});
const chat = model.startChat({
history: [
{
role: "user",
parts: "Pretend you're a snowman and stay in character for each response.",
},
{
role: "model",
parts: "Hello! It's so cold! Isn't that great?",
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());
ดูการสาธิตแชทในบทแนะนำบนเว็บเพื่อดูตัวอย่างแบบเต็ม
ลูกดอก (Flutter)
final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final chat = model.startChat(history: [
Content.text(
"Pretend you're a snowman and stay in character for each response."),
Content.model([TextPart("Hello! It's cold! Isn't that great?")]),
]);
final content = Content.text("What's your favorite season of the year?");
final response = await chat.sendMessage(content);
print(response.text);
ดูการสาธิตการแชทในบทแนะนำ Dart (Flutter) เพื่อดูตัวอย่างแบบเต็ม
Swift
let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let chat = model.startChat()
var message = "Pretend you're a snowman and stay in character for each response."
var response = try await chat.sendMessage(message)
message = "What\'s your favorite season of the year?"
response = try await chat.sendMessage(message)
ดูการสาธิตแชทในบทแนะนำของ Swft เพื่อดูตัวอย่างแบบเต็ม
Android
val generativeModel = GenerativeModel(
modelName = "gemini-pro",
apiKey = BuildConfig.apiKey
)
val chat = generativeModel.startChat()
val response = chat.sendMessage("Pretend you're a snowman and stay in
character for each response.")
print(response.text)
ดูตัวอย่างแบบเต็มได้ที่บทแนะนำของ Android
cURL
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \ -H 'Content-Type: application/json' \ -X POST \ -d '{ "contents": [ {"role":"user", "parts":[{ "text": "Pretend you're a snowman and stay in character for each {"role": "model", response."}]}, "parts":[{ "text": "Hello! It's so cold! Isn't that great?"}]}, {"role": "user", "parts":[{ "text": "What\'s your favorite season of the year?"}]}, ] }' 2> /dev/null | grep "text"
# response example: "text": "Winter, of course!"
ดูรายละเอียดเพิ่มเติมได้ในบทแนะนำ REST API
สตรีมคำตอบ
Gemini API เป็นช่องทางเพิ่มเติมในการรับการตอบสนองจากโมเดล Generative AI ในรูปแบบสตรีมข้อมูล การตอบกลับแบบสตรีมจะส่งข้อมูลส่วนเพิ่มกลับไปยังแอปพลิเคชันของคุณตามที่สร้างขึ้นจากโมเดล ฟีเจอร์นี้ช่วยให้คุณตอบกลับคำขอของผู้ใช้เพื่อแสดงความคืบหน้าได้อย่างรวดเร็วและสร้างประสบการณ์แบบอินเทอร์แอกทีฟมากขึ้น
คำตอบแบบสตรีมเป็นตัวเลือกสำหรับข้อความแจ้งรูปแบบอิสระและแชทกับโมเดล Gemini ตัวอย่างโค้ดต่อไปนี้แสดงวิธีขอคำตอบแบบสตรีมสำหรับพรอมต์สำหรับแต่ละภาษาที่รองรับ
Python
prompt = "Write a story about a magic backpack."
response = genai.stream_generate_content(
model="models/gemini-pro",
prompt=prompt
)
ดูบทแนะนำสำหรับ Python เพื่อดูข้อมูลโค้ดที่สมบูรณ์
Go
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-pro")
iter := model.GenerateContentStream(ctx, genai.Text("Write a story about a magic backpack."))
for {
resp, err := iter.Next()
if err == iterator.Done {
break
}
if err != nil {
log.Fatal(err)
}
// print resp
}
ดูบทแนะนำเกี่ยวกับ Go สำหรับตัวอย่างแบบเต็ม
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-pro" });
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();
console.log(chunkText);
}
ดูบทแนะนำ Node.js เพื่อดูตัวอย่างแบบเต็ม
เว็บไซต์
const model = genAI.getGenerativeModel({ model: "gemini-pro" });
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();
console.log(chunkText);
}
ดูบทแนะนำบนเว็บสำหรับตัวอย่างแบบเต็ม
ลูกดอก (Flutter)
final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = model.generateContentStream(content);
await for (final chunk in response) {
print(chunk.text);
}
ดูตัวอย่างแบบเต็มในบทแนะนำ Dart (Flutter)
Swift
let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."
let stream = model.generateContentStream(prompt)
for try await chunk in stream {
print(chunk.text ?? "No content")
}
ดูตัวอย่างแบบเต็มได้ในบทแนะนำ Swft
Android
val generativeModel = GenerativeModel(
modelName = "gemini-pro",
apiKey = BuildConfig.apiKey
)
val inputContent = content {
text("Write a story about a magic backpack.")
}
var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
print(chunk.text)
fullResponse += chunk.text
}
ดูตัวอย่างแบบเต็มได้ที่บทแนะนำของ Android
cURL
curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:streamGenerateContent?key=${API_KEY} \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{ "contents":[
{"role": "user",
"parts":[{"text": "Write a story about a magic backpack."}]
}
]
}' > response.json
ดูรายละเอียดเพิ่มเติมได้ในบทแนะนำ REST API
การตอบกลับรูปแบบ JSON
คุณอาจต้องการให้แสดงผลการตอบกลับพรอมต์ในรูปแบบข้อมูลที่มีโครงสร้าง ทั้งนี้ขึ้นอยู่กับแอปพลิเคชันของคุณ โดยเฉพาะอย่างยิ่งหากคุณใช้การตอบกลับดังกล่าวเพื่อสร้างอินเทอร์เฟซการเขียนโปรแกรม Gemini API มีพารามิเตอร์การกำหนดค่าเพื่อขอการตอบกลับในรูปแบบ JSON
คุณใช้ฟีเจอร์เอาต์พุตนี้ได้โดยตั้งค่าตัวเลือกการกำหนดค่า response_mime_type
เป็น application/json
และรวมข้อกำหนดรูปแบบ JSON ไว้ในเนื้อหาของคำขอ ตัวอย่างโค้ดต่อไปนี้แสดงวิธีขอการตอบกลับ JSON สำหรับพรอมต์
cURL
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{ "contents":[{
"parts":[{"text": "List 5 popular cookie recipes using this JSON schema: \{ \"type\": \"object\", \"properties\": \{ \"recipe_name\": \{ \"type\": \"string\" \},\}\}"}] }],
"generationConfig": {
"response_mime_type": "application/json",
} }'
การฝัง
บริการฝังใน Gemini API จะสร้างการฝังที่ทันสมัย สำหรับคำ วลี และประโยค การฝังที่ได้หลังจากนั้นสามารถใช้กับงาน NLP ได้ เช่น การค้นหาความหมาย การแยกประเภทข้อความ การจัดกลุ่ม และอื่นๆ อีกมากมาย ดูคู่มือการฝังเพื่อเรียนรู้ว่าการฝังคืออะไรและกรณีการใช้งานที่สำคัญสำหรับบริการฝังคืออะไรเพื่อช่วยคุณในการเริ่มต้นใช้งาน
ขั้นตอนถัดไป
- เริ่มต้นใช้งาน UI ของ Google AI Studio โดยใช้การเริ่มต้นอย่างรวดเร็วของ Google AI Studio
- ลองใช้การเข้าถึงฝั่งเซิร์ฟเวอร์ Gemini API ด้วยบทแนะนำสำหรับ Python, Go หรือ Node.js
- เริ่มสร้างเว็บด้วยบทแนะนำบนเว็บ
- เริ่มสร้างสำหรับแอปบนอุปกรณ์เคลื่อนที่ด้วยบทแนะนำ Swft หรือบทแนะนำสำหรับ Android
- หากคุณเป็นผู้ใช้ Google Cloud อยู่แล้ว (หรือต้องการใช้ Gemini บน Vertex เพื่อใช้ประโยชน์จากระบบนิเวศของ Google Cloud ที่มีประสิทธิภาพ) โปรดไปที่ Generative AI ใน Vertex AI เพื่อดูข้อมูลเพิ่มเติม