เอกสารอ้างอิง API นี้อธิบาย API มาตรฐาน สตรีมมิง และเรียลไทม์ที่คุณใช้เพื่อโต้ตอบกับโมเดล Gemini ได้ คุณสามารถใช้ REST API ในสภาพแวดล้อมที่รองรับคำขอ HTTP โปรดดูคู่มือเริ่มใช้งานฉบับย่อเพื่อดูวิธี เริ่มต้นใช้งานการเรียก API ครั้งแรก หากกำลังมองหาข้อมูลอ้างอิงสำหรับ ไลบรารีและ SDK เฉพาะภาษาของเรา โปรดไปที่ลิงก์สำหรับภาษานั้นใน การนำทางด้านซ้ายใต้ SDK references
จุดสิ้นสุดหลัก
Gemini API จัดระเบียบตามปลายทางหลักต่อไปนี้
- การสร้างเนื้อหามาตรฐาน (
generateContent
): ปลายทาง REST มาตรฐานที่ประมวลผลคำขอและส่งคืน การตอบกลับแบบเต็มของโมเดลในแพ็กเกจเดียว วิธีนี้เหมาะที่สุดสำหรับงานที่ไม่มีการโต้ตอบ ซึ่งคุณรอผลลัพธ์ทั้งหมดได้ - การสร้างเนื้อหาการสตรีม (
streamGenerateContent
): ใช้เหตุการณ์ที่เซิร์ฟเวอร์ส่ง (SSE) เพื่อส่งกลุ่มคำตอบให้คุณเมื่อมีการสร้าง ซึ่งจะช่วยให้แอปพลิเคชันอย่างแชทบอททำงานได้เร็วขึ้นและโต้ตอบได้มากขึ้น - Live API (
BidiGenerateContent
): API ที่อิงตาม WebSocket แบบมีสถานะ สำหรับการสตรีมแบบ 2 ทาง ซึ่งออกแบบมาสำหรับกรณีการใช้งานแบบสนทนาแบบเรียลไทม์ - โหมดกลุ่ม (
batchGenerateContent
): ปลายทาง REST มาตรฐาน สำหรับการส่งคำขอgenerateContent
เป็นกลุ่ม - การฝัง (
embedContent
): จุดปลาย REST มาตรฐาน ที่สร้างเวกเตอร์การฝังข้อความจากอินพุตContent
- Gen Media API: จุดสิ้นสุดสำหรับการสร้างสื่อด้วยโมเดลเฉพาะทางของเรา เช่น Imagen สำหรับการสร้างรูปภาพ
และ Veo สำหรับการสร้างวิดีโอ
นอกจากนี้ Gemini ยังมีฟีเจอร์เหล่านี้ในตัว ซึ่งคุณเข้าถึงได้โดยใช้
generateContent
API - API ของแพลตฟอร์ม: ปลายทางยูทิลิตีที่รองรับความสามารถหลัก เช่น การอัปโหลดไฟล์ และการนับโทเค็น
การตรวจสอบสิทธิ์
คำขอทั้งหมดที่ส่งไปยัง Gemini API ต้องมีส่วนหัว x-goog-api-key
พร้อมคีย์ API ของคุณ สร้างคีย์ด้วยการคลิกเพียงไม่กี่ครั้งใน Google AI
Studio
ตัวอย่างคำขอที่มีคีย์ API รวมอยู่ในส่วนหัวมีดังนี้
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a few words"
}
]
}
]
}'
ดูวิธีการส่งคีย์ไปยัง API โดยใช้ Gemini SDK ได้ที่คำแนะนำการใช้คีย์ API ของ Gemini
การสร้างเนื้อหา
นี่คือปลายทางส่วนกลางสำหรับการส่งพรอมต์ไปยังโมเดล มีปลายทาง 2 แห่งสำหรับการสร้างเนื้อหา โดยความแตกต่างที่สำคัญคือวิธีที่คุณรับการตอบกลับ
generateContent
(REST): รับคำขอและให้ การตอบกลับรายการเดียวหลังจากที่โมเดลสร้างข้อความเสร็จสมบูรณ์แล้วstreamGenerateContent
(SSE): ได้รับคำขอเดียวกันทุกประการ แต่โมเดลจะสตรีมการตอบกลับกลับมาเป็นกลุ่มๆ ตามที่สร้างขึ้น ซึ่งจะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานแอปพลิเคชันแบบอินเทอร์แอกทีฟที่ดีขึ้น เนื่องจากคุณสามารถแสดงผลลัพธ์บางส่วนได้ทันที
โครงสร้างเนื้อความของคำขอ
เนื้อหาคำขอคือออบเจ็กต์ JSON ที่เหมือนกันสำหรับทั้งโหมดมาตรฐานและโหมดสตรีม และสร้างขึ้นจากออบเจ็กต์หลัก 2-3 รายการ ดังนี้
Content
ออบเจ็กต์: แสดงถึงการโต้ตอบครั้งเดียวในการสนทนาPart
ออบเจ็กต์: ข้อมูลภายในContent
เทิร์น (เช่น ข้อความหรือรูปภาพ)inline_data
(Blob
): คอนเทนเนอร์สำหรับไบต์สื่อดิบ และประเภท MIME ของไบต์เหล่านั้น
ที่ระดับสูงสุด เนื้อหาคำขอจะมีออบเจ็กต์ contents
ซึ่งเป็นรายการออบเจ็กต์ Content
แต่ละรายการแสดงถึงเทิร์นในการสนทนา ในกรณีส่วนใหญ่สำหรับการสร้างข้อความพื้นฐาน คุณจะมีออบเจ็กต์ Content
รายการเดียว แต่หากต้องการเก็บประวัติการสนทนาไว้ คุณสามารถใช้ออบเจ็กต์ Content
หลายรายการได้
ต่อไปนี้คือเนื้อหาคำขอ generateContent
ทั่วไป
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"role": "user",
"parts": [
// A list of Part objects goes here
]
},
{
"role": "model",
"parts": [
// A list of Part objects goes here
]
}
]
}'
โครงสร้างเนื้อหาการตอบกลับ
เนื้อหาการตอบกลับจะคล้ายกันสำหรับทั้งโหมดการสตรีมและโหมดมาตรฐาน ยกเว้นรายการต่อไปนี้
- โหมดมาตรฐาน: เนื้อหาการตอบกลับมีอินสแตนซ์ของ
GenerateContentResponse
- โหมดการสตรีม: เนื้อหาการตอบกลับมีสตรีมของอินสแตนซ์
GenerateContentResponse
โดยทั่วไป เนื้อหาของการตอบกลับจะมีออบเจ็กต์ candidates
ซึ่งเป็นรายการออบเจ็กต์ Candidate
ออบเจ็กต์ Candidate
มีออบเจ็กต์ Content
ซึ่งมีการตอบกลับที่สร้างขึ้นจากโมเดล
ตัวอย่างคำขอ
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าคอมโพเนนต์เหล่านี้ทำงานร่วมกันอย่างไรสำหรับคำขอประเภทต่างๆ
พรอมต์แบบข้อความเท่านั้น
พรอมต์ข้อความอย่างง่ายประกอบด้วยอาร์เรย์ contents
ที่มีออบเจ็กต์ Content
เดียว อาร์เรย์ parts
ของออบเจ็กต์นั้นมีออบเจ็กต์ Part
รายการเดียว
ซึ่งมีฟิลด์ text
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "Explain how AI works in a single paragraph."
}
]
}
]
}'
พรอมต์แบบมัลติโมดัล (ข้อความและรูปภาพ)
หากต้องการระบุทั้งข้อความและรูปภาพในพรอมต์ อาร์เรย์ parts
ควรมีออบเจ็กต์ Part
2 รายการ ได้แก่ รายการหนึ่งสำหรับข้อความ และอีกรายการหนึ่งสำหรับรูปภาพ inline_data
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{
"inline_data": {
"mime_type":"image/jpeg",
"data": "/9j/4AAQSkZJRgABAQ... (base64-encoded image)"
}
},
{"text": "What is in this picture?"},
]
}]
}'
การสนทนาหลายรอบ (แชท)
หากต้องการสร้างการสนทนาที่มีหลายเทิร์น ให้กำหนดอาร์เรย์ contents
ด้วยออบเจ็กต์ Content
หลายรายการ API จะใช้ประวัติทั้งหมดนี้เป็นบริบท
สำหรับคำตอบถัดไป role
สำหรับออบเจ็กต์ Content
แต่ละรายการควรสลับระหว่าง user
กับ model
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"role": "user",
"parts": [
{ "text": "Hello." }
]
},
{
"role": "model",
"parts": [
{ "text": "Hello! How can I help you today?" }
]
},
{
"role": "user",
"parts": [
{ "text": "Please write a four-line poem about the ocean." }
]
}
]
}'
สรุปประเด็นสำคัญ
Content
คือซองจดหมาย ซึ่งเป็นคอนเทนเนอร์ระดับบนสุดสำหรับเทิร์นของข้อความ ไม่ว่าจะเป็นจากผู้ใช้หรือโมเดลPart
ช่วยให้ใช้ข้อมูลหลายรูปแบบได้: ใช้ออบเจ็กต์Part
หลายรายการภายในออบเจ็กต์Content
เดียวเพื่อรวมข้อมูลประเภทต่างๆ (ข้อความ, รูปภาพ, URI ของวิดีโอ ฯลฯ)- เลือกวิธีการส่งข้อมูล ดังนี้
- สำหรับสื่อขนาดเล็กที่ฝังโดยตรง (เช่น รูปภาพส่วนใหญ่) ให้ใช้
Part
ที่มีinline_data
- สำหรับไฟล์ขนาดใหญ่หรือไฟล์ที่ต้องการนำกลับมาใช้ซ้ำในคำขอต่างๆ ให้ใช้ File API เพื่ออัปโหลดไฟล์และอ้างอิงด้วยส่วน
file_data
- สำหรับสื่อขนาดเล็กที่ฝังโดยตรง (เช่น รูปภาพส่วนใหญ่) ให้ใช้
- จัดการประวัติการสนทนา: สำหรับแอปพลิเคชันแชทที่ใช้ REST API ให้สร้างอาร์เรย์
contents
โดยการต่อท้ายออบเจ็กต์Content
สำหรับแต่ละรอบ สลับระหว่างบทบาท"user"
และ"model"
หากคุณใช้ SDK โปรดดูเอกสารประกอบของ SDK เพื่อดูวิธีที่แนะนำในการจัดการ ประวัติการสนทนา
ตัวอย่างการตอบกลับ
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าคอมโพเนนต์เหล่านี้ทำงานร่วมกันอย่างไรสำหรับคำขอประเภทต่างๆ
คำตอบที่เป็นข้อความเท่านั้น
การตอบกลับด้วยข้อความอย่างง่ายประกอบด้วยอาร์เรย์ candidates
ที่มีออบเจ็กต์ content
อย่างน้อย 1 รายการซึ่งมีคำตอบของโมเดล
ต่อไปนี้เป็นตัวอย่างการตอบกลับมาตรฐาน
{
"candidates": [
{
"content": {
"parts": [
{
"text": "At its core, Artificial Intelligence works by learning from vast amounts of data ..."
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 1
}
],
}
ต่อไปนี้คือชุดคำตอบการสตรีม คำตอบแต่ละรายการจะมี
responseId
ที่เชื่อมโยงคำตอบทั้งหมดเข้าด้วยกัน ดังนี้
{
"candidates": [
{
"content": {
"parts": [
{
"text": "The image displays"
}
],
"role": "model"
},
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": ...
},
"modelVersion": "gemini-2.5-flash-lite",
"responseId": "mAitaLmkHPPlz7IPvtfUqQ4"
}
...
{
"candidates": [
{
"content": {
"parts": [
{
"text": " the following materials:\n\n* **Wood:** The accordion and the violin are primarily"
}
],
"role": "model"
},
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": ...
}
"modelVersion": "gemini-2.5-flash-lite",
"responseId": "mAitaLmkHPPlz7IPvtfUqQ4"
}
API แบบสด (BidiGenerateContent) WebSockets API
Live API มี API ที่อิงตาม WebSocket แบบมีสถานะสำหรับการสตรีมแบบ 2 ทางเพื่อ เปิดใช้กรณีการใช้งานการสตรีมแบบเรียลไทม์ ดูรายละเอียดเพิ่มเติมได้ในคู่มือ Live API และข้อมูลอ้างอิง Live API
โมเดลเฉพาะทาง
นอกจากโมเดลตระกูล Gemini แล้ว Gemini API ยังมีปลายทางสำหรับโมเดลเฉพาะทาง เช่น โมเดล Imagen, Lyria และการฝัง คุณดูคำแนะนำเหล่านี้ได้ในส่วนโมเดล
API ของแพลตฟอร์ม
ส่วนปลายทางที่เหลือจะช่วยให้ใช้ความสามารถเพิ่มเติมกับปลายทางหลัก ที่อธิบายไว้จนถึงตอนนี้ได้ ดูข้อมูลเพิ่มเติมได้ในหัวข้อ โหมดกลุ่มและ File API ในส่วนคำแนะนำ
ขั้นตอนถัดไป
หากคุณเพิ่งเริ่มต้นใช้งาน โปรดดูคำแนะนำต่อไปนี้ ซึ่งจะช่วยให้คุณเข้าใจรูปแบบการเขียนโปรแกรม Gemini API
นอกจากนี้ คุณยังอาจต้องการดูคู่มือความสามารถ ซึ่งจะแนะนำฟีเจอร์ต่างๆ ของ Gemini API และแสดงตัวอย่างโค้ด