Gemini Live
The Gemini Live API lets developers create natural conversations by enabling a two-way WebSocket connection with the Gemini models. The Live API processes data streams in real time. Users can interrupt the AI’s responses with new input, similar to a real conversation. Key features include:
- Multimodal Streaming: The API supports streaming of text, audio, and video data.
- Bidirectional Interaction: The user and the model can provide input and output at the same time.
- Interruptibility: Users can interrupt the model’s response, and the model adjusts its response.
- Tool Use and Function Calling: The API can use external tools to perform actions and get context while maintaining a real-time connection.
- Session Management: Supports managing long conversations through sessions, providing context and continuity.
- Secure Authentication: Uses tokens for secure client-side authentication.
Installation
Section titled “Installation”Gemini Live is configured as an optional dependency in Strands Agents.
To install it, run:
pip install 'strands-agents[bidi-gemini]'Or to install all bidirectional streaming providers at once:
pip install 'strands-agents[bidi-all]'Usage
Section titled “Usage”After installing strands-agents[bidi-gemini], you can import and initialize the Strands Agents’ Gemini Live provider as follows:
import asyncio
from strands.experimental.bidi import BidiAgentfrom strands.experimental.bidi.io import BidiAudioIO, BidiTextIOfrom strands.experimental.bidi.models import BidiGeminiLiveModelfrom strands.experimental.bidi.tools import stop_conversation
from strands_tools import calculator
async def main() -> None: model = BidiGeminiLiveModel( model_id="gemini-2.5-flash-native-audio-preview-09-2025", provider_config={ "audio": { "voice": "Kore", }, }, client_config={"api_key": "<GOOGLE_AI_API_KEY>"}, ) # stop_conversation tool allows user to verbally stop agent execution. agent = BidiAgent(model=model, tools=[calculator, stop_conversation])
audio_io = BidiAudioIO() text_io = BidiTextIO() await agent.run(inputs=[audio_io.input()], outputs=[audio_io.output(), text_io.output()])
if __name__ == "__main__": asyncio.run(main())Configuration
Section titled “Configuration”Client Configs
Section titled “Client Configs”For details on the supported client configs, see here .
Provider Configs
Section titled “Provider Configs”| Parameter | Description | Example | Options |
|---|---|---|---|
audio | AudioConfig instance. | {"voice": "Kore"} | reference |
inference | Dict of inference fields specified in the Gemini LiveConnectConfig. | {"temperature": 0.7} | reference |
For the list of supported voices and languages, see here .
Session Management
Section titled “Session Management”Currently, BidiGeminiLiveModel does not produce a message history and so has limited compatability with the Strands session manager . However, the provider does utilize Gemini’s Session Resumption as part of the connection restart workflow. This allows Gemini Live connections to persist up to 24 hours. After this time limit, a new BidiGeminiLiveModel instance must be created to continue conversations.
Troubleshooting
Section titled “Troubleshooting”Module Not Found
Section titled “Module Not Found”If you encounter the error ModuleNotFoundError: No module named 'google.genai', this means the google-genai dependency hasn’t been properly installed in your environment. To fix this, run pip install 'strands-agents[bidi-gemini]'.
API Key Issues
Section titled “API Key Issues”Make sure your Google AI API key is properly set in client_config or as the GOOGLE_API_KEY environment variable. You can obtain an API key from the Google AI Studio .