Skip to content

Commit f59767e

Browse files
authored
Merge pull request #3 from yyyyyt123/feature/tracing
Update benchmark results
2 parents 6cb7db5 + 84861d1 commit f59767e

22 files changed

Lines changed: 483 additions & 134 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ observability/telegraf.conf
4141
.venv*
4242
.coverage
4343
plot_*
44+
!scripts/plot_results.py
4445

4546
# Fumadocs / Next.js site artifacts
4647
docs/node_modules/

docs/content/docs/build-your-agent/custom-agents.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ The reference LLM agent builds a compact prompt from topology size, symptom keys
6868

6969
Return structured fields rather than only natural language. Free-form explanations are useful for review, but scoring depends on verdict, fault type, and location fields.
7070

71-
For reproducibility, NetOpsBench saves a per-case runtime trace beside the raw scenario result. Agents that need private LLM message traces should use `context.trace.llm_client(...)` or a NetOpsBench-provided framework callback such as `context.trace.langchain_callback()`. The harness writes ATIF v1.7 `trajectory.atif.json` artifacts for Harbor-style inspection while keeping ground truth out of the agent trajectory; scoring details are linked separately through `traces/results.jsonl`. Use `netopsbench trace view` to sync trace-enabled runs into the local Harbor viewer cache, or `netopsbench trace view <run_id>` to ensure a specific saved run is available in the viewer.
71+
For reproducibility, NetOpsBench saves a per-case runtime trace beside the raw scenario result. The bundled reference agent captures private LLM and tool events by attaching `context.trace.langchain_callback()` to its LangChain-compatible runtime. Custom non-LangChain agents can use advanced manual recorder methods such as `context.trace.record_llm_request(...)` and `context.trace.record_llm_response(...)` when they need private model calls in the trace. The harness writes ATIF v1.7 `trajectory.atif.json` artifacts for Harbor-style inspection while keeping ground truth out of the agent trajectory; scoring details are linked separately through `traces/results.jsonl`. Use `netopsbench trace view` to sync trace-enabled runs into the local Harbor viewer cache, or `netopsbench trace view <run_id>` to ensure a specific saved run is available in the viewer.
7272

73-
Trace storage preserves visible agent-environment interactions with secret redaction and per-field size limits. NetOpsBench does not monkeypatch arbitrary LLM SDKs, so fully private model prompts and responses are captured only when the agent uses the trace-aware client or callback.
73+
Trace storage preserves visible agent-environment interactions with secret redaction and per-field size limits. NetOpsBench does not monkeypatch arbitrary LLM SDKs, so fully private model prompts and responses are captured only when the agent uses a supported framework callback or the manual recorder methods.
7474

7575
## Reference agent
7676

docs/content/docs/build-your-agent/python-api-guide.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ The `scenario_summaries[*].raw_result_path` fields point to raw JSON files for c
7171

7272
Agent traces are saved by default and can be disabled for a run with `trace=False` or by setting `NETOPSBENCH_TRACE=0`. Disabling trace prevents private runtime trace collection and sidecar artifact creation. Ground truth and score details are written to `traces/results.jsonl`, not into the agent trajectory.
7373

74-
NetOpsBench stores visible prompts, model messages, tool calls, and observations with secret redaction and per-field truncation. For private LLM message capture, custom agents should call models through `context.trace.llm_client(...)` or attach `context.trace.langchain_callback()` to LangChain-compatible runtimes. Set `NETOPSBENCH_TRACE_MAX_FIELD_CHARS` to tune truncation.
74+
NetOpsBench stores visible prompts, model messages, tool calls, and observations with secret redaction and per-field truncation. The bundled `MinimalDeepAgent` attaches `context.trace.langchain_callback()` to its LangChain-compatible runtime so private LLM messages and tool events flow into the same recorder. Non-LangChain agents can use the advanced manual recorder methods, such as `context.trace.record_llm_request(...)` and `context.trace.record_llm_response(...)`, when they need to capture private model calls. Set `NETOPSBENCH_TRACE_MAX_FIELD_CHARS` to tune truncation.
7575

7676
Open a completed run directly in the Harbor viewer:
7777

docs/content/docs/quickstart.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Supported provider presets:
6969

7070
| `--vendor` | Model | Environment variable |
7171
|---|---|---|
72-
| `openai` | gpt-5.4 | `OPENAI_API_KEY` |
72+
| `openai` | gpt-5.5 | `OPENAI_API_KEY` |
7373
| `minimax` | MiniMax-M3 | `MINIMAX_API_KEY` |
7474
| `deepseek` | deepseek-v4-pro | `DEEPSEEK_API_KEY` |
7575
| `zhipu` | glm-5.1 | `ZHIPU_API_KEY` |

docs/content/docs/run-benchmarks/methodology.mdx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Scenarios are generated from `scenarios/specs/fault_campaign.yaml`. Running `net
5353

5454
| Dimension | Meaning |
5555
|---|---|
56-
| Detection accuracy | Whether the agent distinguishes faulted cases from healthy negative samples. |
56+
| Verdict quality | Whether the agent distinguishes faulted cases from healthy negative samples. The results page reports this as verdict F1-score. |
5757
| Device localization | Whether the predicted device matches ground truth or an accepted equivalent. |
5858
| Interface localization | Whether the predicted interface matches when interface-level ground truth exists. |
5959
| Fault type classification | Whether the predicted fault label matches the ground-truth type. |
@@ -92,7 +92,8 @@ The judge affects only fault-type classification. Verdict, device localization,
9292

9393
| Metric | Interpretation |
9494
|---|---|
95-
| `detection_accuracy` | Fault/healthy verdict quality. |
95+
| `detection_accuracy` | Fault/healthy verdict accuracy. |
96+
| `detection_f1` | Fault/healthy verdict F1-score used in the results plots. |
9697
| `device_localization_rate` | Device-level troubleshooting precision. |
9798
| `interface_localization_rate` | Interface-level precision for applicable cases. |
9899
| `localization_composite_score` | Combined localization metric used for comparison. |

docs/content/docs/run-benchmarks/results.mdx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,34 @@ title: Benchmark Results
33
description: Reference cross-model NetOpsBench results.
44
---
55

6-
This page records one cross-model NetOpsBench run. Treat it as a reference snapshot under the documented [methodology](/docs/run-benchmarks/methodology), not as a stable model ranking. Provider defaults, model versions, prompts, and tool policies can change absolute values.
6+
This page records the public trace dataset snapshot. Treat it as a reference snapshot under the documented [methodology](/docs/run-benchmarks/methodology), not as a stable model ranking. Provider defaults, model versions, prompts, and tool policies can change absolute values.
77

88
## Experiment scope
99

1010
| Dimension | Values |
1111
|---|---|
12-
| Models | Kimi K2.6, MiniMax M2.7, DeepSeek V4 Pro, OpenAI GPT-5.4 |
12+
| Models | Kimi K2.6, DeepSeek V4 Pro, OpenAI GPT-5.5, MiniMax M3 |
1313
| Topology scales | XS, Small, Medium, Large |
1414
| Fault types | 12 canonical types across link, routing, impairment, system, and ACL categories |
15-
| Quality metrics | Detection, device localization, interface localization, composite score |
15+
| Quality metrics | Verdict F1-score, device localization, interface localization, composite score |
1616
| Efficiency metrics | Diagnosis time, tool calls, input/output tokens |
1717

1818
## Cross-scale snapshot
1919

2020
Each cell is `XS -> Large`.
2121

22-
| Model | Detection (%) | Device Loc (%) | Interface Loc (%) | Composite (%) | Avg Time (s) | Avg Tools | Input Tokens (K) |
22+
| Model | Verdict F1 (%) | Device Loc (%) | Interface Loc (%) | Composite (%) | Avg Time (s) | Avg Tools | Input Tokens (K) |
2323
|---|---:|---:|---:|---:|---:|---:|---:|
24-
| Kimi K2.6 | 85.7 -> 61.5 | 83.3 -> 33.3 | 28.6 -> 14.3 | 77.1 -> 34.2 | 103.3 -> 224.3 | 22.6 -> 33.0 | 164.1 -> 517.0 |
25-
| DeepSeek V4 Pro | 100.0 -> 80.8 | 58.3 -> 37.5 | 85.7 -> 14.3 | 70.0 -> 30.0 | 161.5 -> 162.6 | 21.2 -> 16.7 | 153.7 -> 261.0 |
26-
| OpenAI GPT-5.4 | 100.0 -> 80.8 | 33.3 -> 45.8 | 42.9 -> 0.0 | 48.6 -> 32.3 | 97.0 -> 48.6 | 14.5 -> 12.4 | 105.1 -> 194.4 |
27-
| MiniMax M2.7 | 100.0 -> 93.8 | 66.7 -> 41.7 | 28.6 -> 14.3 | 64.3 -> 31.7 | 68.1 -> 87.1 | 12.0 -> 13.7 | 87.0 -> 209.5 |
24+
| Kimi K2.6 | 76.2 -> 58.0 | 66.7 -> 20.8 | 71.4 -> 21.4 | 64.3 -> 25.0 | 272.0 -> 576.8 | 36.5 -> 47.3 | 367.6 -> 1029.4 |
25+
| DeepSeek V4 Pro | 100.0 -> 91.7 | 83.3 -> 45.8 | 57.1 -> 39.3 | 78.6 -> 39.4 | 83.1 -> 106.2 | 24.9 -> 22.7 | 247.6 -> 564.2 |
26+
| OpenAI GPT-5.5 | 95.7 -> 66.7 | 83.3 -> 43.8 | 57.1 -> 10.7 | 75.0 -> 32.7 | 71.9 -> 80.5 | 17.9 -> 15.3 | 85.4 -> 147.6 |
27+
| MiniMax M3 | 80.0 -> 35.5 | 50.0 -> 16.7 | 71.4 -> 7.1 | 60.7 -> 16.3 | 214.3 -> 176.8 | 26.4 -> 15.0 | 133.3 -> 167.7 |
2828

29-
The main pattern is that detection remains easier than precise localization. Interface localization is the weakest metric on larger topologies.
29+
The main pattern is that verdict classification remains easier than precise localization. Interface localization is the weakest metric on larger topologies.
3030

3131
## Quality metrics
3232

33-
![Detection accuracy](/assets/benchmark/fig_detection.png)
33+
![Verdict F1-score](/assets/benchmark/fig_verdict_f1.png)
3434

3535
![Device localization](/assets/benchmark/fig_device_loc.png)
3636

@@ -48,4 +48,4 @@ The main pattern is that detection remains easier than precise localization. Int
4848

4949
![Output tokens](/assets/benchmark/fig_output_tokens.png)
5050

51-
Compare cost metrics with localization quality, not detection alone. Higher tool or token use does not automatically improve device or interface precision.
51+
Compare cost metrics with localization quality, not verdict quality alone. Higher tool or token use does not automatically improve device or interface precision.
6.07 KB
Loading
8.5 KB
Loading
-101 KB
Binary file not shown.
5.8 KB
Loading

0 commit comments

Comments
 (0)