Live API เป็น API แบบมีสถานะ ที่ใช้ WebSockets ในส่วนนี้ คุณจะเห็นรายละเอียดเพิ่มเติมเกี่ยวกับ WebSockets API
เซสชัน
การเชื่อมต่อ WebSocket จะสร้างเซสชันระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ Gemini หลังจากไคลเอ็นต์เริ่มการเชื่อมต่อใหม่ เซสชันจะแลกเปลี่ยน ข้อความกับเซิร์ฟเวอร์เพื่อทำสิ่งต่อไปนี้ได้
- ส่งข้อความ เสียง หรือวิดีโอไปยังเซิร์ฟเวอร์ Gemini
- รับคำขอเสียง ข้อความ หรือการเรียกใช้ฟังก์ชันจากเซิร์ฟเวอร์ Gemini
การเชื่อมต่อ WebSocket
หากต้องการเริ่มเซสชัน ให้เชื่อมต่อกับปลายทาง WebSocket นี้
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent
การกำหนดค่าเซสชัน
ข้อความแรกที่ส่งหลังจากสร้างการเชื่อมต่อ WebSocket จะกำหนด การกำหนดค่าเซสชัน ซึ่งรวมถึงโมเดล พารามิเตอร์การสร้าง คำสั่งของระบบ และเครื่องมือ
คุณอัปเดตการกำหนดค่าไม่ได้ขณะที่การเชื่อมต่อเปิดอยู่ อย่างไรก็ตาม คุณสามารถเปลี่ยนพารามิเตอร์การกำหนดค่าได้ ยกเว้นโมเดล เมื่อหยุดชั่วคราวและ กลับมาทำงานต่อผ่านกลไกการกลับมาทำงานต่อของเซสชัน
ดูการกำหนดค่าตัวอย่างต่อไปนี้ โปรดทราบว่ารูปแบบการตั้งชื่อใน SDK อาจ แตกต่างกัน คุณดูตัวเลือกการกำหนดค่า Python SDK ได้ที่นี่
{
"model": string,
"generationConfig": {
"candidateCount": integer,
"maxOutputTokens": integer,
"temperature": number,
"topP": number,
"topK": integer,
"presencePenalty": number,
"frequencyPenalty": number,
"responseModalities": [string],
"speechConfig": object,
"mediaResolution": object,
"translationConfig": object
},
"systemInstruction": string,
"tools": [object]
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟิลด์ API ได้ที่ generationConfig
ส่งข้อความ
หากต้องการแลกเปลี่ยนข้อความผ่านการเชื่อมต่อ WebSocket ไคลเอ็นต์ต้องส่งออบเจ็กต์ JSON ผ่านการเชื่อมต่อ WebSocket ที่เปิดอยู่ ออบเจ็กต์ JSON ต้องมีฟิลด์เพียงฟิลด์เดียวจากชุดออบเจ็กต์ต่อไปนี้
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
ข้อความจากลูกค้าที่รองรับ
ดูข้อความไคลเอ็นต์ที่รองรับได้ในตารางต่อไปนี้
| ข้อความ | คำอธิบาย |
|---|---|
BidiGenerateContentSetup |
การกำหนดค่าเซสชันที่จะส่งในข้อความแรก |
BidiGenerateContentClientContent |
การอัปเดตเนื้อหาที่เพิ่มขึ้นของบทสนทนาปัจจุบันที่ส่งจากไคลเอ็นต์ |
BidiGenerateContentRealtimeInput |
การป้อนข้อมูลเสียง วิดีโอ หรือข้อความแบบเรียลไทม์ |
BidiGenerateContentToolResponse |
การตอบกลับ ToolCallMessage ที่ได้รับจากเซิร์ฟเวอร์ |
รับข้อความ
หากต้องการรับข้อความจาก Gemini ให้ฟังเหตุการณ์ "message" ของ WebSocket จากนั้นแยกวิเคราะห์ผลลัพธ์ตามคำจำกัดความของ ข้อความเซิร์ฟเวอร์ที่รองรับ
โปรดดูข้อมูลต่อไปนี้
async with client.aio.live.connect(model='...', config=config) as session:
await session.send(input='Hello world!', end_of_turn=True)
async for message in session.receive():
print(message)
ข้อความเซิร์ฟเวอร์อาจมีฟิลด์ usageMetadata แต่จะรวมฟิลด์อื่นๆ จากข้อความ BidiGenerateContentServerMessage
เพียง 1 รายการ (ระบบไม่ได้แสดงmessageTypeยูเนียนใน JSON ดังนั้นฟิลด์จะ
ปรากฏที่ระดับบนสุดของข้อความ)
ข้อความและกิจกรรม
ActivityEnd
ประเภทนี้ไม่มีฟิลด์
ทำเครื่องหมายจุดสิ้นสุดของกิจกรรมของผู้ใช้
ActivityHandling
วิธีต่างๆ ในการจัดการกิจกรรมของผู้ใช้
| Enum | |
|---|---|
ACTIVITY_HANDLING_UNSPECIFIED |
หากไม่ได้ระบุไว้ ลักษณะการทำงานเริ่มต้นจะเป็น START_OF_ACTIVITY_INTERRUPTS |
START_OF_ACTIVITY_INTERRUPTS |
หากเป็นจริง การเริ่มต้นกิจกรรมจะขัดจังหวะการตอบกลับของโมเดล (หรือที่เรียกว่า "แทรก") ระบบจะตัดคำตอบปัจจุบันของโมเดลในขณะที่หยุดชะงัก นี่คือลักษณะการทำงานเริ่มต้น |
NO_INTERRUPTION |
การตอบกลับของโมเดลจะไม่ถูกขัดจังหวะ |
ActivityStart
ประเภทนี้ไม่มีฟิลด์
ทำเครื่องหมายจุดเริ่มต้นของกิจกรรมของผู้ใช้
AudioTranscriptionConfig
การกำหนดค่าการถอดเสียงเป็นคำ
| ช่อง | |
|---|---|
languageCodes[] |
ไม่บังคับ รหัสภาษา BCP-47 ที่ให้คำแนะนำเกี่ยวกับภาษาที่อยู่ในเสียง หากเว้นว่างไว้ ระบบจะใช้การตรวจหาภาษาอัตโนมัติเป็นค่าเริ่มต้น |
customVocabulary[] |
ไม่บังคับ รายการวลีคำศัพท์ที่กำหนดเองเพื่อให้น้ำหนักโมเดลการจดจำเสียงพูดไปที่การจดจำคำที่เฉพาะเจาะจง (ชื่อสินค้า คำนามเฉพาะ ศัพท์เฉพาะ) |
wordTimestamp |
ไม่บังคับ กำหนดค่าการสร้างการประทับเวลาระดับคำ |
diarization |
ไม่บังคับ กำหนดค่าการแยกแยะเสียงผู้พูด |
mode |
ไม่บังคับ กำหนดค่าโหมดการถอดเสียงเป็นคำ ค่าที่รองรับ: |
โหมด
โหมดการถอดเสียงเป็นคำ
| Enum | |
|---|---|
MODE_UNSPECIFIED |
โหมดการถอดเสียงเป็นคำที่ไม่ได้ระบุ |
VERBATIM |
โหมดการถอดเสียงเป็นคำแบบตรงตามคำพูด |
SMART |
โหมดถอดเสียงอัจฉริยะ |
AutomaticActivityDetection
กำหนดค่าการตรวจหากิจกรรมโดยอัตโนมัติ
| ช่อง | |
|---|---|
disabled |
ไม่บังคับ หากเปิดใช้ (ค่าเริ่มต้น) ระบบจะนับเสียงและข้อความที่ตรวจพบเป็นกิจกรรม หากปิดใช้ ไคลเอ็นต์ต้องส่งสัญญาณกิจกรรม |
startOfSpeechSensitivity |
ไม่บังคับ กำหนดความเป็นไปได้ที่จะตรวจจับคำพูด |
prefixPaddingMs |
ไม่บังคับ ระยะเวลาที่ต้องใช้ของคำพูดที่ตรวจพบก่อนที่จะเริ่มพูด ยิ่งค่านี้ต่ำเท่าใด การตรวจจับจุดเริ่มต้นของคำพูดก็จะยิ่งไวขึ้นและระบบจะจดจำคำพูดที่สั้นลงได้ อย่างไรก็ตาม วิธีนี้ยังเพิ่มโอกาสเกิดผลบวกลวงด้วย |
endOfSpeechSensitivity |
ไม่บังคับ กำหนดความเป็นไปได้ที่ระบบจะหยุดการพูดที่ตรวจพบ |
silenceDurationMs |
ไม่บังคับ ระยะเวลาที่ต้องตรวจพบเสียงที่ไม่ใช่คำพูด (เช่น ความเงียบ) ก่อนที่จะบันทึกจุดสิ้นสุดของคำพูด ยิ่งค่านี้มากเท่าใด ช่องว่างของคำพูดก็จะยิ่งนานขึ้นโดยไม่ขัดจังหวะกิจกรรมของผู้ใช้ แต่จะเพิ่มเวลาในการตอบสนองของโมเดล |
BidiGenerateContentClientContent
การอัปเดตการสนทนาปัจจุบันที่เพิ่มขึ้นซึ่งส่งจากไคลเอ็นต์ เนื้อหาทั้งหมดที่นี่จะต่อท้ายประวัติการสนทนาโดยไม่มีเงื่อนไขและใช้เป็นส่วนหนึ่งของพรอมต์ไปยังโมเดลเพื่อสร้างเนื้อหา
ข้อความที่นี่จะขัดจังหวะการสร้างโมเดลปัจจุบัน
| ช่อง | |
|---|---|
turns[] |
ไม่บังคับ เนื้อหาที่ต่อท้ายการสนทนากับโมเดลในปัจจุบัน สำหรับคำค้นหาแบบเทิร์นเดียว นี่คืออินสแตนซ์เดียว สำหรับคำค้นหาแบบการสนทนาไปมา นี่คือฟิลด์ที่ซ้ำได้ซึ่งมีประวัติการสนทนาและคำขอครั้งล่าสุด |
turnComplete |
ไม่บังคับ หากเป็นจริง แสดงว่าการสร้างเนื้อหาของเซิร์ฟเวอร์ควรเริ่มต้นด้วยพรอมต์ที่สะสมอยู่ในปัจจุบัน ไม่เช่นนั้น เซิร์ฟเวอร์จะรอข้อความเพิ่มเติมก่อนเริ่มสร้าง |
BidiGenerateContentRealtimeInput
ข้อมูลที่ผู้ใช้ป้อนซึ่งส่งแบบเรียลไทม์
ระบบจะจัดการรูปแบบต่างๆ (เสียง วิดีโอ และข้อความ) เป็นสตรีมพร้อมกัน ระบบไม่รับประกันการเรียงลำดับในสตรีมเหล่านี้
ซึ่งแตกต่างจาก BidiGenerateContentClientContent ในหลายๆ ด้าน ดังนี้
- ส่งได้อย่างต่อเนื่องโดยไม่หยุดชะงักในการสร้างโมเดล
- หากจำเป็นต้องรวมข้อมูลที่สลับกันระหว่าง
BidiGenerateContentClientContentกับBidiGenerateContentRealtimeInputเซิร์ฟเวอร์จะพยายามเพิ่มประสิทธิภาพเพื่อให้ได้การตอบสนองที่ดีที่สุด แต่ไม่มีการรับประกัน - ระบบไม่ได้ระบุจุดสิ้นสุดของรอบอย่างชัดเจน แต่จะพิจารณาจากกิจกรรมของผู้ใช้ (เช่น สิ้นสุดการพูด)
- แม้จะยังไม่ถึงจุดสิ้นสุดของรอบ แต่ระบบจะประมวลผลข้อมูลทีละรายการเพื่อเพิ่มประสิทธิภาพให้โมเดลเริ่มตอบกลับได้อย่างรวดเร็ว
| ช่อง | |
|---|---|
mediaChunks[] |
ไม่บังคับ ข้อมูลไบต์แบบอินไลน์สำหรับอินพุตสื่อ ระบบไม่รองรับ เลิกใช้งานแล้ว: โปรดใช้ |
audio |
ไม่บังคับ ซึ่งจะสร้างสตรีมอินพุตเสียงแบบเรียลไทม์ |
video |
ไม่บังคับ ซึ่งจะสร้างสตรีมอินพุตวิดีโอแบบเรียลไทม์ |
activityStart |
ไม่บังคับ ทำเครื่องหมายจุดเริ่มต้นของกิจกรรมของผู้ใช้ ระบบจะส่งข้อมูลนี้ได้ก็ต่อเมื่อปิดใช้การตรวจหากิจกรรมอัตโนมัติ (ฝั่งเซิร์ฟเวอร์) |
activityEnd |
ไม่บังคับ ทำเครื่องหมายจุดสิ้นสุดของกิจกรรมของผู้ใช้ ระบบจะส่งข้อมูลนี้ได้ก็ต่อเมื่อปิดใช้การตรวจหากิจกรรมอัตโนมัติ (ฝั่งเซิร์ฟเวอร์) |
mediaResolution |
ไม่บังคับ ความละเอียดของสื่อที่จะใช้ หากไม่ได้ระบุ ระบบจะใช้ |
audioStreamEnd |
ไม่บังคับ ระบุว่าสตรีมเสียงสิ้นสุดลงแล้ว เช่น เนื่องจากปิดไมโครโฟน ควรส่งเฉพาะเมื่อเปิดใช้การตรวจหากิจกรรมอัตโนมัติ (ซึ่งเป็นค่าเริ่มต้น) ไคลเอ็นต์สามารถเปิดสตรีมอีกครั้งได้โดยส่งข้อความเสียง |
text |
ไม่บังคับ ซึ่งจะสร้างสตรีมอินพุตข้อความแบบเรียลไทม์ |
BidiGenerateContentServerContent
การอัปเดตเซิร์ฟเวอร์ที่เพิ่มขึ้นซึ่งโมเดลสร้างขึ้นเพื่อตอบกลับข้อความของไคลเอ็นต์
ระบบจะสร้างเนื้อหาโดยเร็วที่สุด ไม่ใช่แบบเรียลไทม์ ลูกค้าอาจเลือกบัฟเฟอร์และเล่นแบบเรียลไทม์
| ช่อง | |
|---|---|
generationComplete |
เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าโมเดลสร้างเสร็จแล้ว เมื่อโมเดลถูกขัดจังหวะขณะสร้าง จะไม่มีข้อความ "generation_complete" ในเทิร์นที่ถูกขัดจังหวะ แต่จะผ่าน "interrupted > turn_complete" เมื่อโมเดลถือว่าเป็นการเล่นแบบเรียลไทม์ จะมีความล่าช้าระหว่าง generation_complete กับ turn_complete ซึ่งเกิดจากโมเดลรอให้การเล่นเสร็จสิ้น |
turnComplete |
เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าโมเดลได้ดำเนินการในเทิร์นของตนเสร็จแล้ว การสร้างจะเริ่มขึ้นเมื่อได้รับข้อความเพิ่มเติมจากไคลเอ็นต์เท่านั้น โปรดทราบว่าเมื่อเปิดใช้การรายงานสถานะการเล่น ระบบจะปล่อยเหตุการณ์นี้ก็ต่อเมื่อสถานะการเล่นระบุว่าการเล่นเสร็จสมบูรณ์แล้วเท่านั้น ระบบจะไม่สนใจสถานะการเล่นในอนาคตของรุ่นเดียวกัน |
interrupted |
เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าข้อความของไคลเอ็นต์ขัดจังหวะการสร้างโมเดลปัจจุบัน หากไคลเอ็นต์กำลังเล่นเนื้อหาแบบเรียลไทม์ นี่เป็นสัญญาณที่ดีในการหยุดและล้างคิวการเล่นปัจจุบัน |
groundingMetadata |
เอาต์พุตเท่านั้น ข้อมูลเมตาพื้นฐานสำหรับเนื้อหาที่สร้างขึ้น |
inputTranscription |
เอาต์พุตเท่านั้น ป้อนข้อความถอดเสียง ระบบจะส่งการถอดเสียงเป็นคำแยกจากข้อความเซิร์ฟเวอร์อื่นๆ และไม่มีการรับประกันลำดับ |
interimInputTranscription |
เอาต์พุตเท่านั้น อัปเดตการถอดเสียงที่มีเวลาในการตอบสนองต่ำขณะที่ผู้ใช้กำลังพูด ฟิลด์นี้อาจมีการอัปเดตบ่อย |
outputTranscription |
เอาต์พุตเท่านั้น แสดงผลการถอดเสียงเป็นคำ การถอดเสียงเหล่านี้เป็นส่วนหนึ่งของเอาต์พุตการสร้างของเซิร์ฟเวอร์ ระบบจะส่งการถอดเสียงเอาต์พุตสุดท้ายของเทิร์นนี้ก่อน |
urlContextMetadata |
|
waitingForInput |
เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าโมเดลไม่ได้สร้างเนื้อหาเนื่องจากกำลังรอข้อมูลเพิ่มเติมจากผู้ใช้ เช่น เนื่องจากคาดหวังให้ผู้ใช้พูดต่อ |
interactionStatus |
เอาต์พุตเท่านั้น สถานะกิจกรรมปัจจุบันของเซสชันสด ส่งพร้อมกับ |
modelTurn |
เอาต์พุตเท่านั้น เนื้อหาที่โมเดลสร้างขึ้นเป็นส่วนหนึ่งของการสนทนากับผู้ใช้ในปัจจุบัน |
BidiGenerateContentServerMessage
ข้อความตอบกลับสำหรับการเรียก BidiGenerateContent
| ช่อง | |
|---|---|
usageMetadata |
เอาต์พุตเท่านั้น ข้อมูลเมตาการใช้งานเกี่ยวกับคำตอบ |
voiceActivity |
เอาต์พุตเท่านั้น ตรวจพบกิจกรรมเสียงพูดในสตรีมเสียง |
ฟิลด์ Union messageType ประเภทของข้อความ messageType ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
setupComplete |
เอาต์พุตเท่านั้น ส่งเพื่อตอบกลับข้อความ |
serverContent |
เอาต์พุตเท่านั้น เนื้อหาที่โมเดลสร้างขึ้นเพื่อตอบกลับข้อความของไคลเอ็นต์ |
toolCall |
เอาต์พุตเท่านั้น คำขอให้ไคลเอ็นต์ดำเนินการ |
toolCallCancellation |
เอาต์พุตเท่านั้น การแจ้งเตือนสำหรับไคลเอ็นต์ว่าควรยกเลิก |
goAway |
เอาต์พุตเท่านั้น การแจ้งเตือนว่าเซิร์ฟเวอร์จะยกเลิกการเชื่อมต่อในเร็วๆ นี้ |
sessionResumptionUpdate |
เอาต์พุตเท่านั้น การอัปเดตสถานะการกลับมาใช้เซสชันต่อ |
BidiGenerateContentSetup
ข้อความที่จะส่งในแรก (และในBidiGenerateContentClientMessageแรกเท่านั้น) มีการกำหนดค่าที่จะใช้ตลอดระยะเวลาของ RPC การสตรีม
ไคลเอ็นต์ควรรอข้อความ BidiGenerateContentSetupComplete ก่อนส่งข้อความเพิ่มเติม
| ช่อง | |
|---|---|
model |
ต้องระบุ ชื่อทรัพยากรของโมเดล ซึ่งจะใช้เป็นรหัสให้โมเดลใช้ รูปแบบ: |
generationConfig |
ไม่บังคับ การกำหนดค่าการสร้าง ระบบไม่รองรับฟิลด์ต่อไปนี้
|
systemInstruction |
ไม่บังคับ ผู้ใช้ระบุคำสั่งของระบบสำหรับโมเดล หมายเหตุ: ควรใช้ข้อความเท่านั้นในส่วนต่างๆ และเนื้อหาในแต่ละส่วนจะอยู่ในย่อหน้าแยกกัน |
tools[] |
ไม่บังคับ รายการ
|
realtimeInputConfig |
ไม่บังคับ กำหนดค่าการจัดการอินพุตแบบเรียลไทม์ |
sessionResumption |
ไม่บังคับ กำหนดค่ากลไกการกลับมาใช้เซสชันต่อ หากรวมไว้ เซิร์ฟเวอร์จะส่งข้อความ |
contextWindowCompression |
ไม่บังคับ กำหนดค่ากลไกการบีบอัดหน้าต่างบริบท หากรวมไว้ เซิร์ฟเวอร์จะลดขนาดบริบทโดยอัตโนมัติเมื่อบริบทมีความยาวเกินความยาวที่กำหนดค่าไว้ |
inputAudioTranscription |
ไม่บังคับ หากตั้งค่าไว้ จะเปิดใช้การถอดเสียงของอินพุตเสียง การถอดเสียงเป็นคำจะสอดคล้องกับภาษาของเสียงที่ป้อน หากมีการกำหนดค่า |
outputAudioTranscription |
ไม่บังคับ หากตั้งค่าไว้ จะเปิดใช้การถอดเสียงเป็นคำของเอาต์พุตเสียงของโมเดล การถอดเสียงจะสอดคล้องกับรหัสภาษาที่ระบุสำหรับเสียงเอาต์พุต หากมีการกำหนดค่า |
proactivity |
ไม่บังคับ กำหนดค่าความสามารถในการคาดการณ์ของโมเดล ซึ่งช่วยให้โมเดลตอบสนองต่ออินพุตได้อย่างต่อเนื่องและละเว้นอินพุตที่ไม่เกี่ยวข้อง |
historyConfig |
ไม่บังคับ กำหนดค่าการแลกเปลี่ยนประวัติระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ |
labels |
ไม่บังคับ ป้ายกำกับที่มีข้อมูลเมตาที่ผู้ใช้กำหนดสำหรับคำขอ ไม่บังคับ ป้ายกำกับต้องเป็นไปตามข้อกำหนดของป้ายกำกับ Cloud มาตรฐานแบบรวม - คีย์ป้ายกำกับต้องขึ้นต้นด้วยตัวอักษร - คีย์และค่าของป้ายกำกับต้องมีความยาวไม่เกิน 63 อักขระ (จุดรหัส Unicode) โดยต้องมีเฉพาะตัวอักษรพิมพ์เล็ก ตัวเลข ขีดล่าง และขีดกลางเท่านั้น - อนุญาตให้ใช้อักขระสากล การใช้งาน - ตัวระบุความปลอดภัยจากผู้รวบรวมข้อมูล: ใช้คีย์ |
BidiGenerateContentSetupComplete
ประเภทนี้ไม่มีฟิลด์
ส่งเพื่อตอบกลับข้อความ BidiGenerateContentSetup จากไคลเอ็นต์
BidiGenerateContentToolCall
คำขอให้ไคลเอ็นต์ดำเนินการ functionCalls และส่งคืนการตอบกลับพร้อม id ที่ตรงกัน
| ช่อง | |
|---|---|
functionCalls[] |
เอาต์พุตเท่านั้น การเรียกใช้ฟังก์ชันที่จะดำเนินการ |
BidiGenerateContentToolCallCancellation
การแจ้งเตือนสำหรับลูกค้าว่าไม่ควรดำเนินการกับ ToolCallMessage ที่ออกก่อนหน้านี้ซึ่งมี id ที่ระบุ และควรยกเลิก หากการเรียกใช้เครื่องมือเหล่านั้นมีผลข้างเคียง ไคลเอ็นต์อาจพยายามยกเลิกการเรียกใช้เครื่องมือ ข้อความนี้จะปรากฏในกรณีที่ไคลเอ็นต์ขัดจังหวะการตอบกลับของเซิร์ฟเวอร์เท่านั้น
| ช่อง | |
|---|---|
ids[] |
เอาต์พุตเท่านั้น รหัสของการเรียกใช้เครื่องมือที่จะยกเลิก |
BidiGenerateContentToolResponse
การตอบกลับที่ไคลเอ็นต์สร้างขึ้นสำหรับ ToolCall ที่ได้รับจากเซิร์ฟเวอร์ ระบบจะจับคู่ออบเจ็กต์ FunctionResponse แต่ละรายการกับออบเจ็กต์ FunctionCall ที่เกี่ยวข้องตามฟิลด์ id
โปรดทราบว่าใน GenerateContent API แบบเอกภาคและแบบสตรีมมิงฝั่งเซิร์ฟเวอร์ การเรียกใช้ฟังก์ชันจะเกิดขึ้นโดยการแลกเปลี่ยนส่วน Content ในขณะที่ใน GenerateContent API แบบสองทิศทาง การเรียกใช้ฟังก์ชันจะเกิดขึ้นผ่านชุดข้อความเฉพาะเหล่านี้
| ช่อง | |
|---|---|
functionResponses[] |
ไม่บังคับ คำตอบของการเรียกใช้ฟังก์ชัน |
BidiGenerateContentTranscription
การถอดเสียงเป็นคำ (อินพุตหรือเอาต์พุต)
| ช่อง | |
|---|---|
text |
ข้อความถอดเสียง |
languageCode |
รหัสภาษา BCP-47 ของการถอดเสียงเป็นคำ |
startOffset |
ไม่บังคับ ออฟเซ็ตเวลาเริ่มต้นของการถอดเสียงเป็นคำเทียบกับจุดเริ่มต้นของเสียง |
endOffset |
ไม่บังคับ ออฟเซ็ตสิ้นสุดของการถอดเสียงเป็นคำเทียบกับจุดเริ่มต้นของเสียง |
ContextWindowCompressionConfig
เปิดใช้การบีบอัดหน้าต่างบริบท ซึ่งเป็นกลไกในการจัดการหน้าต่างบริบทของโมเดลเพื่อไม่ให้เกินความยาวที่กำหนด
| ช่อง | |
|---|---|
ฟิลด์ Union compressionMechanism กลไกการบีบอัดหน้าต่างบริบทที่ใช้ compressionMechanism ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
slidingWindow |
กลไกหน้าต่างเลื่อน |
triggerTokens |
จำนวนโทเค็น (ก่อนเรียกใช้เทิร์น) ที่จำเป็นในการทริกเกอร์การบีบอัดหน้าต่างบริบท ซึ่งใช้เพื่อปรับสมดุลคุณภาพกับเวลาในการตอบสนองได้ เนื่องจากหน้าต่างบริบทที่สั้นลงอาจส่งผลให้โมเดลตอบสนองได้เร็วขึ้น อย่างไรก็ตาม การดำเนินการบีบอัดจะทำให้เกิดความหน่วงชั่วคราว ดังนั้นจึงไม่ควรเรียกใช้บ่อยๆ หากไม่ได้ตั้งค่า ค่าเริ่มต้นคือ 80% ของขีดจํากัดหน้าต่างบริบทของโมเดล ซึ่งจะเหลือ 20% สำหรับคำขอของผู้ใช้/คำตอบของโมเดลในครั้งถัดไป |
EndSensitivity
กำหนดวิธีตรวจหาจุดสิ้นสุดของคำพูด
| Enum | |
|---|---|
END_SENSITIVITY_UNSPECIFIED |
ค่าเริ่มต้นคือ END_SENSITIVITY_HIGH |
END_SENSITIVITY_HIGH |
การตรวจหาอัตโนมัติจะสิ้นสุดการพูดบ่อยขึ้น |
END_SENSITIVITY_LOW |
การตรวจหาอัตโนมัติจะสิ้นสุดคำพูดน้อยลง |
GoAway
การแจ้งเตือนว่าเซิร์ฟเวอร์จะยกเลิกการเชื่อมต่อในเร็วๆ นี้
| ช่อง | |
|---|---|
timeLeft |
เวลาที่เหลือก่อนที่ระบบจะสิ้นสุดการเชื่อมต่อจะเป็น ABORTED ระยะเวลานี้จะไม่น้อยกว่าระยะเวลาขั้นต่ำเฉพาะรุ่น ซึ่งจะระบุพร้อมกับการจำกัดอัตราคำขอสำหรับรุ่น |
HistoryConfig
การกำหนดค่าประวัติ
ข้อความนี้รวมอยู่ในการกำหนดค่าเซสชันเป็น BidiGenerateContentSetup.historyConfig กำหนดค่าการแลกเปลี่ยนข้อความประวัติ
| ช่อง | |
|---|---|
initialHistoryInClientContent |
ไม่บังคับ หากเป็นจริง หลังจากส่ง |
InteractionStatus
สถานะกิจกรรมต่างๆ ของเซสชันแบบสด ระบบจะส่งฟิลด์นี้พร้อมกับ turnComplete เสมอเพื่อระบุว่าเซิร์ฟเวอร์ประมวลผลทั้งหมดเสร็จแล้วหรือไม่
| Enum | |
|---|---|
INTERACTION_STATUS_UNSPECIFIED |
สถานะการโต้ตอบที่ไม่ได้ระบุ |
IN_PROGRESS |
เซิร์ฟเวอร์ยังคงประมวลผลข้อมูลที่ผู้ใช้ป้อนหรือเรียกใช้การให้เหตุผลเบื้องหลังอยู่ อาจมีเอาต์พุตของโมเดลเพิ่มเติมตามมา |
REQUIRES_ACTION |
เลิกใช้งานแล้ว โปรดใช้ IDLE แทน |
IDLE |
เซิร์ฟเวอร์ประมวลผลและให้เหตุผลในเบื้องหลังทั้งหมดเสร็จสมบูรณ์แล้ว |
ProactivityConfig
การกำหนดค่าสำหรับฟีเจอร์การทำงานเชิงรุก
| ช่อง | |
|---|---|
proactiveAudio |
ไม่บังคับ หากเปิดใช้ โมเดลจะปฏิเสธการตอบกลับพรอมต์ล่าสุดได้ เช่น วิธีนี้ช่วยให้โมเดลไม่สนใจคำพูดที่ไม่อยู่ในบริบทหรือเงียบไว้หากผู้ใช้ยังไม่ได้ส่งคำขอ |
RealtimeInputConfig
กำหนดค่าลักษณะการทำงานของการป้อนข้อมูลแบบเรียลไทม์ใน BidiGenerateContent
| ช่อง | |
|---|---|
automaticActivityDetection |
ไม่บังคับ หากไม่ได้ตั้งค่าไว้ ระบบจะเปิดใช้การตรวจหากิจกรรมอัตโนมัติโดยค่าเริ่มต้น หากปิดใช้การตรวจจับเสียงอัตโนมัติแล้ว ไคลเอ็นต์จะต้องส่งสัญญาณกิจกรรม |
activityHandling |
ไม่บังคับ กำหนดผลกระทบของกิจกรรม |
turnCoverage |
ไม่บังคับ กำหนดว่าอินพุตใดรวมอยู่ในเทิร์นของผู้ใช้ |
interimTranscriptTimestampEnabled |
ไม่บังคับ กำหนดค่าการประทับเวลาของข้อความถอดเสียงชั่วคราว |
SessionResumptionConfig
การกำหนดค่าการกลับมาใช้เซสชันต่อ
ข้อความนี้รวมอยู่ในการกำหนดค่าเซสชันเป็น BidiGenerateContentSetup.sessionResumption หากกำหนดค่าไว้ เซิร์ฟเวอร์จะส่งSessionResumptionUpdate
| ช่อง | |
|---|---|
handle |
แฮนเดิลของเซสชันก่อนหน้า หากไม่มี ระบบจะสร้างเซสชันใหม่ แฮนเดิลเซสชันมาจากค่า |
SessionResumptionUpdate
การอัปเดตสถานะการกลับมาใช้เซสชันต่อ
ระบบจะส่งเฉพาะในกรณีที่ตั้งค่า BidiGenerateContentSetup.sessionResumption
| ช่อง | |
|---|---|
newHandle |
แฮนเดิลใหม่ที่แสดงสถานะที่สามารถกลับมาทำงานต่อได้ เว้นว่างไว้หาก |
resumable |
เป็นจริงหากเซสชันปัจจุบันกลับมาทำงานต่อได้ในตอนนี้ การกลับมาทำงานต่ออาจเป็นไปไม่ได้ในบางช่วงของเซสชัน เช่น เมื่อโมเดลเรียกใช้ฟังก์ชันหรือสร้าง การกลับมาใช้เซสชันต่อ (ใช้โทเค็นของเซสชันก่อนหน้า) ในสถานะดังกล่าวจะทำให้ข้อมูลบางส่วนสูญหาย ในกรณีเหล่านี้ |
SlidingWindow
วิธีการ SlidingWindow จะทำงานโดยการทิ้งเนื้อหาที่จุดเริ่มต้นของหน้าต่างบริบท บริบทที่ได้จะเริ่มต้นที่จุดเริ่มต้นของเทิร์นบทบาทผู้ใช้เสมอ คำสั่งของระบบและBidiGenerateContentSetup.prefixTurnsจะอยู่ตอนต้นของผลการค้นหาเสมอ
| ช่อง | |
|---|---|
targetTokens |
จำนวนโทเค็นเป้าหมายที่จะเก็บไว้ ค่าเริ่มต้นคือ trigger_tokens/2 การทิ้งส่วนของหน้าต่างบริบทจะทำให้เวลาในการตอบสนองเพิ่มขึ้นชั่วคราว ดังนั้นจึงควรปรับค่านี้เพื่อหลีกเลี่ยงการดำเนินการบีบอัดบ่อยๆ |
StartSensitivity
กำหนดวิธีตรวจหาจุดเริ่มต้นของคำพูด
| Enum | |
|---|---|
START_SENSITIVITY_UNSPECIFIED |
ค่าเริ่มต้นคือ START_SENSITIVITY_HIGH |
START_SENSITIVITY_HIGH |
การตรวจหาอัตโนมัติจะตรวจหาจุดเริ่มต้นของคำพูดได้บ่อยขึ้น |
START_SENSITIVITY_LOW |
การตรวจหาอัตโนมัติจะตรวจหาจุดเริ่มต้นของคำพูดน้อยลง |
TurnCoverage
ตัวเลือกเกี่ยวกับอินพุตที่จะรวมไว้ในเทิร์นของผู้ใช้
| Enum | |
|---|---|
TURN_COVERAGE_UNSPECIFIED |
หากไม่ได้ระบุ ระบบจะเลือกลักษณะการทำงานเริ่มต้นตามโมเดล เช่น สำหรับ Gemini 2.5 ค่าเริ่มต้นคือ TURN_INCLUDES_ONLY_ACTIVITY ส่วนสำหรับ Gemini 3.1 ขึ้นไป ค่าเริ่มต้นคือ TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO |
TURN_INCLUDES_ONLY_ACTIVITY |
รวมถึงกิจกรรมตั้งแต่รอบล่าสุด โดยไม่รวมการไม่มีกิจกรรม (เช่น ความเงียบในสตรีมเสียง) |
TURN_INCLUDES_ALL_INPUT |
รวมอินพุตแบบเรียลไทม์ทั้งหมดตั้งแต่รอบล่าสุด รวมถึงการไม่มีการใช้งาน (เช่น ไม่มีเสียงในสตรีมเสียง) |
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO |
รวมกิจกรรมเสียงและวิดีโอทั้งหมดตั้งแต่รอบที่แล้ว เมื่อใช้การตรวจหากิจกรรมอัตโนมัติ กิจกรรมเสียงหมายถึงคำพูดและไม่รวมช่วงที่เงียบ |
TranslationConfig
การกำหนดค่าสำหรับฟีเจอร์การแปล
| ช่อง | |
|---|---|
targetLanguageCode |
ต้องระบุ ภาษาเป้าหมายสำหรับการแปล ค่าที่รองรับคือรหัสภาษา BCP-47 (เช่น "en" "es" "fr") |
echoTargetLanguage |
ไม่บังคับ หากเป็นจริง โมเดลจะสร้างเสียงเมื่อมีการพูดภาษาเป้าหมาย ซึ่งโดยพื้นฐานแล้วจะเป็นการเลียนแบบอินพุต หากเป็นเท็จ เราจะไม่สร้างเสียงสำหรับภาษาเป้าหมาย |
UrlContextMetadata
ข้อมูลเมตาที่เกี่ยวข้องกับเครื่องมือดึงข้อมูลบริบท URL
| ช่อง | |
|---|---|
urlMetadata[] |
รายการบริบท URL |
UsageMetadata
ข้อมูลเมตาการใช้งานเกี่ยวกับคำตอบ
| ช่อง | |
|---|---|
promptTokenCount |
เอาต์พุตเท่านั้น จำนวนโทเค็นในพรอมต์ เมื่อตั้งค่า |
cachedContentTokenCount |
จำนวนโทเค็นในส่วนที่แคชไว้ของพรอมต์ (เนื้อหาที่แคชไว้) |
responseTokenCount |
เอาต์พุตเท่านั้น จำนวนโทเค็นทั้งหมดในตัวเลือกคำตอบที่สร้างขึ้นทั้งหมด |
toolUsePromptTokenCount |
เอาต์พุตเท่านั้น จำนวนโทเค็นที่อยู่ในพรอมต์การใช้เครื่องมือ |
thoughtsTokenCount |
เอาต์พุตเท่านั้น จำนวนโทเค็นของความคิดสำหรับโมเดลการคิด |
totalTokenCount |
เอาต์พุตเท่านั้น จำนวนโทเค็นทั้งหมดสำหรับคำขอสร้าง (พรอมต์ + ตัวเลือกคำตอบ) |
promptTokensDetails[] |
เอาต์พุตเท่านั้น รายการรูปแบบที่ประมวลผลในอินพุตคำขอ |
cacheTokensDetails[] |
เอาต์พุตเท่านั้น รายการรูปแบบของเนื้อหาที่แคชไว้ในอินพุตคำขอ |
responseTokensDetails[] |
เอาต์พุตเท่านั้น รายการรูปแบบที่แสดงในการตอบกลับ |
toolUsePromptTokensDetails[] |
เอาต์พุตเท่านั้น รายการรูปแบบที่ประมวลผลสำหรับอินพุตคำขอการใช้เครื่องมือ |
VoiceActivity
ตรวจพบกิจกรรมเสียงพูดในสตรีมเสียง
| ช่อง | |
|---|---|
type |
เอาต์พุตเท่านั้น ประเภทของสัญญาณ VAD(การตรวจจับกิจกรรมเสียงพูด) |
audioOffset |
เอาต์พุตเท่านั้น เวลาที่ตรวจพบกิจกรรมเสียงพูดในเวลาของเสียง ซึ่งสัมพันธ์กับจุดเริ่มต้นของสตรีมเสียง |
ประเภท
ประเภทของสัญญาณ VAD
| Enum | |
|---|---|
TYPE_UNSPECIFIED |
ค่าเริ่มต้นคือ UNSPECIFIED |
ACTIVITY_START |
สัญญาณเริ่มต้นประโยค |
ACTIVITY_END |
สัญญาณสิ้นสุดประโยค |
โทเค็นการตรวจสอบสิทธิ์ชั่วคราว
คุณขอโทเค็นการตรวจสอบสิทธิ์ชั่วคราวได้โดยการเรียกใช้
AuthTokenService.CreateToken จากนั้นใช้กับ
GenerativeService.BidiGenerateContentConstrained โดยส่งโทเค็น
ในพารามิเตอร์การค้นหา access_token หรือในส่วนหัว HTTP Authorization โดยมีคำนำหน้า
"Token"
CreateAuthTokenRequest
สร้างโทเค็นการตรวจสอบสิทธิ์ชั่วคราว
| ช่อง | |
|---|---|
authToken |
ต้องระบุ โทเค็นที่จะสร้าง |
AuthToken
คำขอสร้างโทเค็นการตรวจสอบสิทธิ์ชั่วคราว
| ช่อง | |
|---|---|
name |
เอาต์พุตเท่านั้น ตัวระบุ ตัวโทเค็นเอง |
expireTime |
ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ เวลาที่ไม่บังคับหลังจากนั้น เมื่อใช้โทเค็นที่ได้ ระบบจะปฏิเสธข้อความในเซสชัน BidiGenerateContent (Gemini อาจปิดเซสชันก่อนเวลาหากถึงเวลาที่กำหนด) หากไม่ได้ตั้งค่าไว้ ค่าเริ่มต้นจะเป็น 30 นาทีในอนาคต หากตั้งค่าไว้ ค่านี้ต้องน้อยกว่า 20 ชั่วโมงในอนาคต |
newSessionExpireTime |
ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ เวลาหลังจากนั้นระบบจะปฏิเสธเซสชัน Live API ใหม่ที่ใช้โทเค็นซึ่งเป็นผลมาจากการส่งคำขอนี้ หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ค่าเริ่มต้นเป็น 60 วินาทีในอนาคต หากตั้งค่าไว้ ค่านี้ต้องน้อยกว่า 20 ชั่วโมงในอนาคต |
fieldMask |
ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ หาก field_mask ว่างเปล่าและไม่มี หาก field_mask ว่างเปล่าและมี หาก field_mask ไม่ว่าง ฟิลด์ที่เกี่ยวข้องจาก |
ฟิลด์ Union config การกำหนดค่าเฉพาะวิธีสำหรับโทเค็นที่ได้ config ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น |
|
bidiGenerateContentSetup |
ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ การกำหนดค่าเฉพาะสำหรับ |
uses |
ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ จำนวนครั้งที่ใช้โทเค็นได้ หากค่านี้เป็น 0 แสดงว่าจะไม่มีการจำกัด การกลับมาใช้เซสชัน Live API อีกครั้งจะไม่นับเป็นการใช้งาน หากไม่ได้ระบุ ค่าเริ่มต้นจะเป็น 1 |
ข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่พบบ่อย
ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภททรัพยากร API ที่ใช้กันโดยทั่วไป Blob,
Content, FunctionCall, FunctionResponse, GenerationConfig,
GroundingMetadata, ModalityTokenCount และ Tool ได้ที่
การสร้างเนื้อหา