Feat: Add user-bot latency to OTel turn spans
This adds user-to-bot response latency tracking to OpenTelemetry spans: - Created UserBotLatencyObserver as a reusable component for tracking user-to-bot response latency - Records the value as an attribute on turn spans (turn.user_bot_latency_seconds) - Updated TurnTraceObserver to use UserBotLatencyObserver, following the same pattern as TurnTrackingObserver - Updated PipelineTask to automatically create and wire UserBotLatencyObserver when tracing is enabled (same as TurnTrackingObserver)
This commit is contained in:
committed by
Mark Backman
parent
5a5a98b497
commit
93138466d6
@@ -15,6 +15,7 @@ from pipecat.audio.vad.silero import SileroVADAnalyzer
|
||||
from pipecat.audio.vad.vad_analyzer import VADParams
|
||||
from pipecat.frames.frames import LLMRunFrame
|
||||
from pipecat.observers.loggers.user_bot_latency_log_observer import UserBotLatencyLogObserver
|
||||
from pipecat.observers.user_bot_latency_observer import UserBotLatencyObserver
|
||||
from pipecat.pipeline.pipeline import Pipeline
|
||||
from pipecat.pipeline.runner import PipelineRunner
|
||||
from pipecat.pipeline.task import PipelineParams, PipelineTask
|
||||
@@ -96,6 +97,10 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments):
|
||||
]
|
||||
)
|
||||
|
||||
# Create latency tracking observers
|
||||
latency_tracker = UserBotLatencyObserver()
|
||||
latency_log_observer = UserBotLatencyLogObserver(latency_tracker)
|
||||
|
||||
task = PipelineTask(
|
||||
pipeline,
|
||||
params=PipelineParams(
|
||||
@@ -103,7 +108,7 @@ async def run_bot(transport: BaseTransport, runner_args: RunnerArguments):
|
||||
enable_usage_metrics=True,
|
||||
),
|
||||
idle_timeout_secs=runner_args.pipeline_idle_timeout_secs,
|
||||
observers=[UserBotLatencyLogObserver()],
|
||||
observers=[latency_tracker, latency_log_observer],
|
||||
)
|
||||
|
||||
turn_observer = task.turn_tracking_observer
|
||||
|
||||
Reference in New Issue
Block a user