From 5209bd3d9fbc96fc88687afc7e093c547bedc7b9 Mon Sep 17 00:00:00 2001 From: Philipp Eisen Date: Thu, 29 May 2025 19:24:04 +0200 Subject: [PATCH] Fix implemetation of ttfb_ms metric --- .../processors/metrics/frame_processor_metrics.py | 10 +++++----- src/pipecat/utils/tracing/service_attributes.py | 6 +++--- src/pipecat/utils/tracing/service_decorators.py | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/pipecat/processors/metrics/frame_processor_metrics.py b/src/pipecat/processors/metrics/frame_processor_metrics.py index c9be3e3de..fb2ed3412 100644 --- a/src/pipecat/processors/metrics/frame_processor_metrics.py +++ b/src/pipecat/processors/metrics/frame_processor_metrics.py @@ -28,18 +28,18 @@ class FrameProcessorMetrics: self._should_report_ttfb = True @property - def ttfb_ms(self) -> Optional[float]: - """Get the current TTFB value in seconds. + def ttfb_ms(self) -> Optional[int]: + """Get the current TTFB value in milliseconds. Returns: - Optional[float]: The TTFB value in seconds, or None if not measured + Optional[int]: The TTFB value in milliseconds, or None if not measured """ if self._last_ttfb_time > 0: - return self._last_ttfb_time + return int(self._last_ttfb_time * 1000) # If TTFB is in progress, calculate current value if self._start_ttfb_time > 0: - return time.time() - self._start_ttfb_time + return int((time.time() - self._start_ttfb_time) * 1000) return None diff --git a/src/pipecat/utils/tracing/service_attributes.py b/src/pipecat/utils/tracing/service_attributes.py index af192ea61..e0a62ed7f 100644 --- a/src/pipecat/utils/tracing/service_attributes.py +++ b/src/pipecat/utils/tracing/service_attributes.py @@ -60,7 +60,7 @@ def add_tts_span_attributes( settings: Optional[Dict[str, Any]] = None, character_count: Optional[int] = None, operation_name: str = "tts", - ttfb_ms: Optional[float] = None, + ttfb_ms: Optional[int] = None, **kwargs, ) -> None: """Add TTS-specific attributes to a span. @@ -116,7 +116,7 @@ def add_stt_span_attributes( language: Optional[str] = None, settings: Optional[Dict[str, Any]] = None, vad_enabled: bool = False, - ttfb_ms: Optional[float] = None, + ttfb_ms: Optional[int] = None, **kwargs, ) -> None: """Add STT-specific attributes to a span. @@ -178,7 +178,7 @@ def add_llm_span_attributes( system: Optional[str] = None, parameters: Optional[Dict[str, Any]] = None, extra_parameters: Optional[Dict[str, Any]] = None, - ttfb_ms: Optional[float] = None, + ttfb_ms: Optional[int] = None, **kwargs, ) -> None: """Add LLM-specific attributes to a span. diff --git a/src/pipecat/utils/tracing/service_decorators.py b/src/pipecat/utils/tracing/service_decorators.py index 4a695ec7b..d65256385 100644 --- a/src/pipecat/utils/tracing/service_decorators.py +++ b/src/pipecat/utils/tracing/service_decorators.py @@ -152,7 +152,7 @@ def traced_tts(func: Optional[Callable] = None, *, name: Optional[str] = None) - raise finally: # Update TTFB metric at the end - ttfb_ms = getattr(getattr(self, "_metrics", None), "ttfb_ms", None) + ttfb_ms: Optional[int] = getattr(getattr(self, "_metrics", None), "ttfb_ms", None) if ttfb_ms is not None: span.set_attribute("metrics.ttfb_ms", ttfb_ms) @@ -238,7 +238,7 @@ def traced_stt(func: Optional[Callable] = None, *, name: Optional[str] = None) - ) as current_span: try: # Get TTFB metric if available - ttfb_ms = getattr(getattr(self, "_metrics", None), "ttfb_ms", None) + ttfb_ms: Optional[int] = getattr(getattr(self, "_metrics", None), "ttfb_ms", None) # Use settings from the service if available settings = getattr(self, "_settings", {}) @@ -460,7 +460,7 @@ def traced_llm(func: Optional[Callable] = None, *, name: Optional[str] = None) - self.start_llm_usage_metrics = original_start_llm_usage_metrics # Update TTFB metric - ttfb_ms = getattr(getattr(self, "_metrics", None), "ttfb_ms", None) + ttfb_ms: Optional[int] = getattr(getattr(self, "_metrics", None), "ttfb_ms", None) if ttfb_ms is not None: current_span.set_attribute("metrics.ttfb_ms", ttfb_ms) except Exception as e: