Live API adalah API stateful yang menggunakan WebSockets. Di bagian ini, Anda akan menemukan detail tambahan terkait WebSockets API.
Sesi
Koneksi WebSocket membuat sesi antara klien dan server Gemini. Setelah klien memulai koneksi baru, sesi dapat bertukar pesan dengan server untuk:
- Mengirim teks, audio, atau video ke server Gemini.
- Menerima permintaan panggilan audio, teks, atau fungsi dari server Gemini.
Koneksi WebSocket
Untuk memulai sesi, hubungkan ke endpoint websocket ini:
wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent
Konfigurasi sesi
Pesan awal setelah koneksi menetapkan konfigurasi sesi, yang mencakup model, parameter pembuatan, petunjuk sistem, dan alat.
Anda dapat mengubah parameter konfigurasi kecuali model selama sesi.
Lihat contoh konfigurasi berikut. Perhatikan bahwa casing nama di SDK dapat bervariasi. Anda dapat mencari opsi konfigurasi Python SDK di sini.
{
"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]
}
Untuk informasi selengkapnya tentang kolom API, lihat generationConfig.
Mengirim pesan
Untuk bertukar pesan melalui koneksi WebSocket, klien harus mengirim objek JSON melalui koneksi WebSocket yang terbuka. Objek JSON harus memiliki tepat satu kolom dari kumpulan objek berikut:
{
"setup": BidiGenerateContentSetup,
"clientContent": BidiGenerateContentClientContent,
"realtimeInput": BidiGenerateContentRealtimeInput,
"toolResponse": BidiGenerateContentToolResponse
}
Pesan klien yang didukung
Lihat pesan klien yang didukung dalam tabel berikut:
Pesan | Deskripsi |
---|---|
BidiGenerateContentSetup |
Konfigurasi sesi yang akan dikirim dalam pesan pertama |
BidiGenerateContentClientContent |
Pembaruan konten inkremental dari percakapan saat ini yang dikirim dari klien |
BidiGenerateContentRealtimeInput |
Input audio, video, atau teks real time |
BidiGenerateContentToolResponse |
Respons terhadap ToolCallMessage yang diterima dari server |
Menerima pesan
Untuk menerima pesan dari Gemini, dengarkan peristiwa 'pesan' WebSocket, lalu uraikan hasilnya sesuai dengan definisi pesan server yang didukung.
Lihat referensi berikut:
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)
Pesan server mungkin memiliki kolom usageMetadata
, tetapi akan
menyertakan tepat satu kolom lain dari
pesan
BidiGenerateContentServerMessage
. (Gabungan messageType
tidak dinyatakan dalam JSON sehingga kolom akan muncul di tingkat teratas pesan.)
Pesan dan peristiwa
ActivityEnd
Jenis ini tidak memiliki kolom.
Menandai akhir aktivitas pengguna.
ActivityHandling
Berbagai cara untuk menangani aktivitas pengguna.
Enum | |
---|---|
ACTIVITY_HANDLING_UNSPECIFIED |
Jika tidak ditentukan, perilaku default-nya adalah START_OF_ACTIVITY_INTERRUPTS . |
START_OF_ACTIVITY_INTERRUPTS |
Jika true (benar), awal aktivitas akan mengganggu respons model (juga disebut "barge in"). Respons model saat ini akan terputus pada saat gangguan. Ini merupakan perilaku default. |
NO_INTERRUPTION |
Respons model tidak akan terganggu. |
ActivityStart
Jenis ini tidak memiliki kolom.
Menandai awal aktivitas pengguna.
AudioTranscriptionConfig
Jenis ini tidak memiliki kolom.
Konfigurasi transkripsi audio.
AutomaticActivityDetection
Mengonfigurasi deteksi aktivitas otomatis.
Kolom | |
---|---|
disabled |
Opsional. Jika diaktifkan (default), input suara dan teks yang terdeteksi akan dihitung sebagai aktivitas. Jika dinonaktifkan, klien harus mengirim sinyal aktivitas. |
startOfSpeechSensitivity |
Opsional. Menentukan kemungkinan ucapan terdeteksi. |
prefixPaddingMs |
Opsional. Durasi ucapan yang terdeteksi yang diperlukan sebelum awal ucapan di-commit. Makin rendah nilai ini, makin sensitif deteksi awal ucapan dan ucapan yang lebih pendek dapat dikenali. Namun, hal ini juga meningkatkan kemungkinan positif palsu. |
endOfSpeechSensitivity |
Opsional. Menentukan kemungkinan ucapan yang terdeteksi berakhir. |
silenceDurationMs |
Opsional. Durasi yang diperlukan untuk non-ucapan yang terdeteksi (misalnya, keheningan) sebelum akhir ucapan dilakukan. Makin besar nilai ini, makin lama jeda ucapan tanpa mengganggu aktivitas pengguna, tetapi hal ini akan meningkatkan latensi model. |
BidiGenerateContentClientContent
Pembaruan inkremental dari percakapan saat ini yang dikirim dari klien. Semua konten di sini ditambahkan tanpa syarat ke histori percakapan dan digunakan sebagai bagian dari perintah ke model untuk membuat konten.
Pesan di sini akan mengganggu pembuatan model saat ini.
Kolom | |
---|---|
turns[] |
Opsional. Konten yang ditambahkan ke percakapan saat ini dengan model. Untuk kueri satu giliran, ini adalah satu instance. Untuk kueri multi-giliran, ini adalah kolom berulang yang berisi histori percakapan dan permintaan terbaru. |
turnComplete |
Opsional. Jika benar, menunjukkan bahwa pembuatan konten server harus dimulai dengan perintah yang saat ini diakumulasikan. Jika tidak, server akan menunggu pesan tambahan sebelum memulai pembuatan. |
BidiGenerateContentRealtimeInput
Input pengguna yang dikirim secara real time.
Berbagai modalitas (audio, video, dan teks) ditangani sebagai streaming serentak. Pengurutan di seluruh aliran ini tidak dijamin.
Dalam beberapa hal, hal ini berbeda dengan BidiGenerateContentClientContent
:
- Dapat dikirim secara terus-menerus tanpa gangguan pada pembuatan model.
- Jika perlu mencampur data yang diselingi di seluruh
BidiGenerateContentClientContent
danBidiGenerateContentRealtimeInput
, server akan mencoba mengoptimalkan respons terbaik, tetapi tidak ada jaminan. - Akhir giliran tidak ditentukan secara eksplisit, tetapi berasal dari aktivitas pengguna (misalnya, akhir ucapan).
- Bahkan sebelum akhir giliran, data diproses secara bertahap untuk mengoptimalkan awal respons yang cepat dari model.
Kolom | |
---|---|
mediaChunks[] |
Opsional. Data byte yang disisipkan untuk input media. Beberapa TIDAK DIGUNAKAN LAGI: Sebagai gantinya, gunakan salah satu dari |
audio |
Opsional. Ini membentuk streaming input audio real-time. |
video |
Opsional. Ini membentuk streaming input video real-time. |
activityStart |
Opsional. Menandai awal aktivitas pengguna. Ini hanya dapat dikirim jika deteksi aktivitas otomatis (yaitu sisi server) dinonaktifkan. |
activityEnd |
Opsional. Menandai akhir aktivitas pengguna. Ini hanya dapat dikirim jika deteksi aktivitas otomatis (yaitu sisi server) dinonaktifkan. |
audioStreamEnd |
Opsional. Menunjukkan bahwa streaming audio telah berakhir, misalnya karena mikrofon dinonaktifkan. Ini hanya boleh dikirim jika deteksi aktivitas otomatis diaktifkan (yang merupakan setelan default). Klien dapat membuka kembali streaming dengan mengirim pesan audio. |
text |
Opsional. Ini membentuk aliran input teks real-time. |
BidiGenerateContentServerContent
Update server inkremental yang dihasilkan oleh model sebagai respons terhadap pesan klien.
Konten dibuat secepat mungkin, dan bukan secara real time. Klien dapat memilih untuk melakukan buffering dan memutarnya secara real time.
Kolom | |
---|---|
generationComplete |
Hanya output. Jika true, menunjukkan bahwa model telah selesai dibuat. Jika model terganggu saat membuat, tidak akan ada pesan 'generation_complete' di giliran yang terganggu, model akan melalui 'interrupted > turn_complete'. Saat model mengasumsikan pemutaran real-time, akan ada penundaan antara generation_complete dan turn_complete yang disebabkan oleh model yang menunggu pemutaran selesai. |
turnComplete |
Hanya output. Jika benar, menunjukkan bahwa model telah menyelesaikan giliran. Pembuatan hanya akan dimulai sebagai respons terhadap pesan klien tambahan. |
interrupted |
Hanya output. Jika benar, menunjukkan bahwa pesan klien telah mengganggu pembuatan model saat ini. Jika klien memutar konten secara real time, ini adalah sinyal yang baik untuk menghentikan dan mengosongkan antrean pemutaran saat ini. |
groundingMetadata |
Hanya output. Metadata dasar untuk konten yang dihasilkan. |
outputTranscription |
Hanya output. Output transkripsi audio. Transkripsi dikirim secara terpisah dari pesan server lainnya dan tidak ada urutan yang dijamin, terutama tidak antara |
modelTurn |
Hanya output. Konten yang telah dibuat model sebagai bagian dari percakapan saat ini dengan pengguna. |
BidiGenerateContentServerMessage
Pesan respons untuk panggilan BidiGenerateContent.
Kolom | |
---|---|
usageMetadata |
Hanya output. Metadata penggunaan tentang respons. |
Kolom union messageType . Jenis pesan. messageType hanya dapat berupa salah satu dari berikut: |
|
setupComplete |
Hanya output. Dikirim sebagai respons terhadap pesan |
serverContent |
Hanya output. Konten yang dihasilkan oleh model sebagai respons terhadap pesan klien. |
toolCall |
Hanya output. Minta klien untuk menjalankan |
toolCallCancellation |
Hanya output. Notifikasi untuk klien bahwa |
goAway |
Hanya output. Pemberitahuan bahwa server akan segera terputus. |
sessionResumptionUpdate |
Hanya output. Pembaruan status kelanjutan sesi. |
BidiGenerateContentSetup
Pesan yang akan dikirim di BidiGenerateContentClientMessage
pertama (dan hanya di BidiGenerateContentClientMessage
pertama). Berisi konfigurasi yang akan berlaku selama durasi RPC streaming.
Klien harus menunggu pesan BidiGenerateContentSetupComplete
sebelum mengirim pesan tambahan.
Kolom | |
---|---|
model |
Wajib. Nama resource model. ID ini berfungsi sebagai ID yang akan digunakan Model. Format: |
generationConfig |
Opsional. Konfigurasi pembuatan. Kolom berikut tidak didukung:
|
systemInstruction |
Opsional. Pengguna memberikan petunjuk sistem untuk model. Catatan: Hanya teks yang boleh digunakan dalam bagian dan konten di setiap bagian akan berada dalam paragraf terpisah. |
tools[] |
Opsional. Daftar
|
realtimeInputConfig |
Opsional. Mengonfigurasi penanganan input realtime. |
sessionResumption |
Opsional. Mengonfigurasi mekanisme melanjutkan sesi. Jika disertakan, server akan mengirim pesan |
contextWindowCompression |
Opsional. Mengonfigurasi mekanisme kompresi jendela konteks. Jika disertakan, server akan otomatis mengurangi ukuran konteks jika melebihi panjang yang dikonfigurasi. |
outputAudioTranscription |
Opsional. Jika ditetapkan, akan mengaktifkan transkripsi output audio model. Transkripsi akan sesuai dengan kode bahasa yang ditentukan untuk audio output, jika dikonfigurasi. |
BidiGenerateContentSetupComplete
Jenis ini tidak memiliki kolom.
Dikirim sebagai respons terhadap pesan BidiGenerateContentSetup
dari klien.
BidiGenerateContentToolCall
Minta klien untuk menjalankan functionCalls
dan menampilkan respons dengan id
yang cocok.
Kolom | |
---|---|
functionCalls[] |
Hanya output. Panggilan fungsi yang akan dieksekusi. |
BidiGenerateContentToolCallCancellation
Notifikasi untuk klien bahwa ToolCallMessage
yang dikeluarkan sebelumnya dengan id
yang ditentukan seharusnya tidak dieksekusi dan harus dibatalkan. Jika ada efek samping pada panggilan alat tersebut, klien dapat mencoba mengurungkan panggilan alat. Pesan ini hanya terjadi jika klien mengganggu giliran server.
Kolom | |
---|---|
ids[] |
Hanya output. ID panggilan alat yang akan dibatalkan. |
BidiGenerateContentToolResponse
Respons yang dibuat klien untuk ToolCall
yang diterima dari server. Setiap objek FunctionResponse
dicocokkan dengan objek FunctionCall
masing-masing oleh kolom id
.
Perhatikan bahwa dalam panggilan fungsi GenerateContent API streaming server dan unary terjadi dengan bertukar bagian Content
, sedangkan dalam panggilan fungsi GenerateContent API bidi terjadi melalui kumpulan pesan khusus ini.
Kolom | |
---|---|
functionResponses[] |
Opsional. Respons terhadap panggilan fungsi. |
BidiGenerateContentTranscription
Transkripsi audio (input atau output).
Kolom | |
---|---|
text |
Teks transkripsi. |
ContextWindowCompressionConfig
Mengaktifkan kompresi jendela konteks — mekanisme untuk mengelola jendela konteks model agar tidak melebihi durasi tertentu.
Kolom | |
---|---|
Kolom union compressionMechanism . Mekanisme kompresi jendela konteks yang digunakan. compressionMechanism hanya dapat berupa salah satu dari berikut: |
|
slidingWindow |
Mekanisme jendela geser. |
triggerTokens |
Jumlah token (sebelum menjalankan giliran) yang diperlukan untuk memicu kompresi jendela konteks. Hal ini dapat digunakan untuk menyeimbangkan kualitas dengan latensi karena periode konteks yang lebih singkat dapat menghasilkan respons model yang lebih cepat. Namun, setiap operasi kompresi akan menyebabkan peningkatan latensi sementara, sehingga tidak boleh sering dipicu. Jika tidak ditetapkan, defaultnya adalah 80% dari batas jendela konteks model. Hal ini menyisakan 20% untuk permintaan pengguna/respons model berikutnya. |
EndSensitivity
Menentukan cara akhir ucapan terdeteksi.
Enum | |
---|---|
END_SENSITIVITY_UNSPECIFIED |
Setelan defaultnya adalah END_SENSITIVITY_HIGH. |
END_SENSITIVITY_HIGH |
Deteksi otomatis lebih sering mengakhiri ucapan. |
END_SENSITIVITY_LOW |
Deteksi otomatis lebih jarang mengakhiri ucapan. |
GoAway
Pemberitahuan bahwa server akan segera terputus.
Kolom | |
---|---|
timeLeft |
Waktu yang tersisa sebelum koneksi akan dihentikan sebagai ABORTED. Durasi ini tidak akan pernah kurang dari minimum khusus model, yang akan ditentukan bersama dengan batas kapasitas untuk model. |
RealtimeInputConfig
Mengonfigurasi perilaku input realtime di BidiGenerateContent
.
Kolom | |
---|---|
automaticActivityDetection |
Opsional. Jika tidak ditetapkan, deteksi aktivitas otomatis diaktifkan secara default. Jika deteksi suara otomatis dinonaktifkan, klien harus mengirim sinyal aktivitas. |
activityHandling |
Opsional. Menentukan efek aktivitas. |
turnCoverage |
Opsional. Menentukan input yang disertakan dalam giliran pengguna. |
SessionResumptionConfig
Konfigurasi kelanjutan sesi.
Pesan ini disertakan dalam konfigurasi sesi sebagai BidiGenerateContentSetup.sessionResumption
. Jika dikonfigurasi, server akan mengirim pesan SessionResumptionUpdate
.
Kolom | |
---|---|
handle |
Nama sebutan sesi sebelumnya. Jika tidak ada, sesi baru akan dibuat. ID sesi berasal dari nilai |
SessionResumptionUpdate
Pembaruan status kelanjutan sesi.
Hanya dikirim jika BidiGenerateContentSetup.sessionResumption
ditetapkan.
Kolom | |
---|---|
newHandle |
Nama sebutan channel baru yang mewakili status yang dapat dilanjutkan. Kosong jika |
resumable |
Benar jika sesi saat ini dapat dilanjutkan pada tahap ini. Lanjutan tidak dapat dilakukan pada beberapa titik dalam sesi. Misalnya, saat model mengeksekusi panggilan fungsi atau membuat. Melanjutkan sesi (menggunakan token sesi sebelumnya) dalam status tersebut akan mengakibatkan beberapa data hilang. Dalam kasus ini, |
SlidingWindow
Metode SlidingWindow beroperasi dengan menghapus konten di awal jendela konteks. Konteks yang dihasilkan akan selalu dimulai di awal giliran peran PENGGUNA. Petunjuk sistem dan BidiGenerateContentSetup.prefixTurns
apa pun akan selalu tetap berada di awal hasil.
Kolom | |
---|---|
targetTokens |
Target jumlah token yang akan disimpan. Nilai defaultnya adalah trigger_tokens/2. Menghapus bagian jendela konteks menyebabkan peningkatan latensi sementara sehingga nilai ini harus dikalibrasi untuk menghindari operasi kompresi yang sering terjadi. |
StartSensitivity
Menentukan cara awal ucapan terdeteksi.
Enum | |
---|---|
START_SENSITIVITY_UNSPECIFIED |
Setelan defaultnya adalah START_SENSITIVITY_HIGH. |
START_SENSITIVITY_HIGH |
Deteksi otomatis akan lebih sering mendeteksi awal ucapan. |
START_SENSITIVITY_LOW |
Deteksi otomatis akan mendeteksi awal ucapan lebih jarang. |
TurnCoverage
Opsi tentang input mana yang disertakan dalam giliran pengguna.
Enum | |
---|---|
TURN_COVERAGE_UNSPECIFIED |
Jika tidak ditentukan, perilaku default-nya adalah TURN_INCLUDES_ONLY_ACTIVITY . |
TURN_INCLUDES_ONLY_ACTIVITY |
Giliran pengguna hanya mencakup aktivitas sejak giliran terakhir, tidak termasuk ketidakaktifan (misalnya, keheningan pada streaming audio). Ini merupakan perilaku default. |
TURN_INCLUDES_ALL_INPUT |
Giliran pengguna mencakup semua input realtime sejak giliran terakhir, termasuk ketidakaktifan (misalnya, keheningan pada streaming audio). |
UsageMetadata
Metadata penggunaan tentang respons.
Kolom | |
---|---|
promptTokenCount |
Hanya output. Jumlah token dalam perintah. Saat |
cachedContentTokenCount |
Jumlah token di bagian perintah yang di-cache (konten yang di-cache) |
responseTokenCount |
Hanya output. Jumlah total token di semua kandidat respons yang dihasilkan. |
toolUsePromptTokenCount |
Hanya output. Jumlah token yang ada dalam perintah penggunaan alat. |
thoughtsTokenCount |
Hanya output. Jumlah token pemikiran untuk model pemikiran. |
totalTokenCount |
Hanya output. Jumlah total token untuk permintaan pembuatan (kandidat perintah + respons). |
promptTokensDetails[] |
Hanya output. Daftar modalitas yang diproses dalam input permintaan. |
cacheTokensDetails[] |
Hanya output. Daftar modalitas konten yang di-cache dalam input permintaan. |
responseTokensDetails[] |
Hanya output. Daftar modalitas yang ditampilkan dalam respons. |
toolUsePromptTokensDetails[] |
Hanya output. Daftar modalitas yang diproses untuk input permintaan penggunaan alat. |
Informasi selengkapnya tentang jenis umum
Untuk informasi selengkapnya tentang jenis resource API yang umum digunakan Blob
,
Content
, FunctionCall
, FunctionResponse
, GenerationConfig
,
GroundingMetadata
, ModalityTokenCount
, dan Tool
, lihat
Membuat konten.