Merge pull request #3228 from pipecat-ai/mb/gemini-live-update

Update GeminiLiveLLMService model to gemini-2.5-flash-native-audio-pr…
This commit is contained in:
Mark Backman
2025-12-12 14:32:45 -05:00
committed by GitHub
4 changed files with 11 additions and 10 deletions

View File

@@ -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`.

View File

@@ -563,18 +563,18 @@ class InputParams(BaseModel):
context_window_compression: Context compression settings. Defaults to None. context_window_compression: Context compression settings. Defaults to None.
thinking: Thinking settings. Defaults to None. thinking: Thinking settings. Defaults to None.
Note that these settings may require specifying a model that 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 enable_affective_dialog: Enable affective dialog, which allows Gemini
to adapt to expression and tone. Defaults to None. to adapt to expression and tone. Defaults to None.
Note that these settings may require specifying a model that 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 Also note that this setting may require specifying an API version that
supports it, e.g. HttpOptions(api_version="v1alpha"). supports it, e.g. HttpOptions(api_version="v1alpha").
proactivity: Proactivity settings, which allows Gemini to proactively proactivity: Proactivity settings, which allows Gemini to proactively
decide how to behave, such as whether to avoid responding to decide how to behave, such as whether to avoid responding to
content that is not relevant. Defaults to None. content that is not relevant. Defaults to None.
Note that these settings may require specifying a model that 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 Also note that this setting may require specifying an API version that
supports it, e.g. HttpOptions(api_version="v1alpha"). supports it, e.g. HttpOptions(api_version="v1alpha").
extra: Additional parameters. Defaults to empty dict. extra: Additional parameters. Defaults to empty dict.
@@ -615,7 +615,7 @@ class GeminiLiveLLMService(LLMService):
*, *,
api_key: str, api_key: str,
base_url: Optional[str] = None, 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", voice_id: str = "Charon",
start_audio_paused: bool = False, start_audio_paused: bool = False,
start_video_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 Please use `http_options` to customize requests made by the
API client. 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". voice_id: TTS voice identifier. Defaults to "Charon".
start_audio_paused: Whether to start with audio input paused. Defaults to False. 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. start_video_paused: Whether to start with video input paused. Defaults to False.

View File

@@ -51,7 +51,7 @@ class GeminiLiveVertexLLMService(GeminiLiveLLMService):
credentials_path: Optional[str] = None, credentials_path: Optional[str] = None,
location: str, location: str,
project_id: 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", voice_id: str = "Charon",
start_audio_paused: bool = False, start_audio_paused: bool = False,
start_video_paused: bool = False, start_video_paused: bool = False,
@@ -70,7 +70,7 @@ class GeminiLiveVertexLLMService(GeminiLiveLLMService):
credentials_path: Path to the service account JSON file. credentials_path: Path to the service account JSON file.
location: GCP region for Vertex AI endpoint (e.g., "us-east4"). location: GCP region for Vertex AI endpoint (e.g., "us-east4").
project_id: Google Cloud project ID. 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". voice_id: TTS voice identifier. Defaults to "Charon".
start_audio_paused: Whether to start with audio input paused. Defaults to False. 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. start_video_paused: Whether to start with video input paused. Defaults to False.

View File

@@ -730,9 +730,6 @@ class TestThoughtTranscription(unittest.IsolatedAsyncioTestCase):
self.assertIsInstance(second_message, ThoughtTranscriptionMessage) self.assertIsInstance(second_message, ThoughtTranscriptionMessage)
self.assertEqual(second_message.content, "Second consideration") 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): async def test_empty_thought_handling(self):
"""Test that empty thoughts are not emitted""" """Test that empty thoughts are not emitted"""
processor = AssistantTranscriptProcessor(process_thoughts=True) processor = AssistantTranscriptProcessor(process_thoughts=True)