[Bug] Multi-trace files collapse into one eval case
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 78/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- python
- 領域
- testing-qa
調査の方向性
BaseEvaluator._build_eval_set_from_tracing_json() から始め、tests/test_evaluator.py の対象を絞ったリグレッションカバレッジを読みます。まず複数の trace と順序が正しくない span による失敗を再現し、次に各 trace が順序付けられた span を持つ独立した EvalCase になり、EvalSet の timestamp が生成されたケースのうち最も早い timestamp を使用することを確認します。完了したら evaluator のテスト、Ruff、git diff --check を実行します。
索引モデルが issue の本文から書いたものです。
説明
Bug description
BaseEvaluator._build_eval_set_from_tracing_json() groups spans by trace_id, but currently keeps conversation, metadata, and timestamps outside the per-trace loop and appends only one EvalCase after the loop.
For a tracing file containing multiple traces, this can collapse all traces into one case, attach metadata from the last trace, and produce an empty conversation when spans are not already ordered by start_time.
Minimal reproduction
On current main (43f958d), a tracing file with two traces and out-of-order call_llm spans produces:
len(eval_set.eval_cases) == 1instead of2- the only case uses the second trace's
app_nameanduser_id conversation == []
The focused regression fails deterministically with:
assert len(eval_set.eval_cases) == 2
E assert 1 == 2
Expected behavior
Could you confirm whether the intended conversion semantics are:
- each
trace_idbecomes one isolatedEvalCase; - spans are ordered by
start_timewithin that trace; - conversation, tool calls, and session metadata never cross trace boundaries;
- the
EvalSettimestamp is the earliest generated case timestamp?
Validated local fix
A local one-commit patch implements the behavior above and currently passes:
tests/test_evaluator.py— 3 passed- Ruff 0.11.12 check and format
git diff --check
I have not opened a PR yet because this changes the public mapping between tracing files and evaluation cases. If the semantics above are intended, I can submit the tested patch.
AI assistance
The investigation and candidate patch were developed with AI assistance. I verified the failure on a clean origin/main worktree with an isolated Python bytecode cache and reviewed the trace-boundary semantics.
- 主要言語
- Python
- スター
- 344
- フォーク
- 98
- 平均マージ
- 8時間 17分
- マージ済み PR(30日)
- 152
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
volcengine/veadk-python のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
volcengine/veadk-python#901 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
volcengine/veadk-python#549 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 55/100
volcengine/veadk-python#531 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 58/100
volcengine/veadk-python#508 · コメント 2 件 ·
volcengine/veadk-python の issue をすべて見る
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
stephrobert/dsoxlab#238 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
sublimehq/package_control#1780 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
nwg-piotr/nwg-displays#145 ·