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 audio, teks, atau panggilan 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 yang dikirim setelah koneksi WebSocket dibuat menetapkan konfigurasi sesi, yang mencakup model, parameter pembuatan, petunjuk sistem, dan alat.
Anda tidak dapat memperbarui konfigurasi saat koneksi terbuka. Namun, Anda dapat mengubah parameter konfigurasi, kecuali model, saat menjeda dan melanjutkan melalui mekanisme kelanjutan 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 mengetahui 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 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 'message' WebSocket, lalu parsing 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 lainnya dari pesan BidiGenerateContentServerMessage. (Gabungan messageType tidak dinyatakan dalam JSON sehingga kolom akan
muncul di tingkat teratas pesan.)
Pesan dan acara
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 defaultnya adalah START_OF_ACTIVITY_INTERRUPTS. |
START_OF_ACTIVITY_INTERRUPTS |
Jika benar (true), dimulainya aktivitas akan mengganggu respons model (juga disebut "interupsi"). Respons model saat ini akan terpotong saat terjadi 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 dilakukan. Makin rendah nilai ini, makin sensitif deteksi awal ucapan dan makin pendek ucapan yang dapat dikenali. Namun, hal ini juga meningkatkan kemungkinan positif palsu. |
endOfSpeechSensitivity |
Opsional. Menentukan kemungkinan ucapan yang terdeteksi telah berakhir. |
silenceDurationMs |
Opsional. Durasi yang diperlukan dari non-ucapan yang terdeteksi (misalnya, keheningan) sebelum akhir ucapan dilakukan. Makin besar nilai ini, makin lama jeda ucapan dapat terjadi tanpa mengganggu aktivitas pengguna, tetapi hal ini akan meningkatkan latensi model. |
BidiGenerateContentClientContent
Pembaruan inkremental 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 sekali putaran, ini adalah satu instance. Untuk kueri bolak-balik, 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 terakumulasi. 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 aliran serentak. Urutan di seluruh aliran ini tidak dijamin.
Hal ini berbeda dengan BidiGenerateContentClientContent dalam beberapa hal:
- Dapat dikirim secara terus-menerus tanpa gangguan ke pembuatan model.
- Jika ada kebutuhan untuk menggabungkan data yang disisipkan di seluruh
BidiGenerateContentClientContentdanBidiGenerateContentRealtimeInput, 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 inkremental untuk mengoptimalkan permulaan respons yang cepat dari model.
| Kolom | |
|---|---|
mediaChunks[] |
Opsional. Data byte inline untuk input media. Beberapa TIDAK DIGUNAKAN LAGI: Sebagai gantinya, gunakan salah satu dari |
audio |
Opsional. Ini membentuk aliran input audio real-time. |
video |
Opsional. Ini membentuk aliran 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 saat 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 tidak secara real time. Klien dapat memilih untuk melakukan buffering dan memutarnya secara real time.
| Kolom | |
|---|---|
generationComplete |
Hanya output. Jika benar (true), menunjukkan bahwa model telah selesai membuat. Jika model terganggu saat membuat, tidak akan ada pesan 'generation_complete' dalam giliran yang terganggu, dan akan melalui 'interrupted > turn_complete'. Saat model mengasumsikan pemutaran real-time, akan ada jeda antara generation_complete dan turn_complete yang disebabkan oleh model yang menunggu pemutaran selesai. |
turnComplete |
Hanya output. Jika benar (true), menunjukkan bahwa model telah menyelesaikan gilirannya. 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 perujukan untuk konten yang dihasilkan. |
inputTranscription |
Hanya output. Input transkripsi audio. Transkripsi dikirim secara terpisah dari pesan server lainnya dan tidak ada urutan yang dijamin. |
outputTranscription |
Hanya output. Menghasilkan transkripsi audio. Transkripsi dikirim secara terpisah dari pesan server lainnya dan tidak ada urutan yang dijamin, khususnya tidak antara |
urlContextMetadata |
|
modelTurn |
Hanya output. Konten yang dihasilkan 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. Meminta 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 dalam BidiGenerateContentClientMessage pertama (dan hanya dalam 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. Ini berfungsi sebagai ID untuk Model yang akan digunakan. Format: |
generationConfig |
Opsional. Konfigurasi pembuatan. Kolom berikut tidak didukung:
|
systemInstruction |
Opsional. Pengguna memberikan petunjuk sistem untuk model. Catatan: Hanya teks yang boleh digunakan di setiap bagian dan konten di setiap bagian akan berada dalam paragraf terpisah. |
tools[] |
Opsional. Daftar
|
realtimeInputConfig |
Opsional. Mengonfigurasi penanganan input real-time. |
sessionResumption |
Opsional. Mengonfigurasi mekanisme kelanjutan sesi. Jika disertakan, server akan mengirim pesan |
contextWindowCompression |
Opsional. Mengonfigurasi mekanisme kompresi jendela konteks. Jika disertakan, server akan otomatis mengurangi ukuran konteks saat melebihi panjang yang dikonfigurasi. |
inputAudioTranscription |
Opsional. Jika disetel, mengaktifkan transkripsi input suara. Transkripsi selaras dengan bahasa audio input, jika dikonfigurasi. |
outputAudioTranscription |
Opsional. Jika disetel, akan mengaktifkan transkripsi output audio model. Transkripsi selaras dengan kode bahasa yang ditentukan untuk audio output, jika dikonfigurasi. |
proactivity |
Opsional. Mengonfigurasi proaktivitas model. Hal ini memungkinkan model merespons input secara proaktif dan mengabaikan input yang tidak relevan. |
BidiGenerateContentSetupComplete
Jenis ini tidak memiliki kolom.
Dikirim sebagai respons terhadap pesan BidiGenerateContentSetup dari klien.
BidiGenerateContentToolCall
Meminta 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 sebelumnya dikeluarkan dengan id yang ditentukan seharusnya tidak dijalankan 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 dihasilkan klien terhadap ToolCall yang diterima dari server. Setiap objek FunctionResponse dicocokkan dengan objek FunctionCall masing-masing berdasarkan kolom id.
Perhatikan bahwa pada panggilan fungsi API GenerateContent unary dan server-streaming terjadi dengan menukar bagian Content, sedangkan pada panggilan fungsi API GenerateContent bidi terjadi melalui serangkaian 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 panjang 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 jendela konteks yang lebih pendek dapat menghasilkan respons model yang lebih cepat. Namun, setiap operasi kompresi akan menyebabkan peningkatan latensi sementara, sehingga tidak boleh dipicu terlalu sering. 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 dideteksi.
| Enum | |
|---|---|
END_SENSITIVITY_UNSPECIFIED |
Defaultnya adalah END_SENSITIVITY_HIGH. |
END_SENSITIVITY_HIGH |
Deteksi otomatis lebih sering mengakhiri ucapan. |
END_SENSITIVITY_LOW |
Deteksi otomatis mengakhiri ucapan lebih jarang. |
GoAway
Pemberitahuan bahwa server akan segera terputus.
| Kolom | |
|---|---|
timeLeft |
Waktu yang tersisa sebelum koneksi akan dihentikan sebagai DIBATALKAN. Durasi ini tidak akan pernah kurang dari minimum khusus model, yang akan ditentukan bersama dengan batas frekuensi untuk model. |
ProactivityConfig
Konfigurasi untuk fitur proaktif.
| Kolom | |
|---|---|
proactiveAudio |
Opsional. Jika diaktifkan, model dapat menolak merespons perintah terakhir. Misalnya, hal ini memungkinkan model mengabaikan ucapan di luar konteks atau tetap diam jika pengguna belum membuat permintaan. |
RealtimeInputConfig
Mengonfigurasi perilaku input real-time di BidiGenerateContent.
| Kolom | |
|---|---|
automaticActivityDetection |
Opsional. Jika tidak disetel, deteksi aktivitas otomatis diaktifkan secara default. Jika deteksi suara otomatis dinonaktifkan, klien harus mengirim sinyal aktivitas. |
activityHandling |
Opsional. Mendefinisikan efek aktivitas. |
turnCoverage |
Opsional. Menentukan input mana yang disertakan dalam giliran pengguna. |
SessionResumptionConfig
Konfigurasi pelanjutan sesi.
Pesan ini disertakan dalam konfigurasi sesi sebagai BidiGenerateContentSetup.sessionResumption. Jika dikonfigurasi, server akan mengirimkan pesan SessionResumptionUpdate.
| Kolom | |
|---|---|
handle |
Handle sesi sebelumnya. Jika tidak ada, sesi baru akan dibuat. Handle sesi berasal dari nilai |
SessionResumptionUpdate
Pembaruan status kelanjutan sesi.
Hanya dikirim jika BidiGenerateContentSetup.sessionResumption disetel.
| Kolom | |
|---|---|
newHandle |
Handle baru yang merepresentasikan status yang dapat dilanjutkan. Kosong jika |
resumable |
Benar (true) jika sesi saat ini dapat dilanjutkan pada saat ini. Melanjutkan sesi tidak dapat dilakukan di beberapa titik dalam sesi. Misalnya, saat model menjalankan panggilan fungsi atau membuat. Melanjutkan sesi (menggunakan token sesi sebelumnya) dalam status tersebut akan menyebabkan hilangnya beberapa data. 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 akan selalu berada di awal hasil.
| Kolom | |
|---|---|
targetTokens |
Jumlah target 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. |
StartSensitivity
Menentukan cara awal ucapan dideteksi.
| Enum | |
|---|---|
START_SENSITIVITY_UNSPECIFIED |
Defaultnya adalah START_SENSITIVITY_HIGH. |
START_SENSITIVITY_HIGH |
Deteksi otomatis akan mendeteksi awal ucapan lebih sering. |
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 defaultnya adalah TURN_INCLUDES_ONLY_ACTIVITY. |
TURN_INCLUDES_ONLY_ACTIVITY |
Giliran pengguna hanya mencakup aktivitas sejak giliran terakhir, tidak termasuk tidak aktif (misalnya, tidak ada suara di aliran audio). Ini merupakan perilaku default. |
TURN_INCLUDES_ALL_INPUT |
Giliran pengguna mencakup semua input real-time sejak giliran terakhir, termasuk tidak ada aktivitas (misalnya, tidak ada suara di aliran audio). |
UrlContextMetadata
Metadata yang terkait dengan alat pengambilan konteks URL.
| Kolom | |
|---|---|
urlMetadata[] |
Daftar konteks URL. |
UsageMetadata
Metadata penggunaan tentang respons.
| Kolom | |
|---|---|
promptTokenCount |
Hanya output. Jumlah token dalam perintah. Jika |
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 penalaran. |
totalTokenCount |
Hanya output. Jumlah total token untuk permintaan pembuatan (perintah + kandidat 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. |
Token autentikasi sementara
Token autentikasi sementara dapat diperoleh dengan memanggil
AuthTokenService.CreateToken, lalu digunakan dengan
GenerativeService.BidiGenerateContentConstrained, baik dengan meneruskan token
dalam parameter kueri access_token, atau dalam header HTTP Authorization dengan
awalan "Token".
CreateAuthTokenRequest
Buat token autentikasi sementara.
| Kolom | |
|---|---|
authToken |
Wajib. Token yang akan dibuat. |
AuthToken
Permintaan untuk membuat token autentikasi sementara.
| Kolom | |
|---|---|
name |
Hanya output. ID. Token itu sendiri. |
expireTime |
Opsional. Hanya input. Tidak dapat diubah. Waktu opsional setelah itu, saat menggunakan token yang dihasilkan, pesan dalam sesi BidiGenerateContent akan ditolak. (Gemini dapat menutup sesi secara preventif setelah waktu ini.) Jika tidak disetel, nilai defaultnya adalah 30 menit ke depan. Jika ditetapkan, nilai ini harus kurang dari 20 jam pada masa mendatang. |
newSessionExpireTime |
Opsional. Hanya input. Tidak dapat diubah. Waktu setelah sesi Live API baru yang menggunakan token yang dihasilkan dari permintaan ini akan ditolak. Jika tidak disetel, nilai defaultnya adalah 60 detik pada masa mendatang. Jika ditetapkan, nilai ini harus kurang dari 20 jam pada masa mendatang. |
fieldMask |
Opsional. Hanya input. Tidak dapat diubah. Jika field_mask kosong, dan Jika field_mask kosong, dan Jika field_mask tidak kosong, kolom yang sesuai dari |
Kolom union config. Konfigurasi khusus metode untuk token yang dihasilkan. config hanya dapat berupa salah satu dari berikut: |
|
bidiGenerateContentSetup |
Opsional. Hanya input. Tidak dapat diubah. Konfigurasi khusus untuk |
uses |
Opsional. Hanya input. Tidak dapat diubah. Jumlah berapa kali token dapat digunakan. Jika nilai ini nol, tidak ada batas yang diterapkan. Melanjutkan sesi Live API tidak dihitung sebagai penggunaan. Jika tidak ditentukan, defaultnya adalah 1. |
Informasi selengkapnya tentang jenis umum
Untuk mengetahui informasi selengkapnya tentang jenis resource API yang umum digunakan Blob, Content, FunctionCall, FunctionResponse, GenerationConfig, GroundingMetadata, ModalityTokenCount, dan Tool, lihat Membuat konten.