Live API - WebSockets API reference

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[]

string

ไม่บังคับ รหัสภาษา BCP-47 ที่ให้คำแนะนำเกี่ยวกับภาษาที่อยู่ในเสียง หากเว้นว่างไว้ ระบบจะใช้การตรวจหาภาษาอัตโนมัติเป็นค่าเริ่มต้น

customVocabulary[]

string

ไม่บังคับ รายการวลีคำศัพท์ที่กำหนดเองเพื่อให้น้ำหนักโมเดลการจดจำเสียงพูดไปที่การจดจำคำที่เฉพาะเจาะจง (ชื่อสินค้า คำนามเฉพาะ ศัพท์เฉพาะ)

wordTimestamp

bool

ไม่บังคับ กำหนดค่าการสร้างการประทับเวลาระดับคำ

diarization

bool

ไม่บังคับ กำหนดค่าการแยกแยะเสียงผู้พูด

mode

Mode

ไม่บังคับ กำหนดค่าโหมดการถอดเสียงเป็นคำ ค่าที่รองรับ: VERBATIM, SMART หากไม่ได้ระบุ ค่าเริ่มต้นจะเป็นการถอดเสียง VERBATIM ในโหมด SMART โมเดลจะนำคำติดขัดออก (กำจัดคำพูดที่ไม่มีความหมาย การพูดซ้ำ และการพูดที่เริ่มต้นไม่ถูกต้อง) ทำความสะอาดไวยากรณ์เล็กน้อย จัดรูปแบบอัตโนมัติ (ย่อหน้า หัวข้อย่อย รายการที่เรียงลำดับเลข) และแก้ไขเล็กน้อยโดยผู้ใช้ (การแก้ไขตัวเองในบรรทัด) การประทับเวลาและการแยกแยะเสียงพูดใช้ร่วมกับโหมด SMART ไม่ได้

โหมด

โหมดการถอดเสียงเป็นคำ

Enum
MODE_UNSPECIFIED โหมดการถอดเสียงเป็นคำที่ไม่ได้ระบุ
VERBATIM โหมดการถอดเสียงเป็นคำแบบตรงตามคำพูด
SMART โหมดถอดเสียงอัจฉริยะ

AutomaticActivityDetection

กำหนดค่าการตรวจหากิจกรรมโดยอัตโนมัติ

ช่อง
disabled

bool

ไม่บังคับ หากเปิดใช้ (ค่าเริ่มต้น) ระบบจะนับเสียงและข้อความที่ตรวจพบเป็นกิจกรรม หากปิดใช้ ไคลเอ็นต์ต้องส่งสัญญาณกิจกรรม

startOfSpeechSensitivity

StartSensitivity

ไม่บังคับ กำหนดความเป็นไปได้ที่จะตรวจจับคำพูด

prefixPaddingMs

int32

ไม่บังคับ ระยะเวลาที่ต้องใช้ของคำพูดที่ตรวจพบก่อนที่จะเริ่มพูด ยิ่งค่านี้ต่ำเท่าใด การตรวจจับจุดเริ่มต้นของคำพูดก็จะยิ่งไวขึ้นและระบบจะจดจำคำพูดที่สั้นลงได้ อย่างไรก็ตาม วิธีนี้ยังเพิ่มโอกาสเกิดผลบวกลวงด้วย

endOfSpeechSensitivity

EndSensitivity

ไม่บังคับ กำหนดความเป็นไปได้ที่ระบบจะหยุดการพูดที่ตรวจพบ

silenceDurationMs

int32

ไม่บังคับ ระยะเวลาที่ต้องตรวจพบเสียงที่ไม่ใช่คำพูด (เช่น ความเงียบ) ก่อนที่จะบันทึกจุดสิ้นสุดของคำพูด ยิ่งค่านี้มากเท่าใด ช่องว่างของคำพูดก็จะยิ่งนานขึ้นโดยไม่ขัดจังหวะกิจกรรมของผู้ใช้ แต่จะเพิ่มเวลาในการตอบสนองของโมเดล

BidiGenerateContentClientContent

การอัปเดตการสนทนาปัจจุบันที่เพิ่มขึ้นซึ่งส่งจากไคลเอ็นต์ เนื้อหาทั้งหมดที่นี่จะต่อท้ายประวัติการสนทนาโดยไม่มีเงื่อนไขและใช้เป็นส่วนหนึ่งของพรอมต์ไปยังโมเดลเพื่อสร้างเนื้อหา

ข้อความที่นี่จะขัดจังหวะการสร้างโมเดลปัจจุบัน

ช่อง
turns[]

Content

ไม่บังคับ เนื้อหาที่ต่อท้ายการสนทนากับโมเดลในปัจจุบัน

สำหรับคำค้นหาแบบเทิร์นเดียว นี่คืออินสแตนซ์เดียว สำหรับคำค้นหาแบบการสนทนาไปมา นี่คือฟิลด์ที่ซ้ำได้ซึ่งมีประวัติการสนทนาและคำขอครั้งล่าสุด

turnComplete

bool

ไม่บังคับ หากเป็นจริง แสดงว่าการสร้างเนื้อหาของเซิร์ฟเวอร์ควรเริ่มต้นด้วยพรอมต์ที่สะสมอยู่ในปัจจุบัน ไม่เช่นนั้น เซิร์ฟเวอร์จะรอข้อความเพิ่มเติมก่อนเริ่มสร้าง

BidiGenerateContentRealtimeInput

ข้อมูลที่ผู้ใช้ป้อนซึ่งส่งแบบเรียลไทม์

ระบบจะจัดการรูปแบบต่างๆ (เสียง วิดีโอ และข้อความ) เป็นสตรีมพร้อมกัน ระบบไม่รับประกันการเรียงลำดับในสตรีมเหล่านี้

ซึ่งแตกต่างจาก BidiGenerateContentClientContent ในหลายๆ ด้าน ดังนี้

  • ส่งได้อย่างต่อเนื่องโดยไม่หยุดชะงักในการสร้างโมเดล
  • หากจำเป็นต้องรวมข้อมูลที่สลับกันระหว่าง BidiGenerateContentClientContent กับ BidiGenerateContentRealtimeInput เซิร์ฟเวอร์จะพยายามเพิ่มประสิทธิภาพเพื่อให้ได้การตอบสนองที่ดีที่สุด แต่ไม่มีการรับประกัน
  • ระบบไม่ได้ระบุจุดสิ้นสุดของรอบอย่างชัดเจน แต่จะพิจารณาจากกิจกรรมของผู้ใช้ (เช่น สิ้นสุดการพูด)
  • แม้จะยังไม่ถึงจุดสิ้นสุดของรอบ แต่ระบบจะประมวลผลข้อมูลทีละรายการเพื่อเพิ่มประสิทธิภาพให้โมเดลเริ่มตอบกลับได้อย่างรวดเร็ว
ช่อง
mediaChunks[]

Blob

ไม่บังคับ ข้อมูลไบต์แบบอินไลน์สำหรับอินพุตสื่อ ระบบไม่รองรับ mediaChunks หลายรายการ และจะละเว้นรายการทั้งหมด ยกเว้นรายการแรก

เลิกใช้งานแล้ว: โปรดใช้ audio, video หรือ text แทน

audio

Blob

ไม่บังคับ ซึ่งจะสร้างสตรีมอินพุตเสียงแบบเรียลไทม์

video

Blob

ไม่บังคับ ซึ่งจะสร้างสตรีมอินพุตวิดีโอแบบเรียลไทม์

activityStart

ActivityStart

ไม่บังคับ ทำเครื่องหมายจุดเริ่มต้นของกิจกรรมของผู้ใช้ ระบบจะส่งข้อมูลนี้ได้ก็ต่อเมื่อปิดใช้การตรวจหากิจกรรมอัตโนมัติ (ฝั่งเซิร์ฟเวอร์)

activityEnd

ActivityEnd

ไม่บังคับ ทำเครื่องหมายจุดสิ้นสุดของกิจกรรมของผู้ใช้ ระบบจะส่งข้อมูลนี้ได้ก็ต่อเมื่อปิดใช้การตรวจหากิจกรรมอัตโนมัติ (ฝั่งเซิร์ฟเวอร์)

mediaResolution

MediaResolution

ไม่บังคับ ความละเอียดของสื่อที่จะใช้ หากไม่ได้ระบุ ระบบจะใช้ setup.generationConfig.mediaResolution หรือค่าเริ่มต้นหากไม่ได้ระบุการตั้งค่า

audioStreamEnd

bool

ไม่บังคับ ระบุว่าสตรีมเสียงสิ้นสุดลงแล้ว เช่น เนื่องจากปิดไมโครโฟน

ควรส่งเฉพาะเมื่อเปิดใช้การตรวจหากิจกรรมอัตโนมัติ (ซึ่งเป็นค่าเริ่มต้น)

ไคลเอ็นต์สามารถเปิดสตรีมอีกครั้งได้โดยส่งข้อความเสียง

text

string

ไม่บังคับ ซึ่งจะสร้างสตรีมอินพุตข้อความแบบเรียลไทม์

BidiGenerateContentServerContent

การอัปเดตเซิร์ฟเวอร์ที่เพิ่มขึ้นซึ่งโมเดลสร้างขึ้นเพื่อตอบกลับข้อความของไคลเอ็นต์

ระบบจะสร้างเนื้อหาโดยเร็วที่สุด ไม่ใช่แบบเรียลไทม์ ลูกค้าอาจเลือกบัฟเฟอร์และเล่นแบบเรียลไทม์

ช่อง
generationComplete

bool

เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าโมเดลสร้างเสร็จแล้ว

เมื่อโมเดลถูกขัดจังหวะขณะสร้าง จะไม่มีข้อความ "generation_complete" ในเทิร์นที่ถูกขัดจังหวะ แต่จะผ่าน "interrupted > turn_complete"

เมื่อโมเดลถือว่าเป็นการเล่นแบบเรียลไทม์ จะมีความล่าช้าระหว่าง generation_complete กับ turn_complete ซึ่งเกิดจากโมเดลรอให้การเล่นเสร็จสิ้น

turnComplete

bool

เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าโมเดลได้ดำเนินการในเทิร์นของตนเสร็จแล้ว การสร้างจะเริ่มขึ้นเมื่อได้รับข้อความเพิ่มเติมจากไคลเอ็นต์เท่านั้น โปรดทราบว่าเมื่อเปิดใช้การรายงานสถานะการเล่น ระบบจะปล่อยเหตุการณ์นี้ก็ต่อเมื่อสถานะการเล่นระบุว่าการเล่นเสร็จสมบูรณ์แล้วเท่านั้น ระบบจะไม่สนใจสถานะการเล่นในอนาคตของรุ่นเดียวกัน

interrupted

bool

เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าข้อความของไคลเอ็นต์ขัดจังหวะการสร้างโมเดลปัจจุบัน หากไคลเอ็นต์กำลังเล่นเนื้อหาแบบเรียลไทม์ นี่เป็นสัญญาณที่ดีในการหยุดและล้างคิวการเล่นปัจจุบัน

groundingMetadata

GroundingMetadata

เอาต์พุตเท่านั้น ข้อมูลเมตาพื้นฐานสำหรับเนื้อหาที่สร้างขึ้น

inputTranscription

BidiGenerateContentTranscription

เอาต์พุตเท่านั้น ป้อนข้อความถอดเสียง ระบบจะส่งการถอดเสียงเป็นคำแยกจากข้อความเซิร์ฟเวอร์อื่นๆ และไม่มีการรับประกันลำดับ

interimInputTranscription

BidiGenerateContentTranscription

เอาต์พุตเท่านั้น อัปเดตการถอดเสียงที่มีเวลาในการตอบสนองต่ำขณะที่ผู้ใช้กำลังพูด ฟิลด์นี้อาจมีการอัปเดตบ่อย

outputTranscription

BidiGenerateContentTranscription

เอาต์พุตเท่านั้น แสดงผลการถอดเสียงเป็นคำ การถอดเสียงเหล่านี้เป็นส่วนหนึ่งของเอาต์พุตการสร้างของเซิร์ฟเวอร์ ระบบจะส่งการถอดเสียงเอาต์พุตสุดท้ายของเทิร์นนี้ก่อน generationComplete หรือ interrupted ซึ่งตามด้วย turnComplete ไม่มีการรับประกันลำดับที่แน่นอนระหว่างการถอดเสียงและการแสดงผล modelTurn อื่นๆ แต่เซิร์ฟเวอร์จะพยายามส่งข้อความถอดเสียงที่ใกล้เคียงกับเอาต์พุตเสียงที่เกี่ยวข้อง

urlContextMetadata

UrlContextMetadata

waitingForInput

bool

เอาต์พุตเท่านั้น หากเป็นจริง แสดงว่าโมเดลไม่ได้สร้างเนื้อหาเนื่องจากกำลังรอข้อมูลเพิ่มเติมจากผู้ใช้ เช่น เนื่องจากคาดหวังให้ผู้ใช้พูดต่อ

interactionStatus

InteractionStatus

เอาต์พุตเท่านั้น สถานะกิจกรรมปัจจุบันของเซสชันสด ส่งพร้อมกับ turnComplete เสมอ

modelTurn

Content

เอาต์พุตเท่านั้น เนื้อหาที่โมเดลสร้างขึ้นเป็นส่วนหนึ่งของการสนทนากับผู้ใช้ในปัจจุบัน

BidiGenerateContentServerMessage

ข้อความตอบกลับสำหรับการเรียก BidiGenerateContent

ช่อง
usageMetadata

UsageMetadata

เอาต์พุตเท่านั้น ข้อมูลเมตาการใช้งานเกี่ยวกับคำตอบ

voiceActivity

VoiceActivity

เอาต์พุตเท่านั้น ตรวจพบกิจกรรมเสียงพูดในสตรีมเสียง

ฟิลด์ Union messageType ประเภทของข้อความ messageType ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
setupComplete

BidiGenerateContentSetupComplete

เอาต์พุตเท่านั้น ส่งเพื่อตอบกลับข้อความ BidiGenerateContentSetup จากไคลเอ็นต์เมื่อการตั้งค่าเสร็จสมบูรณ์

serverContent

BidiGenerateContentServerContent

เอาต์พุตเท่านั้น เนื้อหาที่โมเดลสร้างขึ้นเพื่อตอบกลับข้อความของไคลเอ็นต์

toolCall

BidiGenerateContentToolCall

เอาต์พุตเท่านั้น คำขอให้ไคลเอ็นต์ดำเนินการ functionCalls และส่งคืนการตอบกลับพร้อม id ที่ตรงกัน

toolCallCancellation

BidiGenerateContentToolCallCancellation

เอาต์พุตเท่านั้น การแจ้งเตือนสำหรับไคลเอ็นต์ว่าควรยกเลิก ToolCallMessage ที่ออกก่อนหน้านี้ซึ่งมี id ที่ระบุ

goAway

GoAway

เอาต์พุตเท่านั้น การแจ้งเตือนว่าเซิร์ฟเวอร์จะยกเลิกการเชื่อมต่อในเร็วๆ นี้

sessionResumptionUpdate

SessionResumptionUpdate

เอาต์พุตเท่านั้น การอัปเดตสถานะการกลับมาใช้เซสชันต่อ

BidiGenerateContentSetup

ข้อความที่จะส่งในแรก (และในBidiGenerateContentClientMessageแรกเท่านั้น) มีการกำหนดค่าที่จะใช้ตลอดระยะเวลาของ RPC การสตรีม

ไคลเอ็นต์ควรรอข้อความ BidiGenerateContentSetupComplete ก่อนส่งข้อความเพิ่มเติม

ช่อง
model

string

ต้องระบุ ชื่อทรัพยากรของโมเดล ซึ่งจะใช้เป็นรหัสให้โมเดลใช้

รูปแบบ: models/{model}

generationConfig

GenerationConfig

ไม่บังคับ การกำหนดค่าการสร้าง

ระบบไม่รองรับฟิลด์ต่อไปนี้

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stopSequence
  • skipResponseCache
  • routingConfig
  • audioTimestamp
systemInstruction

Content

ไม่บังคับ ผู้ใช้ระบุคำสั่งของระบบสำหรับโมเดล

หมายเหตุ: ควรใช้ข้อความเท่านั้นในส่วนต่างๆ และเนื้อหาในแต่ละส่วนจะอยู่ในย่อหน้าแยกกัน

tools[]

Tool

ไม่บังคับ รายการToolsที่โมเดลอาจใช้เพื่อสร้างคำตอบถัดไป

Tool คือโค้ดที่ช่วยให้ระบบโต้ตอบกับระบบภายนอกเพื่อดำเนินการหรือชุดการดำเนินการนอกเหนือจากความรู้และขอบเขตของโมเดล

realtimeInputConfig

RealtimeInputConfig

ไม่บังคับ กำหนดค่าการจัดการอินพุตแบบเรียลไทม์

sessionResumption

SessionResumptionConfig

ไม่บังคับ กำหนดค่ากลไกการกลับมาใช้เซสชันต่อ

หากรวมไว้ เซิร์ฟเวอร์จะส่งข้อความ SessionResumptionUpdate

contextWindowCompression

ContextWindowCompressionConfig

ไม่บังคับ กำหนดค่ากลไกการบีบอัดหน้าต่างบริบท

หากรวมไว้ เซิร์ฟเวอร์จะลดขนาดบริบทโดยอัตโนมัติเมื่อบริบทมีความยาวเกินความยาวที่กำหนดค่าไว้

inputAudioTranscription

AudioTranscriptionConfig

ไม่บังคับ หากตั้งค่าไว้ จะเปิดใช้การถอดเสียงของอินพุตเสียง การถอดเสียงเป็นคำจะสอดคล้องกับภาษาของเสียงที่ป้อน หากมีการกำหนดค่า

outputAudioTranscription

AudioTranscriptionConfig

ไม่บังคับ หากตั้งค่าไว้ จะเปิดใช้การถอดเสียงเป็นคำของเอาต์พุตเสียงของโมเดล การถอดเสียงจะสอดคล้องกับรหัสภาษาที่ระบุสำหรับเสียงเอาต์พุต หากมีการกำหนดค่า

proactivity

ProactivityConfig

ไม่บังคับ กำหนดค่าความสามารถในการคาดการณ์ของโมเดล

ซึ่งช่วยให้โมเดลตอบสนองต่ออินพุตได้อย่างต่อเนื่องและละเว้นอินพุตที่ไม่เกี่ยวข้อง

historyConfig

HistoryConfig

ไม่บังคับ กำหนดค่าการแลกเปลี่ยนประวัติระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์

labels

map<string, string>

ไม่บังคับ ป้ายกำกับที่มีข้อมูลเมตาที่ผู้ใช้กำหนดสำหรับคำขอ

ไม่บังคับ ป้ายกำกับต้องเป็นไปตามข้อกำหนดของป้ายกำกับ Cloud มาตรฐานแบบรวม - คีย์ป้ายกำกับต้องขึ้นต้นด้วยตัวอักษร - คีย์และค่าของป้ายกำกับต้องมีความยาวไม่เกิน 63 อักขระ (จุดรหัส Unicode) โดยต้องมีเฉพาะตัวอักษรพิมพ์เล็ก ตัวเลข ขีดล่าง และขีดกลางเท่านั้น - อนุญาตให้ใช้อักขระสากล

การใช้งาน - ตัวระบุความปลอดภัยจากผู้รวบรวมข้อมูล: ใช้คีย์ safety_identifier (เช่น {"safety_identifier": "user_session_123"})

BidiGenerateContentSetupComplete

ประเภทนี้ไม่มีฟิลด์

ส่งเพื่อตอบกลับข้อความ BidiGenerateContentSetup จากไคลเอ็นต์

BidiGenerateContentToolCall

คำขอให้ไคลเอ็นต์ดำเนินการ functionCalls และส่งคืนการตอบกลับพร้อม id ที่ตรงกัน

ช่อง
functionCalls[]

FunctionCall

เอาต์พุตเท่านั้น การเรียกใช้ฟังก์ชันที่จะดำเนินการ

BidiGenerateContentToolCallCancellation

การแจ้งเตือนสำหรับลูกค้าว่าไม่ควรดำเนินการกับ ToolCallMessage ที่ออกก่อนหน้านี้ซึ่งมี id ที่ระบุ และควรยกเลิก หากการเรียกใช้เครื่องมือเหล่านั้นมีผลข้างเคียง ไคลเอ็นต์อาจพยายามยกเลิกการเรียกใช้เครื่องมือ ข้อความนี้จะปรากฏในกรณีที่ไคลเอ็นต์ขัดจังหวะการตอบกลับของเซิร์ฟเวอร์เท่านั้น

ช่อง
ids[]

string

เอาต์พุตเท่านั้น รหัสของการเรียกใช้เครื่องมือที่จะยกเลิก

BidiGenerateContentToolResponse

การตอบกลับที่ไคลเอ็นต์สร้างขึ้นสำหรับ ToolCall ที่ได้รับจากเซิร์ฟเวอร์ ระบบจะจับคู่ออบเจ็กต์ FunctionResponse แต่ละรายการกับออบเจ็กต์ FunctionCall ที่เกี่ยวข้องตามฟิลด์ id

โปรดทราบว่าใน GenerateContent API แบบเอกภาคและแบบสตรีมมิงฝั่งเซิร์ฟเวอร์ การเรียกใช้ฟังก์ชันจะเกิดขึ้นโดยการแลกเปลี่ยนส่วน Content ในขณะที่ใน GenerateContent API แบบสองทิศทาง การเรียกใช้ฟังก์ชันจะเกิดขึ้นผ่านชุดข้อความเฉพาะเหล่านี้

ช่อง
functionResponses[]

FunctionResponse

ไม่บังคับ คำตอบของการเรียกใช้ฟังก์ชัน

BidiGenerateContentTranscription

การถอดเสียงเป็นคำ (อินพุตหรือเอาต์พุต)

ช่อง
text

string

ข้อความถอดเสียง

languageCode

string

รหัสภาษา BCP-47 ของการถอดเสียงเป็นคำ

startOffset

Duration

ไม่บังคับ ออฟเซ็ตเวลาเริ่มต้นของการถอดเสียงเป็นคำเทียบกับจุดเริ่มต้นของเสียง

endOffset

Duration

ไม่บังคับ ออฟเซ็ตสิ้นสุดของการถอดเสียงเป็นคำเทียบกับจุดเริ่มต้นของเสียง

ContextWindowCompressionConfig

เปิดใช้การบีบอัดหน้าต่างบริบท ซึ่งเป็นกลไกในการจัดการหน้าต่างบริบทของโมเดลเพื่อไม่ให้เกินความยาวที่กำหนด

ช่อง
ฟิลด์ Union compressionMechanism กลไกการบีบอัดหน้าต่างบริบทที่ใช้ compressionMechanism ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
slidingWindow

SlidingWindow

กลไกหน้าต่างเลื่อน

triggerTokens

int64

จำนวนโทเค็น (ก่อนเรียกใช้เทิร์น) ที่จำเป็นในการทริกเกอร์การบีบอัดหน้าต่างบริบท

ซึ่งใช้เพื่อปรับสมดุลคุณภาพกับเวลาในการตอบสนองได้ เนื่องจากหน้าต่างบริบทที่สั้นลงอาจส่งผลให้โมเดลตอบสนองได้เร็วขึ้น อย่างไรก็ตาม การดำเนินการบีบอัดจะทำให้เกิดความหน่วงชั่วคราว ดังนั้นจึงไม่ควรเรียกใช้บ่อยๆ

หากไม่ได้ตั้งค่า ค่าเริ่มต้นคือ 80% ของขีดจํากัดหน้าต่างบริบทของโมเดล ซึ่งจะเหลือ 20% สำหรับคำขอของผู้ใช้/คำตอบของโมเดลในครั้งถัดไป

EndSensitivity

กำหนดวิธีตรวจหาจุดสิ้นสุดของคำพูด

Enum
END_SENSITIVITY_UNSPECIFIED ค่าเริ่มต้นคือ END_SENSITIVITY_HIGH
END_SENSITIVITY_HIGH การตรวจหาอัตโนมัติจะสิ้นสุดการพูดบ่อยขึ้น
END_SENSITIVITY_LOW การตรวจหาอัตโนมัติจะสิ้นสุดคำพูดน้อยลง

GoAway

การแจ้งเตือนว่าเซิร์ฟเวอร์จะยกเลิกการเชื่อมต่อในเร็วๆ นี้

ช่อง
timeLeft

Duration

เวลาที่เหลือก่อนที่ระบบจะสิ้นสุดการเชื่อมต่อจะเป็น ABORTED

ระยะเวลานี้จะไม่น้อยกว่าระยะเวลาขั้นต่ำเฉพาะรุ่น ซึ่งจะระบุพร้อมกับการจำกัดอัตราคำขอสำหรับรุ่น

HistoryConfig

การกำหนดค่าประวัติ

ข้อความนี้รวมอยู่ในการกำหนดค่าเซสชันเป็น BidiGenerateContentSetup.historyConfig กำหนดค่าการแลกเปลี่ยนข้อความประวัติ

ช่อง
initialHistoryInClientContent

bool

ไม่บังคับ หากเป็นจริง หลังจากส่ง setupComplete แล้ว เซิร์ฟเวอร์จะรอและประมวลผลข้อความ clientContent ก่อนจนกว่า turnComplete จะเป็น true ประวัติเริ่มต้นนี้จะไม่ทริกเกอร์การเรียกโมเดลและอาจสิ้นสุดด้วยบทบาท MODEL หลังจากturnCompletetrueแล้ว ลูกค้าจะเริ่มการสนทนาแบบเรียลไทม์ผ่าน realtimeInput ได้

InteractionStatus

สถานะกิจกรรมต่างๆ ของเซสชันแบบสด ระบบจะส่งฟิลด์นี้พร้อมกับ turnComplete เสมอเพื่อระบุว่าเซิร์ฟเวอร์ประมวลผลทั้งหมดเสร็จแล้วหรือไม่

Enum
INTERACTION_STATUS_UNSPECIFIED สถานะการโต้ตอบที่ไม่ได้ระบุ
IN_PROGRESS เซิร์ฟเวอร์ยังคงประมวลผลข้อมูลที่ผู้ใช้ป้อนหรือเรียกใช้การให้เหตุผลเบื้องหลังอยู่ อาจมีเอาต์พุตของโมเดลเพิ่มเติมตามมา
REQUIRES_ACTION

เลิกใช้งานแล้ว โปรดใช้ IDLE แทน

IDLE เซิร์ฟเวอร์ประมวลผลและให้เหตุผลในเบื้องหลังทั้งหมดเสร็จสมบูรณ์แล้ว

ProactivityConfig

การกำหนดค่าสำหรับฟีเจอร์การทำงานเชิงรุก

ช่อง
proactiveAudio

bool

ไม่บังคับ หากเปิดใช้ โมเดลจะปฏิเสธการตอบกลับพรอมต์ล่าสุดได้ เช่น วิธีนี้ช่วยให้โมเดลไม่สนใจคำพูดที่ไม่อยู่ในบริบทหรือเงียบไว้หากผู้ใช้ยังไม่ได้ส่งคำขอ

RealtimeInputConfig

กำหนดค่าลักษณะการทำงานของการป้อนข้อมูลแบบเรียลไทม์ใน BidiGenerateContent

ช่อง
automaticActivityDetection

AutomaticActivityDetection

ไม่บังคับ หากไม่ได้ตั้งค่าไว้ ระบบจะเปิดใช้การตรวจหากิจกรรมอัตโนมัติโดยค่าเริ่มต้น หากปิดใช้การตรวจจับเสียงอัตโนมัติแล้ว ไคลเอ็นต์จะต้องส่งสัญญาณกิจกรรม

activityHandling

ActivityHandling

ไม่บังคับ กำหนดผลกระทบของกิจกรรม

turnCoverage

TurnCoverage

ไม่บังคับ กำหนดว่าอินพุตใดรวมอยู่ในเทิร์นของผู้ใช้

interimTranscriptTimestampEnabled

bool

ไม่บังคับ กำหนดค่าการประทับเวลาของข้อความถอดเสียงชั่วคราว

SessionResumptionConfig

การกำหนดค่าการกลับมาใช้เซสชันต่อ

ข้อความนี้รวมอยู่ในการกำหนดค่าเซสชันเป็น BidiGenerateContentSetup.sessionResumption หากกำหนดค่าไว้ เซิร์ฟเวอร์จะส่งSessionResumptionUpdate

ช่อง
handle

string

แฮนเดิลของเซสชันก่อนหน้า หากไม่มี ระบบจะสร้างเซสชันใหม่

แฮนเดิลเซสชันมาจากค่า SessionResumptionUpdate.token ในการเชื่อมต่อก่อนหน้า

SessionResumptionUpdate

การอัปเดตสถานะการกลับมาใช้เซสชันต่อ

ระบบจะส่งเฉพาะในกรณีที่ตั้งค่า BidiGenerateContentSetup.sessionResumption

ช่อง
newHandle

string

แฮนเดิลใหม่ที่แสดงสถานะที่สามารถกลับมาทำงานต่อได้ เว้นว่างไว้หาก resumable=false

resumable

bool

เป็นจริงหากเซสชันปัจจุบันกลับมาทำงานต่อได้ในตอนนี้

การกลับมาทำงานต่ออาจเป็นไปไม่ได้ในบางช่วงของเซสชัน เช่น เมื่อโมเดลเรียกใช้ฟังก์ชันหรือสร้าง การกลับมาใช้เซสชันต่อ (ใช้โทเค็นของเซสชันก่อนหน้า) ในสถานะดังกล่าวจะทำให้ข้อมูลบางส่วนสูญหาย ในกรณีเหล่านี้ newHandle จะว่างเปล่าและ resumable จะเป็นเท็จ

SlidingWindow

วิธีการ SlidingWindow จะทำงานโดยการทิ้งเนื้อหาที่จุดเริ่มต้นของหน้าต่างบริบท บริบทที่ได้จะเริ่มต้นที่จุดเริ่มต้นของเทิร์นบทบาทผู้ใช้เสมอ คำสั่งของระบบและBidiGenerateContentSetup.prefixTurnsจะอยู่ตอนต้นของผลการค้นหาเสมอ

ช่อง
targetTokens

int64

จำนวนโทเค็นเป้าหมายที่จะเก็บไว้ ค่าเริ่มต้นคือ 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

string

ต้องระบุ ภาษาเป้าหมายสำหรับการแปล ค่าที่รองรับคือรหัสภาษา BCP-47 (เช่น "en" "es" "fr")

echoTargetLanguage

bool

ไม่บังคับ หากเป็นจริง โมเดลจะสร้างเสียงเมื่อมีการพูดภาษาเป้าหมาย ซึ่งโดยพื้นฐานแล้วจะเป็นการเลียนแบบอินพุต หากเป็นเท็จ เราจะไม่สร้างเสียงสำหรับภาษาเป้าหมาย

UrlContextMetadata

ข้อมูลเมตาที่เกี่ยวข้องกับเครื่องมือดึงข้อมูลบริบท URL

ช่อง
urlMetadata[]

UrlMetadata

รายการบริบท URL

UsageMetadata

ข้อมูลเมตาการใช้งานเกี่ยวกับคำตอบ

ช่อง
promptTokenCount

int32

เอาต์พุตเท่านั้น จำนวนโทเค็นในพรอมต์ เมื่อตั้งค่า cachedContent แล้ว ค่านี้จะยังคงเป็นขนาดพรอมต์ที่มีประสิทธิภาพทั้งหมด ซึ่งหมายความว่าค่านี้รวมจำนวนโทเค็นในเนื้อหาที่แคชไว้

cachedContentTokenCount

int32

จำนวนโทเค็นในส่วนที่แคชไว้ของพรอมต์ (เนื้อหาที่แคชไว้)

responseTokenCount

int32

เอาต์พุตเท่านั้น จำนวนโทเค็นทั้งหมดในตัวเลือกคำตอบที่สร้างขึ้นทั้งหมด

toolUsePromptTokenCount

int32

เอาต์พุตเท่านั้น จำนวนโทเค็นที่อยู่ในพรอมต์การใช้เครื่องมือ

thoughtsTokenCount

int32

เอาต์พุตเท่านั้น จำนวนโทเค็นของความคิดสำหรับโมเดลการคิด

totalTokenCount

int32

เอาต์พุตเท่านั้น จำนวนโทเค็นทั้งหมดสำหรับคำขอสร้าง (พรอมต์ + ตัวเลือกคำตอบ)

promptTokensDetails[]

ModalityTokenCount

เอาต์พุตเท่านั้น รายการรูปแบบที่ประมวลผลในอินพุตคำขอ

cacheTokensDetails[]

ModalityTokenCount

เอาต์พุตเท่านั้น รายการรูปแบบของเนื้อหาที่แคชไว้ในอินพุตคำขอ

responseTokensDetails[]

ModalityTokenCount

เอาต์พุตเท่านั้น รายการรูปแบบที่แสดงในการตอบกลับ

toolUsePromptTokensDetails[]

ModalityTokenCount

เอาต์พุตเท่านั้น รายการรูปแบบที่ประมวลผลสำหรับอินพุตคำขอการใช้เครื่องมือ

VoiceActivity

ตรวจพบกิจกรรมเสียงพูดในสตรีมเสียง

ช่อง
type

Type

เอาต์พุตเท่านั้น ประเภทของสัญญาณ VAD(การตรวจจับกิจกรรมเสียงพูด)

audioOffset

Duration

เอาต์พุตเท่านั้น เวลาที่ตรวจพบกิจกรรมเสียงพูดในเวลาของเสียง ซึ่งสัมพันธ์กับจุดเริ่มต้นของสตรีมเสียง

ประเภท

ประเภทของสัญญาณ VAD

Enum
TYPE_UNSPECIFIED ค่าเริ่มต้นคือ UNSPECIFIED
ACTIVITY_START สัญญาณเริ่มต้นประโยค
ACTIVITY_END สัญญาณสิ้นสุดประโยค

โทเค็นการตรวจสอบสิทธิ์ชั่วคราว

คุณขอโทเค็นการตรวจสอบสิทธิ์ชั่วคราวได้โดยการเรียกใช้ AuthTokenService.CreateToken จากนั้นใช้กับ GenerativeService.BidiGenerateContentConstrained โดยส่งโทเค็น ในพารามิเตอร์การค้นหา access_token หรือในส่วนหัว HTTP Authorization โดยมีคำนำหน้า "Token"

CreateAuthTokenRequest

สร้างโทเค็นการตรวจสอบสิทธิ์ชั่วคราว

ช่อง
authToken

AuthToken

ต้องระบุ โทเค็นที่จะสร้าง

AuthToken

คำขอสร้างโทเค็นการตรวจสอบสิทธิ์ชั่วคราว

ช่อง
name

string

เอาต์พุตเท่านั้น ตัวระบุ ตัวโทเค็นเอง

expireTime

Timestamp

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ เวลาที่ไม่บังคับหลังจากนั้น เมื่อใช้โทเค็นที่ได้ ระบบจะปฏิเสธข้อความในเซสชัน BidiGenerateContent (Gemini อาจปิดเซสชันก่อนเวลาหากถึงเวลาที่กำหนด)

หากไม่ได้ตั้งค่าไว้ ค่าเริ่มต้นจะเป็น 30 นาทีในอนาคต หากตั้งค่าไว้ ค่านี้ต้องน้อยกว่า 20 ชั่วโมงในอนาคต

newSessionExpireTime

Timestamp

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ เวลาหลังจากนั้นระบบจะปฏิเสธเซสชัน Live API ใหม่ที่ใช้โทเค็นซึ่งเป็นผลมาจากการส่งคำขอนี้

หากไม่ได้ตั้งค่าไว้ ระบบจะใช้ค่าเริ่มต้นเป็น 60 วินาทีในอนาคต หากตั้งค่าไว้ ค่านี้ต้องน้อยกว่า 20 ชั่วโมงในอนาคต

fieldMask

FieldMask

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ หาก field_mask ว่างเปล่าและไม่มี bidiGenerateContentSetup ระบบจะนำข้อความ BidiGenerateContentSetup ที่มีผลบังคับใช้มาจากการเชื่อมต่อ Live API

หาก field_mask ว่างเปล่าและมี bidiGenerateContentSetup is อยู่ ระบบจะนำข้อความ BidiGenerateContentSetup ที่มีผลมาจาก bidiGenerateContentSetup ทั้งหมดในคำขอนี้ ระบบจะไม่สนใจข้อความการตั้งค่าจากการเชื่อมต่อ Live API

หาก field_mask ไม่ว่าง ฟิลด์ที่เกี่ยวข้องจาก bidiGenerateContentSetup จะเขียนทับฟิลด์จากข้อความการตั้งค่าในการเชื่อมต่อ Live API

ฟิลด์ Union config การกำหนดค่าเฉพาะวิธีสำหรับโทเค็นที่ได้ config ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้เท่านั้น
bidiGenerateContentSetup

BidiGenerateContentSetup

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ การกำหนดค่าเฉพาะสำหรับ BidiGenerateContent

uses

int32

ไม่บังคับ อินพุตเท่านั้น เปลี่ยนแปลงไม่ได้ จำนวนครั้งที่ใช้โทเค็นได้ หากค่านี้เป็น 0 แสดงว่าจะไม่มีการจำกัด การกลับมาใช้เซสชัน Live API อีกครั้งจะไม่นับเป็นการใช้งาน หากไม่ได้ระบุ ค่าเริ่มต้นจะเป็น 1

ข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่พบบ่อย

ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภททรัพยากร API ที่ใช้กันโดยทั่วไป Blob, Content, FunctionCall, FunctionResponse, GenerationConfig, GroundingMetadata, ModalityTokenCount และ Tool ได้ที่ การสร้างเนื้อหา