From 099e65f3b6420615eaafd09e60b5e4daa38b7cc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Thu, 13 Jun 2024 09:36:01 -0700 Subject: [PATCH] report processor name in error logs --- src/pipecat/processors/frameworks/langchain.py | 4 ++-- src/pipecat/services/anthropic.py | 2 +- src/pipecat/services/azure.py | 6 +++--- src/pipecat/services/cartesia.py | 4 ++-- src/pipecat/services/deepgram.py | 4 ++-- src/pipecat/services/elevenlabs.py | 2 +- src/pipecat/services/fal.py | 2 +- src/pipecat/services/google.py | 4 ++-- src/pipecat/services/moondream.py | 2 +- src/pipecat/services/openai.py | 7 ++++--- src/pipecat/services/playht.py | 2 +- src/pipecat/services/whisper.py | 2 +- src/pipecat/transports/base_input.py | 2 +- src/pipecat/transports/base_output.py | 6 +++--- 14 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/pipecat/processors/frameworks/langchain.py b/src/pipecat/processors/frameworks/langchain.py index 674d3aa97..c1f769a16 100644 --- a/src/pipecat/processors/frameworks/langchain.py +++ b/src/pipecat/processors/frameworks/langchain.py @@ -73,7 +73,7 @@ class LangchainProcessor(FrameProcessor): await self.push_frame(TextFrame(self.__get_token_value(token))) await self.push_frame(LLMResponseEndFrame()) except GeneratorExit: - logger.warning("Generator was closed prematurely") + logger.warning(f"{self} generator was closed prematurely") except Exception as e: - logger.error(f"An unknown error occurred: {e}") + logger.error(f"{self} an unknown error occurred: {e}") await self.push_frame(LLMFullResponseEndFrame()) diff --git a/src/pipecat/services/anthropic.py b/src/pipecat/services/anthropic.py index 0f3d7d241..688d43b14 100644 --- a/src/pipecat/services/anthropic.py +++ b/src/pipecat/services/anthropic.py @@ -122,7 +122,7 @@ class AnthropicLLMService(LLMService): await self.push_frame(LLMResponseEndFrame()) except Exception as e: - logger.error(f"Anthropic exception: {e}") + logger.error(f"{self} exception: {e}") finally: await self.push_frame(LLMFullResponseEndFrame()) diff --git a/src/pipecat/services/azure.py b/src/pipecat/services/azure.py index f4184f647..2821bb7b7 100644 --- a/src/pipecat/services/azure.py +++ b/src/pipecat/services/azure.py @@ -72,7 +72,7 @@ class AzureTTSService(TTSService): cancellation_details = result.cancellation_details logger.warning(f"Speech synthesis canceled: {cancellation_details.reason}") if cancellation_details.reason == CancellationReason.Error: - logger.error(f"Error details: {cancellation_details.error_details}") + logger.error(f"{self} error: {cancellation_details.error_details}") class AzureLLMService(BaseOpenAILLMService): @@ -143,7 +143,7 @@ class AzureImageGenServiceREST(ImageGenService): while status != "succeeded": attempts_left -= 1 if attempts_left == 0: - logger.error("Image generation timed out") + logger.error(f"{self} error: image generation timed out") yield ErrorFrame("Image generation timed out") return @@ -156,7 +156,7 @@ class AzureImageGenServiceREST(ImageGenService): image_url = json_response["result"]["data"][0]["url"] if json_response else None if not image_url: - logger.error("Image generation failed") + logger.error(f"{self} error: image generation failed") yield ErrorFrame("Image generation failed") return diff --git a/src/pipecat/services/cartesia.py b/src/pipecat/services/cartesia.py index 161f0589b..f81226576 100644 --- a/src/pipecat/services/cartesia.py +++ b/src/pipecat/services/cartesia.py @@ -37,7 +37,7 @@ class CartesiaTTSService(TTSService): voice_id = voices[self._voice_name]["id"] self._voice = self._client.get_voice_embedding(voice_id=voice_id) except Exception as e: - logger.error(f"Cartesia initialization error: {e}") + logger.error(f"{self} initialization error: {e}") def can_generate_metrics(self) -> bool: return True @@ -60,4 +60,4 @@ class CartesiaTTSService(TTSService): await self.stop_ttfb_metrics() yield AudioRawFrame(chunk["audio"], chunk["sampling_rate"], 1) except Exception as e: - logger.error(f"Cartesia exception: {e}") + logger.error(f"{self} exception: {e}") diff --git a/src/pipecat/services/deepgram.py b/src/pipecat/services/deepgram.py index aa00d762a..810d7518d 100644 --- a/src/pipecat/services/deepgram.py +++ b/src/pipecat/services/deepgram.py @@ -74,7 +74,7 @@ class DeepgramTTSService(TTSService): return logger.error( - f"Error getting audio (status: {r.status}, error: {response_text})") + f"{self} error getting audio (status: {r.status}, error: {response_text})") yield ErrorFrame(f"Error getting audio (status: {r.status}, error: {response_text})") return @@ -83,7 +83,7 @@ class DeepgramTTSService(TTSService): frame = AudioRawFrame(audio=data, sample_rate=16000, num_channels=1) yield frame except Exception as e: - logger.error(f"Deepgram exception: {e}") + logger.error(f"{self} exception: {e}") class DeepgramSTTService(AIService): diff --git a/src/pipecat/services/elevenlabs.py b/src/pipecat/services/elevenlabs.py index 256f077c3..c24736672 100644 --- a/src/pipecat/services/elevenlabs.py +++ b/src/pipecat/services/elevenlabs.py @@ -55,7 +55,7 @@ class ElevenLabsTTSService(TTSService): async with self._aiohttp_session.post(url, json=payload, headers=headers, params=querystring) as r: if r.status != 200: text = await r.text() - logger.error(f"Error getting audio (status: {r.status}, error: {text})") + logger.error(f"{self} error getting audio (status: {r.status}, error: {text})") yield ErrorFrame(f"Error getting audio (status: {r.status}, error: {text})") return diff --git a/src/pipecat/services/fal.py b/src/pipecat/services/fal.py index 14bb0a7f1..13b48de49 100644 --- a/src/pipecat/services/fal.py +++ b/src/pipecat/services/fal.py @@ -62,7 +62,7 @@ class FalImageGenService(ImageGenService): image_url = response["images"][0]["url"] if response else None if not image_url: - logger.error("Image generation failed") + logger.error(f"{self} error: image generation failed") yield ErrorFrame("Image generation failed") return diff --git a/src/pipecat/services/google.py b/src/pipecat/services/google.py index b1da9ddf6..5a20a269e 100644 --- a/src/pipecat/services/google.py +++ b/src/pipecat/services/google.py @@ -104,10 +104,10 @@ class GoogleLLMService(LLMService): logger.debug( f"LLM refused to generate content for safety reasons - {messages}.") else: - logger.error(f"Error {e}") + logger.error(f"{self} error: {e}") except Exception as e: - logger.error(f"Exception: {e}") + logger.error(f"{self} exception: {e}") finally: await self.push_frame(LLMFullResponseEndFrame()) diff --git a/src/pipecat/services/moondream.py b/src/pipecat/services/moondream.py index 508b8d24f..2c105c92d 100644 --- a/src/pipecat/services/moondream.py +++ b/src/pipecat/services/moondream.py @@ -71,7 +71,7 @@ class MoondreamService(VisionService): async def run_vision(self, frame: VisionImageRawFrame) -> AsyncGenerator[Frame, None]: if not self._model: - logger.error("Moondream model not available") + logger.error(f"{self} error: Moondream model not available") yield ErrorFrame("Moondream model not available") return diff --git a/src/pipecat/services/openai.py b/src/pipecat/services/openai.py index 0862de9e3..ce480e783 100644 --- a/src/pipecat/services/openai.py +++ b/src/pipecat/services/openai.py @@ -270,7 +270,7 @@ class OpenAIImageGenService(ImageGenService): image_url = image.data[0].url if not image_url: - logger.error(f"No image provided in response: {image}") + logger.error(f"{self} No image provided in response: {image}") yield ErrorFrame("Image generation failed") return @@ -324,7 +324,8 @@ class OpenAITTSService(TTSService): ) as r: if r.status_code != 200: error = await r.text() - logger.error(f"Error getting audio (status: {r.status_code}, error: {error})") + logger.error( + f"{self} error getting audio (status: {r.status_code}, error: {error})") yield ErrorFrame(f"Error getting audio (status: {r.status_code}, error: {error})") return async for chunk in r.iter_bytes(8192): @@ -333,4 +334,4 @@ class OpenAITTSService(TTSService): frame = AudioRawFrame(chunk, 24_000, 1) yield frame except BadRequestError as e: - logger.error(f"Error generating TTS: {e}") + logger.error(f"{self} error generating TTS: {e}") diff --git a/src/pipecat/services/playht.py b/src/pipecat/services/playht.py index c44719047..6b885f811 100644 --- a/src/pipecat/services/playht.py +++ b/src/pipecat/services/playht.py @@ -80,4 +80,4 @@ class PlayHTTTSService(TTSService): frame = AudioRawFrame(chunk, 16000, 1) yield frame except Exception as e: - logger.error(f"Error generating TTS: {e}") + logger.error(f"{self} error generating TTS: {e}") diff --git a/src/pipecat/services/whisper.py b/src/pipecat/services/whisper.py index 6dfc5080e..9cd3150dc 100644 --- a/src/pipecat/services/whisper.py +++ b/src/pipecat/services/whisper.py @@ -72,8 +72,8 @@ class WhisperSTTService(STTService): async def run_stt(self, audio: bytes) -> AsyncGenerator[Frame, None]: """Transcribes given audio using Whisper""" if not self._model: + logger.error(f"{self} error: Whisper model not available") yield ErrorFrame("Whisper model not available") - logger.error("Whisper model not available") return await self.start_ttfb_metrics() diff --git a/src/pipecat/transports/base_input.py b/src/pipecat/transports/base_input.py index 0d4817e62..d7e3c1c9d 100644 --- a/src/pipecat/transports/base_input.py +++ b/src/pipecat/transports/base_input.py @@ -186,4 +186,4 @@ class BaseInputTransport(FrameProcessor): except queue.Empty: pass except BaseException as e: - logger.error(f"Error reading audio frames: {e}") + logger.error(f"{self} error reading audio frames: {e}") diff --git a/src/pipecat/transports/base_output.py b/src/pipecat/transports/base_output.py index 86802d552..d46201294 100644 --- a/src/pipecat/transports/base_output.py +++ b/src/pipecat/transports/base_output.py @@ -201,7 +201,7 @@ class BaseOutputTransport(FrameProcessor): except queue.Empty: pass except BaseException as e: - logger.error(f"Error processing sink queue: {e}") + logger.error(f"{self} error processing sink queue: {e}") # # Push frames task @@ -270,7 +270,7 @@ class BaseOutputTransport(FrameProcessor): except queue.Empty: pass except Exception as e: - logger.error(f"Error writing to camera: {e}") + logger.error(f"{self} error writing to camera: {e}") # # Audio out @@ -286,5 +286,5 @@ class BaseOutputTransport(FrameProcessor): buffer = buffer[self._audio_chunk_size:] return buffer except BaseException as e: - logger.error(f"Error writing audio frames: {e}") + logger.error(f"{self} error writing audio frames: {e}") return buffer