Loading...
Loading...
Compare original and translation side by side
[!NOTE] The Live API currently only supports WebSockets. For WebRTC support or simplified integration, use a partner integration.
[!NOTE] Live API 目前仅支持WebSockets。如需WebRTC支持或简化集成,请使用合作伙伴集成方案。
gemini-2.5-flash-native-audio-preview-12-2025[!WARNING] The following Live API models are deprecated and will be shut down. Migrate to.gemini-2.5-flash-native-audio-preview-12-2025
— Released June 17, 2025. Shutdown: December 9, 2025.gemini-live-2.5-flash-preview — Released April 9, 2025. Shutdown: December 9, 2025.gemini-2.0-flash-live-001
gemini-2.5-flash-native-audio-preview-12-2025[!WARNING] 以下Live API模型已废弃,即将停止服务,请迁移至。gemini-2.5-flash-native-audio-preview-12-2025
— 2025年6月17日发布,停止服务时间:2025年12月9日。gemini-live-2.5-flash-preview — 2025年4月9日发布,停止服务时间:2025年12月9日。gemini-2.0-flash-live-001
google-genaipip install google-genai@google/genainpm install @google/genai[!WARNING] Legacy SDKs(Python) andgoogle-generativeai(JS) are deprecated. Use the new SDKs above.@google/generative-ai
google-genaipip install google-genai@google/genainpm install @google/genai[!WARNING] 旧版SDK(Python) 和google-generativeai(JS) 已废弃,请使用上述新SDK。@google/generative-ai
audio/pcm;rate=16000[!IMPORTANT] Use/send_realtime_inputfor all real-time user input (audio, video, and text). UsesendRealtimeInput/send_client_contentonly for incremental conversation history updates (appending prior turns to context), not for sending new user messages.sendClientContent
[!WARNING] Do not useinmedia. Use the specific keys:sendRealtimeInputfor audio data,audiofor images/video frames, andvideofor text input.text
audio/pcm;rate=16000[!IMPORTANT] 所有实时用户输入(音频、视频以及文本)都使用/send_realtime_input发送。sendRealtimeInput/send_client_content仅用于增量更新会话历史(往上下文中追加之前的对话轮次),不可用于发送新的用户消息。sendClientContent
[!WARNING] 不要在中使用sendRealtimeInput字段,请使用对应的专用字段:media传音频数据、audio传图片/视频帧、video传文本输入。text
from google import genai
client = genai.Client(api_key="YOUR_API_KEY")from google import genai
client = genai.Client(api_key="YOUR_API_KEY")import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({ apiKey: 'YOUR_API_KEY' });import { GoogleGenAI } from '@google/genai';
const ai = new GoogleGenAI({ apiKey: 'YOUR_API_KEY' });from google.genai import types
config = types.LiveConnectConfig(
response_modalities=[types.Modality.AUDIO],
system_instruction=types.Content(
parts=[types.Part(text="You are a helpful assistant.")]
)
)
async with client.aio.live.connect(model="gemini-2.5-flash-native-audio-preview-12-2025", config=config) as session:
pass # Session is now activefrom google.genai import types
config = types.LiveConnectConfig(
response_modalities=[types.Modality.AUDIO],
system_instruction=types.Content(
parts=[types.Part(text="You are a helpful assistant.")]
)
)
async with client.aio.live.connect(model="gemini-2.5-flash-native-audio-preview-12-2025", config=config) as session:
pass # 会话已激活const session = await ai.live.connect({
model: 'gemini-2.5-flash-native-audio-preview-12-2025',
config: {
responseModalities: ['audio'],
systemInstruction: { parts: [{ text: 'You are a helpful assistant.' }] }
},
callbacks: {
onopen: () => console.log('Connected'),
onmessage: (response) => console.log('Message:', response),
onerror: (error) => console.error('Error:', error),
onclose: () => console.log('Closed')
}
});const session = await ai.live.connect({
model: 'gemini-2.5-flash-native-audio-preview-12-2025',
config: {
responseModalities: ['audio'],
systemInstruction: { parts: [{ text: 'You are a helpful assistant.' }] }
},
callbacks: {
onopen: () => console.log('已连接'),
onmessage: (response) => console.log('收到消息:', response),
onerror: (error) => console.error('发生错误:', error),
onclose: () => console.log('连接已关闭')
}
});await session.send_realtime_input(text="Hello, how are you?")await session.send_realtime_input(text="Hello, how are you?")session.sendRealtimeInput({ text: 'Hello, how are you?' });session.sendRealtimeInput({ text: 'Hello, how are you?' });await session.send_realtime_input(
audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
)await session.send_realtime_input(
audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
)session.sendRealtimeInput({
audio: { data: chunk.toString('base64'), mimeType: 'audio/pcm;rate=16000' }
});session.sendRealtimeInput({
audio: { data: chunk.toString('base64'), mimeType: 'audio/pcm;rate=16000' }
});undefinedundefinedundefinedundefinedsession.sendRealtimeInput({
video: { data: frame.toString('base64'), mimeType: 'image/jpeg' }
});session.sendRealtimeInput({
video: { data: frame.toString('base64'), mimeType: 'image/jpeg' }
});async for response in session.receive():
content = response.server_content
if content:
# Audio
if content.model_turn:
for part in content.model_turn.parts:
if part.inline_data:
audio_data = part.inline_data.data
# Transcription
if content.input_transcription:
print(f"User: {content.input_transcription.text}")
if content.output_transcription:
print(f"Gemini: {content.output_transcription.text}")
# Interruption
if content.interrupted is True:
pass # Stop playback, clear audio queueasync for response in session.receive():
content = response.server_content
if content:
# 音频处理
if content.model_turn:
for part in content.model_turn.parts:
if part.inline_data:
audio_data = part.inline_data.data
# 转写处理
if content.input_transcription:
print(f"用户: {content.input_transcription.text}")
if content.output_transcription:
print(f"Gemini: {content.output_transcription.text}")
# 打断处理
if content.interrupted is True:
pass # 停止播放,清空音频队列// Inside the onmessage callback
const content = response.serverContent;
if (content?.modelTurn?.parts) {
for (const part of content.modelTurn.parts) {
if (part.inlineData) {
const audioData = part.inlineData.data; // Base64 encoded
}
}
}
if (content?.inputTranscription) console.log('User:', content.inputTranscription.text);
if (content?.outputTranscription) console.log('Gemini:', content.outputTranscription.text);
if (content?.interrupted) { /* Stop playback, clear audio queue */ }// 在onmessage回调内
const content = response.serverContent;
if (content?.modelTurn?.parts) {
for (const part of content.modelTurn.parts) {
if (part.inlineData) {
const audioData = part.inlineData.data; // Base64编码
}
}
}
if (content?.inputTranscription) console.log('用户:', content.inputTranscription.text);
if (content?.outputTranscription) console.log('Gemini:', content.outputTranscription.text);
if (content?.interrupted) { /* 停止播放,清空音频队列 */ }TEXTAUDIOTEXTAUDIOsend_realtime_inputsend_client_contentaudioStreamEndsend_realtime_inputsend_client_contentaudioStreamEndhttps://ai.google.dev/gemini-api/docs/llms.txt.md.txtllms.txthttps://ai.google.dev/gemini-api/docs/live-session.md.txthttps://ai.google.dev/gemini-api/docs/llms.txt.md.txtllms.txthttps://ai.google.dev/gemini-api/docs/live-session.md.txt[!IMPORTANT] Those are not all the documentation pages. Use theindex to discover available documentation pagesllms.txt
[!IMPORTANT] 以下不是全部文档页面,请使用索引获取完整的可用文档列表llms.txt