From 3c19a7ae3de8b8b6adac54726386213490875851 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Wed, 27 Nov 2024 12:31:03 -0500 Subject: [PATCH] Use Google Gemini message format when adding message to the LLM context --- CHANGELOG.md | 4 ++++ src/pipecat/services/google.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4d4986db..d2d587674 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Updated STT and TTS services with language options that match the supported languages for each service. +### Fixed + +- Fixed Google Gemini message handling to properly convert appended messages to Gemini's required format + ## [0.0.49] - 2024-11-17 ### Added diff --git a/src/pipecat/services/google.py b/src/pipecat/services/google.py index 54f9d67aa..be8d80d1f 100644 --- a/src/pipecat/services/google.py +++ b/src/pipecat/services/google.py @@ -332,6 +332,22 @@ class GoogleLLMContext(OpenAILLMContext): self._messages[:] = messages self._restructure_from_openai_messages() + def add_messages(self, messages: List): + # Convert each message individually + converted_messages = [] + for msg in messages: + if isinstance(msg, glm.Content): + # Already in Gemini format + converted_messages.append(msg) + else: + # Convert from standard format to Gemini format + converted = self.from_standard_message(msg) + if converted is not None: + converted_messages.append(converted) + + # Add the converted messages to our existing messages + self._messages.extend(converted_messages) + def get_messages_for_logging(self): msgs = [] for message in self.messages: