Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion src/google/adk/cli/adk_web_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -2106,8 +2106,21 @@ async def run_agent_live(

async def forward_events():
runner = await self.get_runner_async(app_name)

# Native-audio models (e.g., gemini-live-2.5-flash-native-audio) only
# support AUDIO modality. When TEXT is requested, fall back to AUDIO.
effective_modalities = modalities
if isinstance(runner.agent, LlmAgent):
model_name = ''
if isinstance(runner.agent.model, str):
model_name = runner.agent.model
elif runner.agent.model: # BaseLlm instance
model_name = runner.agent.model.model
if 'native-audio' in model_name.lower():
effective_modalities = ['AUDIO']

run_config = RunConfig(
response_modalities=modalities,
response_modalities=effective_modalities,
proactivity=(
types.ProactivityConfig(proactive_audio=proactive_audio)
if proactive_audio is not None
Expand Down
6 changes: 6 additions & 0 deletions src/google/adk/runners.py
Original file line number Diff line number Diff line change
Expand Up @@ -1101,6 +1101,12 @@ async def run_live(
# AUDIO by default.
if run_config.response_modalities is None:
run_config.response_modalities = ['AUDIO']
elif (
'AUDIO' not in run_config.response_modalities
and hasattr(self.agent, 'canonical_model')
and 'native-audio' in self.agent.canonical_model.model.lower()
):
run_config.response_modalities = ['AUDIO']
if session is None and (user_id is None or session_id is None):
raise ValueError(
'Either session or user_id and session_id must be provided.'
Expand Down
Loading