Provider tool call lifecycle events (start/done)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 25/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- python
調査の方向性
Start with draft PR #6973, which the issue identifies as the implementation and says includes tests. Read how it translates provider stream events into provider_tool_call and bridges them to provider_tool_execution_updated; run the PR's tests. Done means consumers receive start and end events during provider-tool execution; the issue leaves naming and shape open for convergence.
索引モデルが issue の本文から書いたものです。
説明
Problem
When a provider features server-side (provider-executed) tools, there's no way to change session state while one of those tools is running — for example, playing a background "thinking" sound for exactly as long as a web search takes, then stopping it when the search returns.
Provider tools run inside a single LLM stream, so the agent state machine never sees them start or finish, and preemptive_generation decouples the timing further. The agent thinking state isn't a reliable proxy.
#5869 adds a terminal function_tools_called event that fires once at the end of a turn. That's useful for post-turn analysis, but it comes too late to drive anything during execution, and it doesn't give a distinct start signal.
Proposal
Add a provider-tool lifecycle that mirrors the existing local-tool one (ToolCallStarted / ToolCallEnded via tool_execution_updated):
- A plugin translates its provider stream (e.g. Mistral's
ToolExecutionStarted/ToolExecutionDone) into a genericprovider_tool_callevent, emitted on the LLM's EventEmitter - The framework bridges that onto the session as
provider_tool_execution_updated, carryingProviderToolCallStarted | ProviderToolCallEnded. - Consumers subscribe once:
session.on("provider_tool_execution_updated", ...).
Any provider with server-side tools gets the session event for free once it adds the translation in its plugin.
Draft PR
Implementation (pipeline path, with tests, mypy strict + ruff clean): #6973
It could complement #5869 (keep that as the per-turn summary, this as the lifecycle) or replace it — happy to converge on naming and shape. Realtime path and the remote_session protobuf relay are natural follow-ups.
- 主要言語
- Python
- スター
- 14.6k
- フォーク
- 3.9k
- 平均マージ
- 2日 7時間
- マージ済み PR(30日)
- 228
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
livekit/agents のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
メンテナーはふだん 1 日以内に返信
-
Assistant markup is stripped from chat history when expressive mode is off対応中かも @ShivamSharma43 が 21 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
livekit/agents#7647 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
docs: openai.LLM vs openai.responses.LLM for HTTP OpenAI-compat hosts再び着手できるかも @AbarnaaSree が 61 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
livekit/agents#7022 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Support CPython 3.15 in livekit-local-inference対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 5/5 1週間以上 初心者へのやさしさ 32/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 1〜2日 初心者へのやさしさ 55/100
メンテナーはふだん 1 日以内に返信
似ている issue
-
factory
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Arize-ai/phoenix#17420 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
FireDynamics/LEDSmokeAnalysis#176 ·
メンテナーはふだん 1 日以内に返信
-
PC
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
メンテナーはふだん 1 日以内に返信
-
dependencies
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
dlt-contrib/dlt-filesystem#51 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信