From 7e87f61d1768dce49809ac8b7ccf25a0e6b84b90 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Fri, 12 Dec 2025 13:21:35 -0500 Subject: [PATCH 1/2] Update GeminiLiveLLMService model to gemini-2.5-flash-native-audio-preview-12-2025 --- changelog/3228.changed.md | 4 ++++ src/pipecat/services/google/gemini_live/llm.py | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 changelog/3228.changed.md diff --git a/changelog/3228.changed.md b/changelog/3228.changed.md new file mode 100644 index 000000000..5444eef28 --- /dev/null +++ b/changelog/3228.changed.md @@ -0,0 +1,4 @@ +- Updated default models for: + + - `GeminiLiveLLMService` to `gemini-2.5-flash-native-audio-preview-12-2025`. + - `GeminiLiveVertexLLMService` to `gemini-live-2.5-flash-native-audio`. diff --git a/src/pipecat/services/google/gemini_live/llm.py b/src/pipecat/services/google/gemini_live/llm.py index ec608c311..129d9d224 100644 --- a/src/pipecat/services/google/gemini_live/llm.py +++ b/src/pipecat/services/google/gemini_live/llm.py @@ -563,18 +563,18 @@ class InputParams(BaseModel): context_window_compression: Context compression settings. Defaults to None. thinking: Thinking settings. Defaults to None. Note that these settings may require specifying a model that - supports them, e.g. "gemini-2.5-flash-native-audio-preview-09-2025". + supports them, e.g. "gemini-2.5-flash-native-audio-preview-12-2025". enable_affective_dialog: Enable affective dialog, which allows Gemini to adapt to expression and tone. Defaults to None. Note that these settings may require specifying a model that - supports them, e.g. "gemini-2.5-flash-native-audio-preview-09-2025". + supports them, e.g. "gemini-2.5-flash-native-audio-preview-12-2025". Also note that this setting may require specifying an API version that supports it, e.g. HttpOptions(api_version="v1alpha"). proactivity: Proactivity settings, which allows Gemini to proactively decide how to behave, such as whether to avoid responding to content that is not relevant. Defaults to None. Note that these settings may require specifying a model that - supports them, e.g. "gemini-2.5-flash-native-audio-preview-09-2025". + supports them, e.g. "gemini-2.5-flash-native-audio-preview-12-2025". Also note that this setting may require specifying an API version that supports it, e.g. HttpOptions(api_version="v1alpha"). extra: Additional parameters. Defaults to empty dict. @@ -615,7 +615,7 @@ class GeminiLiveLLMService(LLMService): *, api_key: str, base_url: Optional[str] = None, - model="models/gemini-2.0-flash-live-001", + model="models/gemini-2.5-flash-native-audio-preview-12-2025", voice_id: str = "Charon", start_audio_paused: bool = False, start_video_paused: bool = False, @@ -638,7 +638,7 @@ class GeminiLiveLLMService(LLMService): Please use `http_options` to customize requests made by the API client. - model: Model identifier to use. Defaults to "models/gemini-2.0-flash-live-001". + model: Model identifier to use. Defaults to "models/gemini-2.5-flash-native-audio-preview-12-2025". voice_id: TTS voice identifier. Defaults to "Charon". start_audio_paused: Whether to start with audio input paused. Defaults to False. start_video_paused: Whether to start with video input paused. Defaults to False. From 6cda357ce884cd44855cbe70fb4ad2c3eff7d66f Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Fri, 12 Dec 2025 13:57:25 -0500 Subject: [PATCH 2/2] Remove timestamp check from TestThoughtTranscription --- src/pipecat/services/google/gemini_live/llm_vertex.py | 4 ++-- tests/test_transcript_processor.py | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/pipecat/services/google/gemini_live/llm_vertex.py b/src/pipecat/services/google/gemini_live/llm_vertex.py index c58ef311d..fbeb79460 100644 --- a/src/pipecat/services/google/gemini_live/llm_vertex.py +++ b/src/pipecat/services/google/gemini_live/llm_vertex.py @@ -51,7 +51,7 @@ class GeminiLiveVertexLLMService(GeminiLiveLLMService): credentials_path: Optional[str] = None, location: str, project_id: str, - model="google/gemini-2.0-flash-live-preview-04-09", + model="google/gemini-live-2.5-flash-native-audio", voice_id: str = "Charon", start_audio_paused: bool = False, start_video_paused: bool = False, @@ -70,7 +70,7 @@ class GeminiLiveVertexLLMService(GeminiLiveLLMService): credentials_path: Path to the service account JSON file. location: GCP region for Vertex AI endpoint (e.g., "us-east4"). project_id: Google Cloud project ID. - model: Model identifier to use. Defaults to "models/gemini-2.0-flash-live-preview-04-09". + model: Model identifier to use. Defaults to "models/gemini-live-2.5-flash-native-audio". voice_id: TTS voice identifier. Defaults to "Charon". start_audio_paused: Whether to start with audio input paused. Defaults to False. start_video_paused: Whether to start with video input paused. Defaults to False. diff --git a/tests/test_transcript_processor.py b/tests/test_transcript_processor.py index c8e15eb24..e8a26174a 100644 --- a/tests/test_transcript_processor.py +++ b/tests/test_transcript_processor.py @@ -730,9 +730,6 @@ class TestThoughtTranscription(unittest.IsolatedAsyncioTestCase): self.assertIsInstance(second_message, ThoughtTranscriptionMessage) self.assertEqual(second_message.content, "Second consideration") - # Verify timestamps are different - self.assertNotEqual(first_message.timestamp, second_message.timestamp) - async def test_empty_thought_handling(self): """Test that empty thoughts are not emitted""" processor = AssistantTranscriptProcessor(process_thoughts=True)