Live API เป็น API ที่มีสถานะซึ่งใช้ WebSockets ในส่วนนี้ คุณจะเห็นรายละเอียดเพิ่มเติมเกี่ยวกับ WebSockets API
เซสชัน
การเชื่อมต่อ WebSocket จะสร้างเซสชันระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ Gemini หลังจากไคลเอ็นต์เริ่มการเชื่อมต่อใหม่ เซสชันจะแลกเปลี่ยนข้อความกับเซิร์ฟเวอร์เพื่อดำเนินการต่อไปนี้ได้
- ส่งข้อความ เสียง หรือวิดีโอไปยังเซิร์ฟเวอร์ Gemini
- รับคําขอเสียง ข้อความ หรือการเรียกฟังก์ชันจากเซิร์ฟเวอร์ Gemini
การเชื่อมต่อ WebSocket
หากต้องการเริ่มเซสชัน ให้เชื่อมต่อกับปลายทาง WebSocket นี้
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent
การกําหนดค่าเซสชัน
ข้อความเริ่มต้นหลังจากการเชื่อมต่อจะตั้งค่าการกําหนดค่าเซสชัน ซึ่งรวมถึงรูปแบบ พารามิเตอร์การสร้าง วิธีการของระบบ และเครื่องมือ
คุณสามารถเปลี่ยนพารามิเตอร์การกําหนดค่าได้ ยกเว้นรูปแบบในระหว่างเซสชัน
ดูตัวอย่างการกําหนดค่าต่อไปนี้ โปรดทราบว่ารูปแบบตัวพิมพ์ของชื่อใน 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
  },
  "systemInstruction": string,
  "tools": [object]
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับช่อง API ได้ที่ generationConfig
ส่งข้อความ
หากต้องการแลกเปลี่ยนข้อความผ่านการเชื่อมต่อ WebSocket ไคลเอ็นต์ต้องส่งออบเจ็กต์ JSON ผ่านการเชื่อมต่อ WebSocket ที่เปิดอยู่ ออบเจ็กต์ JSON ต้องมีฟิลด์จากชุดออบเจ็กต์ต่อไปนี้เพียง 1 ฟิลด์
{
  "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 แต่จะมีฟิลด์อื่นๆ เพียง 1 ฟิลด์จากข้อความ BidiGenerateContentServerMessage
 (messageType union ไม่ได้แสดงเป็น JSON ดังนั้นช่องจะปรากฏที่ระดับบนสุดของข้อความ)
ข้อความและกิจกรรม
ActivityEnd
ประเภทนี้ไม่มีช่อง
ระบุจุดสิ้นสุดของกิจกรรมของผู้ใช้
ActivityHandling
วิธีต่างๆ ในการจัดการกิจกรรมของผู้ใช้
| Enum | |
|---|---|
| ACTIVITY_HANDLING_UNSPECIFIED | หากไม่ระบุ ลักษณะการทำงานเริ่มต้นจะเป็น START_OF_ACTIVITY_INTERRUPTS | 
| START_OF_ACTIVITY_INTERRUPTS | หากเป็น "จริง" การเริ่มกิจกรรมจะขัดจังหวะการตอบสนองของโมเดล (หรือที่เรียกว่า "แทรกแซง") การตอบกลับปัจจุบันของโมเดลจะตัดออกทันทีที่เกิดการหยุดชะงัก นี่คือลักษณะการทำงานเริ่มต้น | 
| NO_INTERRUPTION | การตอบสนองของโมเดลจะไม่หยุดชะงัก | 
ActivityStart
ประเภทนี้ไม่มีช่อง
ระบุจุดเริ่มต้นของกิจกรรมของผู้ใช้
AudioTranscriptionConfig
ประเภทนี้ไม่มีช่อง
การกําหนดค่าการถอดเสียงเป็นคํา
AutomaticActivityDetection
กำหนดค่าการตรวจหากิจกรรมอัตโนมัติ
| ช่อง | |
|---|---|
| disabled | 
 ไม่บังคับ หากเปิดใช้ (ค่าเริ่มต้น) ระบบจะนับเสียงพูดและข้อความที่ตรวจพบเป็นกิจกรรม หากปิดใช้ ลูกค้าจะต้องส่งสัญญาณกิจกรรม | 
| startOfSpeechSensitivity | ไม่บังคับ กำหนดแนวโน้มที่ระบบจะตรวจจับคำพูด | 
| prefixPaddingMs | 
 ไม่บังคับ ระยะเวลาของคำพูดที่ตรวจพบที่จำเป็นก่อนที่จะมีการบันทึกการเริ่มต้นของคำพูด ยิ่งค่านี้ต่ำ การตรวจจับการเริ่มต้นพูดก็จะยิ่งไวขึ้นและระบบจะจดจำคำพูดได้สั้นลง แต่วิธีนี้ยังเพิ่มโอกาสเกิดผลบวกลวงด้วย | 
| endOfSpeechSensitivity | ไม่บังคับ กำหนดความเป็นไปได้ที่คำพูดที่ตรวจพบจะสิ้นสุดลง | 
| silenceDurationMs | 
 ไม่บังคับ ระยะเวลาที่กำหนดของเสียงที่ตรวจพบว่าไม่ใช่เสียงพูด (เช่น เสียงเงียบ) ก่อนสิ้นสุดการพูด ยิ่งค่านี้สูง ระยะเวลาที่หยุดพูดระหว่างการพูดแต่ละครั้งก็จะนานขึ้นโดยไม่ขัดจังหวะกิจกรรมของผู้ใช้ แต่จะทำให้เวลาในการตอบสนองของโมเดลเพิ่มขึ้น | 
BidiGenerateContentClientContent
การอัปเดตการสนทนาปัจจุบันที่ส่งมาจากไคลเอ็นต์ เนื้อหาทั้งหมดที่นี่จะต่อท้ายประวัติการสนทนาโดยไม่มีเงื่อนไข และใช้เป็นพรอมต์ส่วนหนึ่งสำหรับโมเดลในการสร้างเนื้อหา
ข้อความที่นี่จะขัดจังหวะการสร้างโมเดลปัจจุบัน
| ช่อง | |
|---|---|
| turns[] | ไม่บังคับ เนื้อหาต่อท้ายการสนทนาปัจจุบันกับโมเดล สําหรับการค้นหาแบบเทิร์นเดียว อินสแตนซ์นี้จะเป็นแบบเดี่ยว สําหรับการค้นหาแบบหลายรอบ ฟิลด์นี้จะซ้ำกันซึ่งมีประวัติการสนทนาและคําขอล่าสุด | 
| turnComplete | 
 ไม่บังคับ หากเป็น "จริง" แสดงว่าการสร้างเนื้อหาของเซิร์ฟเวอร์ควรเริ่มต้นด้วยพรอมต์ที่สะสมไว้ในปัจจุบัน ไม่เช่นนั้น เซิร์ฟเวอร์จะรอข้อความเพิ่มเติมก่อนที่จะเริ่มสร้าง | 
BidiGenerateContentRealtimeInput
อินพุตของผู้ใช้ที่ส่งแบบเรียลไทม์
ระบบจะจัดการสื่อต่างๆ (เสียง วิดีโอ และข้อความ) เป็นสตรีมพร้อมกัน เราไม่รับประกันลําดับของสตรีมเหล่านี้
ซึ่งแตกต่างจาก BidiGenerateContentClientContent ตรงจุดต่อไปนี้
- ส่งได้อย่างต่อเนื่องโดยไม่หยุดชะงักการสร้างโมเดล
- หากจำเป็นต้องผสมข้อมูลที่สอดแทรกระหว่าง BidiGenerateContentClientContentกับBidiGenerateContentRealtimeInputเซิร์ฟเวอร์จะพยายามเพิ่มประสิทธิภาพเพื่อให้ได้การตอบกลับที่ดีที่สุด แต่ไม่มีการรับประกัน
- ไม่มีการระบุการสิ้นสุดการพูดอย่างชัดเจน แต่ระบบจะดึงข้อมูลมาจากกิจกรรมของผู้ใช้ (เช่น การสิ้นสุดการพูด)
- ระบบจะประมวลผลข้อมูลทีละน้อยเพื่อเพิ่มประสิทธิภาพให้เริ่มการตอบกลับจากโมเดลได้อย่างรวดเร็ว แม้กระทั่งก่อนที่เทิร์นจะสิ้นสุดลง
| ช่อง | |
|---|---|
| mediaChunks[] | ไม่บังคับ ข้อมูลไบต์ที่ฝังอยู่สําหรับอินพุตสื่อ ระบบไม่รองรับ  เลิกใช้งานแล้ว: ให้ใช้  | 
| audio | ไม่บังคับ ซึ่งจะกลายเป็นสตรีมอินพุตเสียงแบบเรียลไทม์ | 
| video | ไม่บังคับ ซึ่งจะรวมกันเป็นสตรีมอินพุตวิดีโอแบบเรียลไทม์ | 
| activityStart | ไม่บังคับ ระบุจุดเริ่มต้นของกิจกรรมของผู้ใช้ ข้อมูลนี้สามารถส่งได้ก็ต่อเมื่อปิดใช้การตรวจหากิจกรรมอัตโนมัติ (เช่น ฝั่งเซิร์ฟเวอร์) เท่านั้น | 
| activityEnd | ไม่บังคับ ระบุจุดสิ้นสุดของกิจกรรมของผู้ใช้ ข้อมูลนี้สามารถส่งได้ก็ต่อเมื่อปิดใช้การตรวจจับกิจกรรมอัตโนมัติ (เช่น ฝั่งเซิร์ฟเวอร์) เท่านั้น | 
| audioStreamEnd | 
 ไม่บังคับ บ่งบอกว่าสตรีมเสียงสิ้นสุดลงแล้ว เช่น เนื่องจากไมโครโฟนปิดอยู่ ควรส่งเฉพาะเมื่อเปิดใช้การตรวจหากิจกรรมอัตโนมัติ (ซึ่งเป็นค่าเริ่มต้น) โดยลูกค้าสามารถเปิดสตรีมอีกครั้งได้โดยส่งข้อความเสียง | 
| text | 
 ไม่บังคับ ซึ่งจะรวมกันเป็นสตรีมการป้อนข้อความแบบเรียลไทม์ | 
BidiGenerateContentServerContent
การอัปเดตเซิร์ฟเวอร์แบบเพิ่มที่โมเดลสร้างขึ้นเพื่อตอบสนองต่อข้อความของไคลเอ็นต์
ระบบจะสร้างเนื้อหาให้เร็วที่สุดเท่าที่จะทำได้ แต่ไม่ใช่แบบเรียลไทม์ ลูกค้าอาจเลือกที่จะบัฟเฟอร์และเล่นแบบเรียลไทม์
| ช่อง | |
|---|---|
| generationComplete | 
 เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าโมเดลสร้างเสร็จแล้ว เมื่อโมเดลถูกขัดจังหวะขณะสร้าง จะไม่มีข้อความ "generation_complete" ในเทิร์นที่ขัดจังหวะ แต่จะแสดงเป็น "interrupted > turn_complete" เมื่อโมเดลถือว่าเล่นแบบเรียลไทม์ จะมีการหน่วงเวลาระหว่าง generation_complete และ turn_complete ที่เกิดขึ้นจากโมเดลที่รอให้การเล่นจบ | 
| turnComplete | 
 เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าโมเดลทำการเทิร์นเสร็จแล้ว การสร้างจะเริ่มต้นเมื่อมีการตอบกลับข้อความเพิ่มเติมของลูกค้าเท่านั้น | 
| interrupted | 
 เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าข้อความไคลเอ็นต์ขัดจังหวะการสร้างโมเดลปัจจุบัน หากไคลเอ็นต์เล่นเนื้อหาแบบเรียลไทม์ นี่เป็นสัญญาณที่ดีในการหยุดและล้างคิวการเล่นปัจจุบัน | 
| groundingMetadata | เอาต์พุตเท่านั้น ข้อมูลเมตาพื้นฐานสําหรับเนื้อหาที่สร้างขึ้น | 
| inputTranscription | 
 เอาต์พุตเท่านั้น ป้อนข้อความถอดเสียง ระบบจะส่งข้อความถอดเสียงแยกจากข้อความอื่นๆ ของเซิร์ฟเวอร์และไม่มีการรับประกันลำดับ | 
| outputTranscription | 
 เอาต์พุตเท่านั้น เอาต์พุตการถอดเสียงเป็นคำ ระบบจะส่งข้อความถอดเสียงแยกจากข้อความอื่นๆ ของเซิร์ฟเวอร์และไม่มีการรับประกันลําดับ โดยเฉพาะอย่างยิ่งระหว่าง  | 
| urlContextMetadata | |
| modelTurn | เอาต์พุตเท่านั้น เนื้อหาที่โมเดลสร้างขึ้นซึ่งเป็นส่วนหนึ่งของการสนทนาปัจจุบันกับผู้ใช้ | 
BidiGenerateContentServerMessage
ข้อความตอบกลับสําหรับการเรียก BidiGenerateContent
| ช่อง | |
|---|---|
| usageMetadata | เอาต์พุตเท่านั้น ข้อมูลเมตาการใช้งานเกี่ยวกับการตอบกลับ | 
| ฟิลด์สหภาพ messageTypeประเภทของข้อความmessageTypeต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น | |
| setupComplete | 
 เอาต์พุตเท่านั้น ส่งเพื่อตอบกลับข้อความ  | 
| serverContent | 
 เอาต์พุตเท่านั้น เนื้อหาที่โมเดลสร้างขึ้นเพื่อตอบกลับข้อความของลูกค้า | 
| toolCall | เอาต์พุตเท่านั้น ขอให้ไคลเอ็นต์เรียกใช้  | 
| toolCallCancellation | 
 เอาต์พุตเท่านั้น การแจ้งเตือนให้ลูกค้าทราบว่าควรยกเลิก | 
| goAway | เอาต์พุตเท่านั้น ประกาศว่าเซิร์ฟเวอร์จะตัดการเชื่อมต่อในไม่ช้า | 
| sessionResumptionUpdate | เอาต์พุตเท่านั้น อัปเดตสถานะการกลับมาทำงานของเซสชัน | 
BidiGenerateContentSetup
ข้อความที่จะส่งใน BidiGenerateContentClientMessage รายการแรก (และรายการแรกเท่านั้น) มีการกำหนดค่าที่จะมีผลตลอดระยะเวลาของ RPC สตรีมมิง
ไคลเอ็นต์ควรรอข้อความ BidiGenerateContentSetupComplete ก่อนส่งข้อความเพิ่มเติม
| ช่อง | |
|---|---|
| model | 
 ต้องระบุ ชื่อทรัพยากรของโมเดล ซึ่งจะเป็นรหัสสําหรับโมเดลที่จะใช้ รูปแบบ:  | 
| generationConfig | ไม่บังคับ การกําหนดค่าการสร้าง ระบบไม่รองรับช่องต่อไปนี้ 
 | 
| systemInstruction | ไม่บังคับ วิธีการของระบบที่ผู้ใช้ระบุสำหรับโมเดล หมายเหตุ: ควรใช้เฉพาะข้อความในส่วนต่างๆ และเนื้อหาในแต่ละส่วนจะอยู่ในรูปแบบย่อหน้าแยกกัน | 
| tools[] | ไม่บังคับ รายการ  
 | 
| realtimeInputConfig | ไม่บังคับ กําหนดค่าการจัดการอินพุตแบบเรียลไทม์ | 
| sessionResumption | ไม่บังคับ กําหนดค่ากลไกการกลับมาทํางานต่อของเซสชัน หากรวมไว้ด้วย เซิร์ฟเวอร์จะส่งข้อความ  | 
| contextWindowCompression | 
 ไม่บังคับ กําหนดค่ากลไกการบีบอัดกรอบเวลาบริบท หากรวมไว้ด้วย เซิร์ฟเวอร์จะลดขนาดของบริบทโดยอัตโนมัติเมื่อบริบทมีความยาวเกินค่าที่กำหนดไว้ | 
| inputAudioTranscription | ไม่บังคับ หากตั้งค่าไว้ ระบบจะเปิดใช้การถอดเสียงการป้อนข้อมูลด้วยเสียง การถอดเสียงจะสอดคล้องกับภาษาของเสียงอินพุต หากมีการกําหนดค่าไว้ | 
| outputAudioTranscription | ไม่บังคับ หากตั้งค่าไว้ ระบบจะเปิดใช้การถอดเสียงเป็นคำของเอาต์พุตเสียงของโมเดล การถอดเสียงจะสอดคล้องกับรหัสภาษาที่ระบุไว้สำหรับเสียงเอาต์พุต หากมีการกำหนดค่าไว้ | 
| proactivity | ไม่บังคับ กําหนดค่าการดําเนินการเชิงรุกของโมเดล ซึ่งช่วยให้โมเดลตอบสนองต่ออินพุตได้โดยตรงและไม่ต้องสนใจอินพุตที่ไม่เกี่ยวข้อง | 
BidiGenerateContentSetupComplete
ประเภทนี้ไม่มีช่อง
ส่งเพื่อตอบกลับข้อความ BidiGenerateContentSetup จากลูกค้า
BidiGenerateContentToolCall
ขอให้ไคลเอ็นต์เรียกใช้ functionCalls และส่งการตอบกลับที่มี id ที่ตรงกัน
| ช่อง | |
|---|---|
| functionCalls[] | เอาต์พุตเท่านั้น การเรียกใช้ฟังก์ชันที่จะดำเนินการ | 
BidiGenerateContentToolCallCancellation
การแจ้งเตือนลูกค้าว่าToolCallMessageที่ออกก่อนหน้านี้ซึ่งมีidที่ระบุไว้ไม่ควรได้รับการดําเนินการและควรถูกยกเลิก หากการเรียกใช้เครื่องมือเหล่านั้นมีผลข้างเคียง ไคลเอ็นต์อาจพยายามเลิกทำการใช้เครื่องมือ ข้อความนี้จะปรากฏขึ้นเฉพาะในกรณีที่ไคลเอ็นต์ขัดจังหวะการเปลี่ยนเซิร์ฟเวอร์เท่านั้น
| ช่อง | |
|---|---|
| ids[] | 
 เอาต์พุตเท่านั้น รหัสของเครื่องมือที่เรียกให้ยกเลิก | 
BidiGenerateContentToolResponse
การตอบกลับที่ไคลเอ็นต์สร้างขึ้นสําหรับ ToolCall ที่ได้รับจากเซิร์ฟเวอร์ ระบบจะจับคู่ออบเจ็กต์ FunctionResponse แต่ละรายการกับออบเจ็กต์ FunctionCall ที่เกี่ยวข้องตามช่อง id
โปรดทราบว่าการเรียกใช้ฟังก์ชัน GenerateContent API แบบ unary และแบบสตรีมมิงจากเซิร์ฟเวอร์จะเกิดขึ้นโดยการแลกเปลี่ยนส่วน Content ส่วนการเรียกใช้ฟังก์ชัน GenerateContent API แบบ bidi จะเกิดขึ้นผ่านชุดข้อความเฉพาะเหล่านี้
| ช่อง | |
|---|---|
| functionResponses[] | ไม่บังคับ การตอบสนองต่อการเรียกใช้ฟังก์ชัน | 
BidiGenerateContentTranscription
การถอดเสียง (อินพุตหรือเอาต์พุต)
| ช่อง | |
|---|---|
| text | 
 ข้อความถอดเสียง | 
ContextWindowCompressionConfig
เปิดใช้การบีบอัดกรอบเวลาบริบท ซึ่งเป็นกลไกในการจัดการกรอบเวลาบริบทของโมเดลเพื่อไม่ให้เกินความยาวที่กำหนด
| ช่อง | |
|---|---|
| ฟิลด์สหภาพ compressionMechanismกลไกการบีบอัดกรอบบริบทที่ใช้compressionMechanismต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น | |
| slidingWindow | กลไกกรอบเวลาเลื่อน | 
| triggerTokens | 
 จํานวนโทเค็น (ก่อนเรียกใช้รอบ) ที่จําเป็นในการเรียกใช้การบีบอัดกรอบบริบท ซึ่งสามารถใช้เพื่อปรับสมดุลคุณภาพกับเวลาในการตอบสนองได้ เนื่องจากกรอบเวลาบริบทที่สั้นลงอาจส่งผลให้โมเดลตอบสนองเร็วขึ้น อย่างไรก็ตาม การดำเนินการบีบอัดจะทำให้เวลาในการตอบสนองเพิ่มขึ้นชั่วคราว จึงไม่ควรเรียกให้ดำเนินการบ่อยๆ หากไม่ได้ตั้งค่า ระบบจะใช้ค่าเริ่มต้นเป็น 80% ของขีดจํากัดกรอบเวลาบริบทของโมเดล ซึ่งเหลือ 20% สําหรับคําขอ/การตอบกลับของโมเดลของผู้ใช้ครั้งถัดไป | 
EndSensitivity
กำหนดวิธีตรวจจับการสิ้นสุดของคำพูด
| Enum | |
|---|---|
| END_SENSITIVITY_UNSPECIFIED | ค่าเริ่มต้นคือ END_SENSITIVITY_HIGH | 
| END_SENSITIVITY_HIGH | การตรวจหาอัตโนมัติจะสิ้นสุดเสียงพูดบ่อยขึ้น | 
| END_SENSITIVITY_LOW | การตรวจหาอัตโนมัติจะสิ้นสุดการพูดน้อยลง | 
GoAway
ประกาศว่าเซิร์ฟเวอร์จะตัดการเชื่อมต่อในไม่ช้า
| ช่อง | |
|---|---|
| timeLeft | เวลาที่เหลือก่อนที่การเชื่อมต่อจะสิ้นสุดลงโดยระบุว่า "ยกเลิก" ระยะเวลานี้จะไม่เกินระยะเวลาขั้นต่ำเฉพาะโมเดล ซึ่งจะระบุไว้พร้อมกับขีดจํากัดอัตราของโมเดล | 
ProactivityConfig
การกําหนดค่าสําหรับฟีเจอร์การดําเนินการล่วงหน้า
| ช่อง | |
|---|---|
| proactiveAudio | 
 ไม่บังคับ หากเปิดใช้ โมเดลจะปฏิเสธการตอบกลับพรอมต์ล่าสุดได้ ตัวอย่างเช่น การดำเนินการนี้ช่วยให้โมเดลไม่สนใจคำพูดที่ไม่ตรงตามบริบทหรือไม่พูดหากผู้ใช้ยังไม่ได้ส่งคำขอ | 
RealtimeInputConfig
กําหนดค่าลักษณะการป้อนข้อมูลแบบเรียลไทม์ใน BidiGenerateContent
| ช่อง | |
|---|---|
| automaticActivityDetection | ไม่บังคับ หากไม่ได้ตั้งค่าไว้ ระบบจะเปิดใช้การตรวจหากิจกรรมอัตโนมัติโดยค่าเริ่มต้น หากปิดใช้การตรวจจับเสียงอัตโนมัติ ลูกค้าต้องส่งสัญญาณกิจกรรม | 
| activityHandling | ไม่บังคับ กําหนดผลที่กิจกรรมมี | 
| turnCoverage | ไม่บังคับ กำหนดอินพุตที่จะรวมอยู่ในการผลัดของผู้ใช้ | 
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 | หากไม่ระบุ ลักษณะการทำงานเริ่มต้นจะเป็น TURN_INCLUDES_ONLY_ACTIVITY | 
| TURN_INCLUDES_ONLY_ACTIVITY | เทิร์นของผู้ใช้จะรวมเฉพาะกิจกรรมนับตั้งแต่เทิร์นล่าสุด โดยไม่รวมช่วงเวลาที่ไม่มีการใช้งาน (เช่น ไม่มีการพูดในสตรีมเสียง) นี่คือลักษณะการทำงานเริ่มต้น | 
| TURN_INCLUDES_ALL_INPUT | เทิร์นของผู้ใช้จะรวมอินพุตแบบเรียลไทม์ทั้งหมดนับตั้งแต่เทิร์นล่าสุด รวมถึงช่วงเวลาที่ไม่มีการใช้งาน (เช่น ไม่มีการพูดในสตรีมเสียง) | 
UrlContextMetadata
ข้อมูลเมตาที่เกี่ยวข้องกับเครื่องมือการดึงข้อมูลบริบทของ URL
| ช่อง | |
|---|---|
| urlMetadata[] | รายการบริบท URL | 
UsageMetadata
ข้อมูลเมตาการใช้งานเกี่ยวกับการตอบกลับ
| ช่อง | |
|---|---|
| promptTokenCount | 
 เอาต์พุตเท่านั้น จํานวนโทเค็นในพรอมต์ เมื่อตั้งค่า  | 
| cachedContentTokenCount | 
 จํานวนโทเค็นในส่วนที่แคชไว้ของพรอมต์ (เนื้อหาที่แคชไว้) | 
| responseTokenCount | 
 เอาต์พุตเท่านั้น จํานวนโทเค็นทั้งหมดของคำตอบที่เป็นไปได้ทั้งหมดที่สร้างขึ้น | 
| toolUsePromptTokenCount | 
 เอาต์พุตเท่านั้น จำนวนโทเค็นที่แสดงในพรอมต์การใช้งานเครื่องมือ | 
| thoughtsTokenCount | 
 เอาต์พุตเท่านั้น จํานวนโทเค็นของความคิดสําหรับรูปแบบการคิด | 
| totalTokenCount | 
 เอาต์พุตเท่านั้น จำนวนโทเค็นทั้งหมดสำหรับคำขอสร้าง (พรอมต์ + ตัวเลือกคำตอบ) | 
| promptTokensDetails[] | เอาต์พุตเท่านั้น รายการรูปแบบที่ประมวลผลในอินพุตคำขอ | 
| cacheTokensDetails[] | เอาต์พุตเท่านั้น รายการรูปแบบของเนื้อหาที่แคชไว้ในอินพุตคำขอ | 
| responseTokensDetails[] | เอาต์พุตเท่านั้น รายการรูปแบบที่แสดงในการตอบกลับ | 
| toolUsePromptTokensDetails[] | เอาต์พุตเท่านั้น รายการรูปแบบที่ประมวลผลสำหรับอินพุตคำขอใช้เครื่องมือ | 
โทเค็นการตรวจสอบสิทธิ์ชั่วคราว
คุณรับโทเค็นการตรวจสอบสิทธิ์ชั่วคราวได้โดยเรียกใช้ 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 ไม่ว่างเปล่า ช่องที่เกี่ยวข้องจาก  | 
| ฟิลด์สหภาพ configการกําหนดค่าเฉพาะวิธีการสําหรับโทเค็นที่ได้configต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น | |
| bidiGenerateContentSetup | ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ การกําหนดค่าเฉพาะสําหรับ  | 
| uses | 
 ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ จำนวนครั้งที่ใช้โทเคนได้ หากค่านี้เป็น 0 แสดงว่าไม่มีการใช้ขีดจํากัด การกลับมาใช้งานเซสชัน API ที่ใช้งานอยู่จะไม่นับเป็นการใช้งาน หากไม่ได้ระบุ ระบบจะใช้ 1 เป็นค่าเริ่มต้น | 
ข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่พบได้ทั่วไป
ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภททรัพยากร API ที่ใช้กันโดยทั่วไปอย่าง Blob,
Content, FunctionCall, FunctionResponse, GenerationConfig,
GroundingMetadata, ModalityTokenCount และ Tool ได้ที่หัวข้อการสร้างเนื้อหา