Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pipelineagent: expose timing metrics & api errors wip #957

Merged
merged 24 commits into from
Oct 28, 2024

Conversation

theomonnom
Copy link
Member

@theomonnom theomonnom commented Oct 19, 2024

currently: stt, llm, eou, vad, tts timing info

agent = PipelineAgent(...)

@agent.metrics.on("metrics_collected")
def on_metrics(metrics):
     pass
  • This also include an initial pass on exposing errors

Copy link

changeset-bot bot commented Oct 19, 2024

🦋 Changeset detected

Latest commit: 135455e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 11 packages
Name Type
livekit-plugins-elevenlabs Patch
livekit-plugins-anthropic Patch
livekit-plugins-cartesia Patch
livekit-plugins-deepgram Patch
livekit-plugins-browser Patch
livekit-plugins-google Patch
livekit-plugins-openai Patch
livekit-plugins-playht Patch
livekit-plugins-silero Patch
livekit-plugins-azure Patch
livekit-agents Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@theomonnom theomonnom requested a review from a team October 19, 2024 19:51
@theomonnom theomonnom changed the title pipelineagent: initial metrics pipelineagent: initial timing metrics Oct 19, 2024
@theomonnom theomonnom changed the title pipelineagent: initial timing metrics pipelineagent: expose timeing metrics Oct 19, 2024
@theomonnom theomonnom changed the title pipelineagent: expose timeing metrics pipelineagent: expose timing metrics Oct 19, 2024
Copy link
Member

@davidzhao davidzhao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering if the general design should be more generic.. instead of different events. Imagine the following interface:

pipeline_agent.on('metrics_updated', lambda metrics: print(metrics))

where a single callback would be able to collect all sorts of metrics. we could make the metrics more consistent too:

@dataclass
class AgentMetrics:
    type: Literal["tts", "llm",...]
    metrics: Union[TTSMetrics, LLMMetrics, STTMetrics, ...]

livekit-agents/livekit/agents/pipeline/agent_output.py Outdated Show resolved Hide resolved
livekit-agents/livekit/agents/pipeline/agent_output.py Outdated Show resolved Hide resolved
livekit-agents/livekit/agents/pipeline/agent_output.py Outdated Show resolved Hide resolved
livekit-agents/livekit/agents/pipeline/metrics.py Outdated Show resolved Hide resolved
livekit-agents/livekit/agents/pipeline/metrics.py Outdated Show resolved Hide resolved
@theomonnom theomonnom mentioned this pull request Oct 24, 2024
@theomonnom theomonnom requested review from davidzhao and a team October 25, 2024 16:58
Copy link
Member

@davidzhao davidzhao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good! a few nits.

can we also create an example that shows how one might collect stats? the example could just print them out to console (or perhaps a default console log handler that we can include by default?)

livekit-agents/livekit/agents/llm/llm.py Show resolved Hide resolved
livekit-agents/livekit/agents/vad.py Outdated Show resolved Hide resolved
@theomonnom theomonnom changed the title pipelineagent: expose timing metrics pipelineagent: expose timing metrics & api errors wip Oct 28, 2024
@theomonnom theomonnom merged commit ca3e47a into main Oct 28, 2024
5 of 8 checks passed
@theomonnom theomonnom deleted the theo/initial-metrics branch October 28, 2024 16:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants