niceeval 0.4.6 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs-site/zh/concepts/adapter.mdx +6 -6
- package/docs-site/zh/concepts/experiment.mdx +7 -7
- package/docs-site/zh/concepts/overview.mdx +1 -1
- package/docs-site/zh/concepts/tier.mdx +6 -6
- package/docs-site/zh/guides/agent-feedback-loop.mdx +64 -21
- package/docs-site/zh/guides/connect-your-agent.mdx +7 -7
- package/docs-site/zh/guides/custom-reports.mdx +243 -0
- package/docs-site/zh/guides/experiments.mdx +3 -3
- package/docs-site/zh/guides/report-components.mdx +252 -0
- package/docs-site/zh/guides/reporters.mdx +1 -1
- package/docs-site/zh/guides/results-data.mdx +224 -0
- package/docs-site/zh/guides/runner.mdx +1 -1
- package/docs-site/zh/guides/sandbox-agent.mdx +2 -2
- package/docs-site/zh/guides/viewing-results.mdx +147 -77
- package/docs-site/zh/guides/write-experiment.mdx +9 -9
- package/docs-site/zh/guides/write-send.mdx +6 -6
- package/docs-site/zh/index.mdx +1 -1
- package/docs-site/zh/introduction.mdx +1 -1
- package/docs-site/zh/reference/cli.mdx +11 -3
- package/docs-site/zh/reference/define-agent.mdx +5 -5
- package/docs-site/zh/reference/define-config.mdx +1 -1
- package/docs-site/zh/reference/define-eval.mdx +3 -3
- package/package.json +3 -2
- package/src/agents/ai-sdk.test.ts +1 -1
- package/src/agents/ai-sdk.ts +2 -2
- package/src/agents/claude-code.ts +1 -1
- package/src/agents/codex.ts +2 -2
- package/src/agents/streaming.test.ts +1 -1
- package/src/agents/types.ts +4 -4
- package/src/agents/ui-message-stream.test.ts +1 -1
- package/src/cli.ts +120 -18
- package/src/context/context.test.ts +1 -1
- package/src/context/context.ts +3 -3
- package/src/context/session.ts +2 -2
- package/src/context/types.ts +2 -2
- package/src/i18n/en.ts +29 -7
- package/src/i18n/zh-CN.ts +24 -2
- package/src/report/aggregate.ts +79 -50
- package/src/report/components.tsx +190 -0
- package/src/report/compute.ts +149 -84
- package/src/report/default-report.tsx +222 -0
- package/src/report/dual-face.test.tsx +527 -0
- package/src/report/format.ts +29 -0
- package/src/report/index.ts +79 -24
- package/src/report/load.ts +67 -0
- package/src/report/metrics.ts +2 -1
- package/src/report/param.ts +18 -0
- package/src/report/primitives.tsx +117 -0
- package/src/report/react/CaseList.tsx +2 -2
- package/src/report/react/DeltaTable.tsx +2 -2
- package/src/report/react/MetricBars.tsx +109 -0
- package/src/report/react/MetricLine.tsx +200 -0
- package/src/report/react/MetricMatrix.tsx +1 -1
- package/src/report/react/MetricScatter.tsx +1 -1
- package/src/report/react/MetricTable.tsx +1 -1
- package/src/report/react/RunOverview.tsx +4 -4
- package/src/report/react/Scoreboard.tsx +3 -3
- package/src/report/react/cell.tsx +1 -1
- package/src/report/react/fixtures.ts +98 -36
- package/src/report/react/format.ts +3 -28
- package/src/report/react/index.tsx +41 -24
- package/src/report/react/render.test.tsx +8 -8
- package/src/report/react/styles.css +77 -0
- package/src/report/report.test.ts +248 -128
- package/src/report/report.ts +69 -0
- package/src/report/text/faces.ts +356 -0
- package/src/report/text/layout.ts +125 -0
- package/src/report/text/plot.ts +127 -0
- package/src/report/tree.ts +220 -0
- package/src/report/types.ts +75 -27
- package/src/report/web.ts +40 -0
- package/src/results/copy.ts +95 -41
- package/src/results/format.ts +12 -11
- package/src/results/index.ts +34 -17
- package/src/results/open.ts +201 -81
- package/src/results/results.test.ts +595 -191
- package/src/results/select.ts +107 -55
- package/src/results/types.ts +137 -45
- package/src/results/writer.ts +258 -0
- package/src/runner/attempt.ts +3 -3
- package/src/runner/fingerprint.ts +1 -1
- package/src/runner/reporters/artifacts.ts +38 -78
- package/src/runner/reporters/braintrust.test.ts +2 -2
- package/src/runner/reporters/braintrust.ts +3 -3
- package/src/runner/run.ts +1 -1
- package/src/runner/types.ts +18 -12
- package/src/show/compose.ts +215 -0
- package/src/show/index.ts +263 -0
- package/src/show/render.ts +456 -0
- package/src/show/show.test.ts +505 -0
- package/src/view/app/App.tsx +85 -24
- package/src/view/app/components/CostScoreChart.tsx +29 -10
- package/src/view/app/components/ExperimentTable.tsx +27 -9
- package/src/view/app/components/GroupSelector.tsx +1 -1
- package/src/view/app/i18n.ts +18 -3
- package/src/view/app/lib/attempt-route.test.ts +9 -9
- package/src/view/app/lib/attempt-route.ts +5 -5
- package/src/view/app/lib/outcome.ts +1 -3
- package/src/view/app/lib/rows.ts +95 -15
- package/src/view/app/main.tsx +18 -6
- package/src/view/app/pages/RunsPage.tsx +4 -7
- package/src/view/app/pages/TracesPage.tsx +3 -8
- package/src/view/app/types.ts +50 -6
- package/src/view/client-dist/app.css +1 -1
- package/src/view/client-dist/app.js +20 -20
- package/src/view/data.test.ts +254 -0
- package/src/view/data.ts +336 -0
- package/src/view/index.ts +64 -10
- package/src/view/server.ts +31 -9
- package/src/view/shared/types.ts +47 -41
- package/src/view/styles.css +5 -0
- package/src/view/template.html +1 -0
- package/src/view/view-report.test.ts +308 -0
- package/docs-site/.mintignore +0 -13
- package/docs-site/AGENTS.md +0 -46
- package/docs-site/concepts/adapter.mdx +0 -287
- package/docs-site/concepts/assert.mdx +0 -243
- package/docs-site/concepts/drive.mdx +0 -118
- package/docs-site/concepts/evals.mdx +0 -108
- package/docs-site/concepts/experiment.mdx +0 -37
- package/docs-site/concepts/hitl.mdx +0 -83
- package/docs-site/concepts/judge.mdx +0 -129
- package/docs-site/concepts/overview.mdx +0 -98
- package/docs-site/concepts/tier.mdx +0 -42
- package/docs-site/docs-ref/00-index.md +0 -23
- package/docs-site/docs-ref/01-page-types.md +0 -43
- package/docs-site/docs-ref/03-style-rules.md +0 -45
- package/docs-site/docs-ref/04-code-examples.md +0 -37
- package/docs-site/docs-ref/05-dx-failure-paths.md +0 -45
- package/docs-site/docs-ref/06-checklists.md +0 -53
- package/docs-site/docs.json +0 -256
- package/docs-site/example/ai-agent-application.mdx +0 -148
- package/docs-site/example/claude-code-codex-plugin.mdx +0 -162
- package/docs-site/example/claude-code-codex-skill.mdx +0 -147
- package/docs-site/example/showcase.mdx +0 -39
- package/docs-site/example/tier1-ai-sdk-v7.mdx +0 -136
- package/docs-site/example/tier1-claude-sdk.mdx +0 -119
- package/docs-site/example/tier1-codex-sdk.mdx +0 -111
- package/docs-site/example/tier1-langgraph.mdx +0 -119
- package/docs-site/example/tier1-pi-sdk.mdx +0 -119
- package/docs-site/favicon.svg +0 -5
- package/docs-site/github-diff.css +0 -135
- package/docs-site/github-diff.js +0 -11
- package/docs-site/guides/authoring.mdx +0 -129
- package/docs-site/guides/ci-integration.mdx +0 -97
- package/docs-site/guides/connect-otel.mdx +0 -209
- package/docs-site/guides/connect-your-agent.mdx +0 -221
- package/docs-site/guides/dataset-fanout.mdx +0 -98
- package/docs-site/guides/experiments.mdx +0 -71
- package/docs-site/guides/fixtures.mdx +0 -147
- package/docs-site/guides/reporters.mdx +0 -113
- package/docs-site/guides/runner.mdx +0 -79
- package/docs-site/guides/sandbox-agent.mdx +0 -138
- package/docs-site/guides/sandbox-backends.mdx +0 -64
- package/docs-site/guides/scoring-guide.mdx +0 -92
- package/docs-site/guides/viewing-results.mdx +0 -195
- package/docs-site/guides/write-experiment.mdx +0 -81
- package/docs-site/guides/write-send.mdx +0 -347
- package/docs-site/index.mdx +0 -181
- package/docs-site/introduction.mdx +0 -141
- package/docs-site/quickstart.mdx +0 -136
- package/docs-site/reference/builtin-agents.mdx +0 -161
- package/docs-site/reference/capabilities.mdx +0 -76
- package/docs-site/reference/cli.mdx +0 -120
- package/docs-site/reference/define-agent.mdx +0 -168
- package/docs-site/reference/define-config.mdx +0 -41
- package/docs-site/reference/define-eval.mdx +0 -160
- package/docs-site/reference/events.mdx +0 -131
- package/docs-site/reference/expect.mdx +0 -112
- package/docs-site/tracker.js +0 -8
- package/src/report/react/data.ts +0 -17
- package/src/view/aggregate.ts +0 -103
- package/src/view/loader.test.ts +0 -61
- package/src/view/loader.ts +0 -257
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Integrate AI SDK v7 with NiceEval non-invasively"
|
|
3
|
-
sidebarTitle: "AI SDK v7 integration"
|
|
4
|
-
description: "The complete before/after diff for connecting an AI SDK v7 chat app to NiceEval through its HTTP interface: zero app-side code changes."
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
{/* Generated by scripts/gen-diff-code.ts (pnpm run gen:diff-code). Do not edit by hand. */}
|
|
8
|
-
|
|
9
|
-
Comparison targets:
|
|
10
|
-
|
|
11
|
-
- **before**:[https://github.com/CorrectRoadH/niceeval/tree/main/examples/zh/origin/ai-sdk-v7](https://github.com/CorrectRoadH/niceeval/tree/main/examples/zh/origin/ai-sdk-v7) -- a regular AI SDK v7 chat app (HTTP server + React chat UI), before any eval integration.
|
|
12
|
-
- **after**:[https://github.com/CorrectRoadH/niceeval/tree/main/examples/zh/tier1/ai-sdk-v7](https://github.com/CorrectRoadH/niceeval/tree/main/examples/zh/tier1/ai-sdk-v7) -- the same app after integrating NiceEval.
|
|
13
|
-
|
|
14
|
-
**Integration path**: built-in **`uiMessageStreamAgent`** -- the official non-invasive adapter for the AI SDK UI Message Stream protocol (the standard SSE backend used by `useChat`). The adapter file only declares where the endpoint lives and how to pass `model` in the request body. Session replay, HITL approval (rewriting and resending `needsApproval` tool parts), and tool/message events built directly from protocol frames are all handled by the factory. The protocol frames do not include usage data, so this example does not assert usage. App-side `src/backend/*` files are byte-for-byte unchanged. Use `tier2/` for OTel waterfalls and `tier3/` for feature A/B.
|
|
15
|
-
|
|
16
|
-
All integration code changes (measured from both directories when generated):
|
|
17
|
-
|
|
18
|
-
<table className="gd-summary"><tbody><tr><th>{"Category"}</th><th>{"Files"}</th><th>{"Lines"}</th></tr><tr><td>{"App-side config (required: dependency declarations)"}</td><td>{"3"}</td><td>{"+5 −1"}</td></tr><tr><td>{"adapter (required: transport glue; protocol mapping is in the official package)"}</td><td>{"2"}</td><td>{"+27"}</td></tr><tr><td>{"evals and experiments (test content, grows as needed)"}</td><td>{"8"}</td><td>{"+141"}</td></tr><tr className="gd-total"><td>{"Total"}</td><td>{"13"}</td><td>{"+173 −1"}</td></tr></tbody></table>
|
|
19
|
-
|
|
20
|
-
## File list
|
|
21
|
-
|
|
22
|
-
```text
|
|
23
|
-
ai-sdk-v7/
|
|
24
|
-
├── package.json modified
|
|
25
|
-
├── tsconfig.json modified
|
|
26
|
-
├── pnpm-workspace.yaml modified
|
|
27
|
-
├── niceeval.config.ts added
|
|
28
|
-
├── agents/
|
|
29
|
-
│ └── ai-sdk-v7.ts added
|
|
30
|
-
├── evals/
|
|
31
|
-
│ ├── basic-qa.eval.ts added
|
|
32
|
-
│ ├── hitl-approve.eval.ts added
|
|
33
|
-
│ ├── hitl-deny.eval.ts added
|
|
34
|
-
│ ├── session-isolation.eval.ts added
|
|
35
|
-
│ └── weather-tool.eval.ts added
|
|
36
|
-
└── experiments/
|
|
37
|
-
├── assistant.ts added
|
|
38
|
-
└── compare-models/
|
|
39
|
-
├── deepseek-v4-flash.ts added
|
|
40
|
-
└── deepseek-v4-pro.ts added
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## App-side changes (dependency declarations only)
|
|
44
|
-
|
|
45
|
-
<div className="gd-file">
|
|
46
|
-
<div className="gd-head"><span className="gd-name">{"package.json"}</span><span className="gd-stats"><span className="gd-plus">{"+2"}</span></span></div>
|
|
47
|
-
<div className="gd-body">
|
|
48
|
-
<table className="gd-table"><tbody><tr className="gd-expand" data-fold="gdf10"><td className="gd-ln" colSpan={2}>{"⇕"}</td><td className="gd-sign"></td><td className="gd-code">{"Expand 8 unchanged lines"}</td></tr><tr className="gd-fold gdf10"><td className="gd-ln">{"1"}</td><td className="gd-ln">{"1"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{"{"}</span></td></tr><tr className="gd-fold gdf10"><td className="gd-ln">{"2"}</td><td className="gd-ln">{"2"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"name\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"ai-sdk-v7-example\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf10"><td className="gd-ln">{"3"}</td><td className="gd-ln">{"3"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"version\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"0.1.0\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf10"><td className="gd-ln">{"4"}</td><td className="gd-ln">{"4"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"private\""}</span><span className="gdt0">{": "}</span><span className="gdt1">{"true"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf10"><td className="gd-ln">{"5"}</td><td className="gd-ln">{"5"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"type\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"module\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf10"><td className="gd-ln">{"6"}</td><td className="gd-ln">{"6"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"scripts\""}</span><span className="gdt0">{": {"}</span></td></tr><tr className="gd-fold gdf10"><td className="gd-ln">{"7"}</td><td className="gd-ln">{"7"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"dev\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"lsof -ti tcp:34001 | xargs kill -9 2>/dev/null; concurrently -k -n server,web -c blue,green "}</span><span className="gdt1">{"\\\""}</span><span className="gdt2">{"pnpm dev:server"}</span><span className="gdt1">{"\\\""}</span><span className="gdt2">{" "}</span><span className="gdt1">{"\\\""}</span><span className="gdt2">{"pnpm dev:web"}</span><span className="gdt1">{"\\\""}</span><span className="gdt2">{"\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf10"><td className="gd-ln">{"8"}</td><td className="gd-ln">{"8"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"dev:server\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"node --env-file .env --import tsx/esm --watch src/backend/server.ts\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"9"}</td><td className="gd-ln">{"9"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"dev:web\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"wait-on -t 30000 tcp:127.0.0.1:34001 && vite\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"10"}</td><td className="gd-ln">{"10"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"build\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"vite build\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"11"}</td><td className="gd-ln">{"11"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"start\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"node --env-file .env --import tsx/esm src/backend/server.ts\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"12"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"eval\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"12"}</td><td className="gd-ln">{"13"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"typecheck\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"tsc --noEmit\""}</span></td></tr><tr><td className="gd-ln">{"13"}</td><td className="gd-ln">{"14"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" },"}</span></td></tr><tr><td className="gd-ln">{"14"}</td><td className="gd-ln">{"15"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"dependencies\""}</span><span className="gdt0">{": {"}</span></td></tr><tr className="gd-expand" data-fold="gdf11"><td className="gd-ln" colSpan={2}>{"⇕"}</td><td className="gd-sign"></td><td className="gd-code">{"Expand 15 unchanged lines"}</td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"15"}</td><td className="gd-ln">{"16"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@ai-sdk/openai\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^4.0.5\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"16"}</td><td className="gd-ln">{"17"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@ai-sdk/otel\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^1.0.11\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"17"}</td><td className="gd-ln">{"18"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@ai-sdk/react\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^4.0.5\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"18"}</td><td className="gd-ln">{"19"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@opentelemetry/api\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^1.9.1\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"19"}</td><td className="gd-ln">{"20"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@opentelemetry/exporter-trace-otlp-http\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^0.219.0\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"20"}</td><td className="gd-ln">{"21"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@opentelemetry/resources\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^2.8.0\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"21"}</td><td className="gd-ln">{"22"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@opentelemetry/sdk-trace-node\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^2.8.0\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"22"}</td><td className="gd-ln">{"23"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"ai\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^7.0.11\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"23"}</td><td className="gd-ln">{"24"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"react\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^19.0.0\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"24"}</td><td className="gd-ln">{"25"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"react-dom\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^19.0.0\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"25"}</td><td className="gd-ln">{"26"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"zod\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^4.1.8\""}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"26"}</td><td className="gd-ln">{"27"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" },"}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"27"}</td><td className="gd-ln">{"28"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"devDependencies\""}</span><span className="gdt0">{": {"}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"28"}</td><td className="gd-ln">{"29"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@types/node\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^22.0.0\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf11"><td className="gd-ln">{"29"}</td><td className="gd-ln">{"30"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@types/react\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^19.0.0\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"30"}</td><td className="gd-ln">{"31"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@types/react-dom\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^19.0.0\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"31"}</td><td className="gd-ln">{"32"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"@vitejs/plugin-react\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^5.0.0\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"32"}</td><td className="gd-ln">{"33"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"concurrently\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^9.0.0\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"34"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"niceeval\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"file:../../../..\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"33"}</td><td className="gd-ln">{"35"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"tsx\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^4.19.2\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"34"}</td><td className="gd-ln">{"36"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"typescript\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^5.7.2\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"35"}</td><td className="gd-ln">{"37"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"vite\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^7.0.0\""}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"36"}</td><td className="gd-ln">{"38"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"wait-on\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"^9.0.0\""}</span></td></tr><tr><td className="gd-ln">{"37"}</td><td className="gd-ln">{"39"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" }"}</span></td></tr><tr><td className="gd-ln">{"38"}</td><td className="gd-ln">{"40"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{"}"}</span></td></tr></tbody></table>
|
|
49
|
-
</div>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
<div className="gd-file">
|
|
53
|
-
<div className="gd-head"><span className="gd-name">{"tsconfig.json"}</span><span className="gd-stats"><span className="gd-plus">{"+1"}</span><span className="gd-minus">{"−1"}</span></span></div>
|
|
54
|
-
<div className="gd-body">
|
|
55
|
-
<table className="gd-table"><tbody><tr className="gd-expand" data-fold="gdf12"><td className="gd-ln" colSpan={2}>{"⇕"}</td><td className="gd-sign"></td><td className="gd-code">{"Expand 13 unchanged lines"}</td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"1"}</td><td className="gd-ln">{"1"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{"{"}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"2"}</td><td className="gd-ln">{"2"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"compilerOptions\""}</span><span className="gdt0">{": {"}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"3"}</td><td className="gd-ln">{"3"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"target\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"ES2022\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"4"}</td><td className="gd-ln">{"4"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"module\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"NodeNext\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"5"}</td><td className="gd-ln">{"5"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"moduleResolution\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"NodeNext\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"6"}</td><td className="gd-ln">{"6"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"lib\""}</span><span className="gdt0">{": ["}</span><span className="gdt2">{"\"ES2023\""}</span><span className="gdt0">{", "}</span><span className="gdt2">{"\"DOM\""}</span><span className="gdt0">{", "}</span><span className="gdt2">{"\"DOM.Iterable\""}</span><span className="gdt0">{"],"}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"7"}</td><td className="gd-ln">{"7"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"types\""}</span><span className="gdt0">{": ["}</span><span className="gdt2">{"\"node\""}</span><span className="gdt0">{"],"}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"8"}</td><td className="gd-ln">{"8"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"jsx\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"react-jsx\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"9"}</td><td className="gd-ln">{"9"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"strict\""}</span><span className="gdt0">{": "}</span><span className="gdt1">{"true"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"10"}</td><td className="gd-ln">{"10"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"noUncheckedIndexedAccess\""}</span><span className="gdt0">{": "}</span><span className="gdt1">{"false"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"11"}</td><td className="gd-ln">{"11"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"esModuleInterop\""}</span><span className="gdt0">{": "}</span><span className="gdt1">{"true"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"12"}</td><td className="gd-ln">{"12"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"skipLibCheck\""}</span><span className="gdt0">{": "}</span><span className="gdt1">{"true"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-fold gdf12"><td className="gd-ln">{"13"}</td><td className="gd-ln">{"13"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"allowImportingTsExtensions\""}</span><span className="gdt0">{": "}</span><span className="gdt1">{"true"}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"14"}</td><td className="gd-ln">{"14"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"noEmit\""}</span><span className="gdt0">{": "}</span><span className="gdt1">{"true"}</span><span className="gdt0">{","}</span></td></tr><tr><td className="gd-ln">{"15"}</td><td className="gd-ln">{"15"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"forceConsistentCasingInFileNames\""}</span><span className="gdt0">{": "}</span><span className="gdt1">{"true"}</span></td></tr><tr><td className="gd-ln">{"16"}</td><td className="gd-ln">{"16"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" },"}</span></td></tr><tr className="gd-del"><td className="gd-ln">{"17"}</td><td className="gd-ln"></td><td className="gd-sign">{"−"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"include\""}</span><span className="gdt0">{": ["}</span><span className="gdt2">{"\"src\""}</span><span className="gdt0">{", "}</span><span className="gdt2">{"\"vite.config.ts\""}</span><span className="gdt0">{"]"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"17"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt1">{"\"include\""}</span><span className="gdt0">{": ["}</span><span className="gdt2">{"\"src\""}</span><span className="gdt0">{", "}</span><span className="gdt2">{"\"vite.config.ts\""}</span><span className="gdt0">{", "}</span><span className="gdt2">{"\"niceeval.config.ts\""}</span><span className="gdt0">{", "}</span><span className="gdt2">{"\"agents\""}</span><span className="gdt0">{", "}</span><span className="gdt2">{"\"evals\""}</span><span className="gdt0">{", "}</span><span className="gdt2">{"\"experiments\""}</span><span className="gdt0">{"]"}</span></td></tr><tr><td className="gd-ln">{"18"}</td><td className="gd-ln">{"18"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{"}"}</span></td></tr></tbody></table>
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
|
|
59
|
-
<div className="gd-file">
|
|
60
|
-
<div className="gd-head"><span className="gd-name">{"pnpm-workspace.yaml"}</span><span className="gd-stats"><span className="gd-plus">{"+2"}</span></span></div>
|
|
61
|
-
<div className="gd-body">
|
|
62
|
-
<table className="gd-table"><tbody><tr className="gd-expand" data-fold="gdf13"><td className="gd-ln" colSpan={2}>{"⇕"}</td><td className="gd-sign"></td><td className="gd-code">{"Expand 6 unchanged lines"}</td></tr><tr className="gd-fold gdf13"><td className="gd-ln">{"1"}</td><td className="gd-ln">{"1"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt3">{"packages"}</span><span className="gdt0">{": []"}</span></td></tr><tr className="gd-fold gdf13"><td className="gd-ln">{"2"}</td><td className="gd-ln">{"2"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt3">{"allowBuilds"}</span><span className="gdt0">{":"}</span></td></tr><tr className="gd-fold gdf13"><td className="gd-ln">{"3"}</td><td className="gd-ln">{"3"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt3">{"esbuild"}</span><span className="gdt0">{": "}</span><span className="gdt1">{"true"}</span></td></tr><tr className="gd-fold gdf13"><td className="gd-ln">{"4"}</td><td className="gd-ln">{"4"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt3">{"minimumReleaseAgeExclude"}</span><span className="gdt0">{":"}</span></td></tr><tr className="gd-fold gdf13"><td className="gd-ln">{"5"}</td><td className="gd-ln">{"5"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" - "}</span><span className="gdt2">{"'@ai-sdk/gateway@4.0.8'"}</span></td></tr><tr className="gd-fold gdf13"><td className="gd-ln">{"6"}</td><td className="gd-ln">{"6"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" - "}</span><span className="gdt2">{"'@ai-sdk/openai@4.0.5'"}</span></td></tr><tr><td className="gd-ln">{"7"}</td><td className="gd-ln">{"7"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" - "}</span><span className="gdt2">{"'@ai-sdk/react@4.0.5'"}</span></td></tr><tr><td className="gd-ln">{"8"}</td><td className="gd-ln">{"8"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" - "}</span><span className="gdt2">{"'@ai-sdk/provider-utils@5.0.3'"}</span></td></tr><tr><td className="gd-ln">{"9"}</td><td className="gd-ln">{"9"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" - "}</span><span className="gdt2">{"ai@7.0.11"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"10"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" - "}</span><span className="gdt2">{"niceeval@0.1.1"}</span></td></tr><tr><td className="gd-ln">{"10"}</td><td className="gd-ln">{"11"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt3">{"overrides"}</span><span className="gdt0">{":"}</span></td></tr><tr><td className="gd-ln">{"11"}</td><td className="gd-ln">{"12"}</td><td className="gd-sign"></td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt3">{"ai"}</span><span className="gdt0">{": "}</span><span className="gdt1">{"7.0.11"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"13"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt3">{"niceeval"}</span><span className="gdt0">{": "}</span><span className="gdt2">{"link:../../../.."}</span></td></tr></tbody></table>
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
65
|
-
|
|
66
|
-
## Added adapter, evals, and experiments
|
|
67
|
-
|
|
68
|
-
<div className="gd-file">
|
|
69
|
-
<div className="gd-head"><span className="gd-name">{"niceeval.config.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+7"}</span></span></div>
|
|
70
|
-
<div className="gd-body">
|
|
71
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { defineConfig } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"defineConfig"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" name: { "}</span><span className="gdt2">{"\"zh-CN\""}</span><span className="gdt0">{": "}</span><span className="gdt2">{"\"AI SDK v7 HTTP 无侵入示例\""}</span><span className="gdt0">{", en: "}</span><span className="gdt2">{"\"AI SDK v7 HTTP non-invasive example\""}</span><span className="gdt0">{" },"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" judge: { model: "}</span><span className="gdt2">{"\"gpt-5.4\""}</span><span className="gdt0">{" },"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" timeoutMs: "}</span><span className="gdt1">{"60_000"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
72
|
-
</div>
|
|
73
|
-
</div>
|
|
74
|
-
|
|
75
|
-
<div className="gd-file">
|
|
76
|
-
<div className="gd-head"><span className="gd-name">{"agents/ai-sdk-v7.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+20"}</span></span></div>
|
|
77
|
-
<div className="gd-body">
|
|
78
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// ai-sdk-v7 的 adapter:内置 uiMessageStreamAgent 无侵入对接一个**已经在跑**的 AI SDK 应用"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// (UI Message Stream 协议,https://ai-sdk.dev/docs/ai-sdk-ui/stream-protocol)。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"//"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 应用怎么跑是应用自己的事(pnpm dev / 部署在哪都行),eval 侧不代管进程、不另开端口:"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// AI_SDK_V7_URL 指到哪就测哪,默认应用自己的本地默认端口 34001。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"//"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 断言依据(工具/消息/HITL)全部从协议帧直构,工厂替你做好。这是 Tier 1(只接 send);"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"8"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 要 `niceeval view` 的调用瀑布图时升 Tier 2(../../tier2/ai-sdk-v7/):同一个文件加一行"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"9"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// settleMs、config 加一行 telemetry,evals/experiments 原样复用。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"10"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { uiMessageStreamAgent } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval/adapter\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"11"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"12"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"const"}</span><span className="gdt0">{" "}</span><span className="gdt1">{"BASE_URL"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" process.env."}</span><span className="gdt1">{"AI_SDK_V7_URL"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"??"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"http://127.0.0.1:34001\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"13"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"14"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"uiMessageStreamAgent"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"15"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" name: "}</span><span className="gdt2">{"\"ai-sdk-v7\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"16"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" url: "}</span><span className="gdt2">{"`${"}</span><span className="gdt1">{"BASE_URL"}</span><span className="gdt2">{"}/api/chat`"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"17"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt6">{"// 应用的 /api/chat 支持请求级选模型(GET /api/models 可查),ctx.model 直接透传,"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"18"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt6">{"// compare-models 的多模型对比不用动服务。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"19"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt5">{"body"}</span><span className="gdt0">{": ("}</span><span className="gdt7">{"ctx"}</span><span className="gdt0">{") "}</span><span className="gdt4">{"=>"}</span><span className="gdt0">{" ({ model: ctx.model }),"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"20"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
79
|
-
</div>
|
|
80
|
-
</div>
|
|
81
|
-
|
|
82
|
-
<div className="gd-file">
|
|
83
|
-
<div className="gd-head"><span className="gd-name">{"evals/basic-qa.eval.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+19"}</span></span></div>
|
|
84
|
-
<div className="gd-body">
|
|
85
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { defineEval } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 这条 eval 验证 agent 能正常问答且不瞎调工具。断言依据全部来自 UI Message Stream 协议帧"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// (uiMessageStreamAgent 直构);协议帧里没有 usage,所以这里不做用量断言(OTel span 只进瀑布图)。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"defineEval"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" description: "}</span><span className="gdt2">{"\"测试 agent 能正常问答且不瞎调工具\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"8"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"async"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"test"}</span><span className="gdt0">{"("}</span><span className="gdt7">{"t"}</span><span className="gdt0">{") {"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"9"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"const"}</span><span className="gdt0">{" "}</span><span className="gdt1">{"turn"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"send"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"用一句话介绍一下你自己,这轮不用查天气也不用算数。\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"10"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" turn."}</span><span className="gdt5">{"expectOk"}</span><span className="gdt0">{"();"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"11"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"12"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"group"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"正常收发、没有多余工具调用\""}</span><span className="gdt0">{", () "}</span><span className="gdt4">{"=>"}</span><span className="gdt0">{" {"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"13"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"succeeded"}</span><span className="gdt0">{"();"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"14"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"usedNoTools"}</span><span className="gdt0">{"();"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"15"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" });"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"16"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"17"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t.judge.autoevals."}</span><span className="gdt5">{"closedQA"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"助手是否用一两句话正常介绍了自己,而不是报错或答非所问?\""}</span><span className="gdt0">{")."}</span><span className="gdt5">{"gate"}</span><span className="gdt0">{"("}</span><span className="gdt1">{"0.6"}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"18"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" },"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"19"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
86
|
-
</div>
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
<div className="gd-file">
|
|
90
|
-
<div className="gd-head"><span className="gd-name">{"evals/hitl-approve.eval.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+24"}</span></span></div>
|
|
91
|
-
<div className="gd-body">
|
|
92
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { defineEval } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { equals } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval/expect\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// calculate 工具声明了 needsApproval:true(AI SDK 自己的 tool loop 停轮机制)。这条验证批准"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 分支:approve 之后工具正常执行,calledTool 的 status 是 \"completed\"。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"//"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 提示词不提\"审批\"——不同模型看到提示词里的\"审批\"字样,有的会倾向于用文字反问用户"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"8"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// \"可以吗\"而不是真的发起工具调用(在 pi-sdk / claude-sdk / langgraph 的接入里都复现过);"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"9"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 审批门是 SDK 自动挂的,跟用户怎么问无关。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"10"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"defineEval"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"11"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" description: "}</span><span className="gdt2">{"\"HITL:calculate 经批准后正常执行\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"12"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"13"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"async"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"test"}</span><span className="gdt0">{"("}</span><span className="gdt7">{"t"}</span><span className="gdt0">{") {"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"14"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"const"}</span><span className="gdt0">{" "}</span><span className="gdt1">{"draft"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"send"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"用计算器算一下 (23+19)*3 等于多少\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"15"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"check"}</span><span className="gdt0">{"(draft.status, "}</span><span className="gdt5">{"equals"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"waiting\""}</span><span className="gdt0">{"));"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"16"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"17"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"requireInputRequest"}</span><span className="gdt0">{"({ action: "}</span><span className="gdt2">{"\"calculate\""}</span><span className="gdt0">{" });"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"18"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"19"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"const"}</span><span className="gdt0">{" "}</span><span className="gdt1">{"approved"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"respond"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"approve\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"20"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" approved."}</span><span className="gdt5">{"succeeded"}</span><span className="gdt0">{"();"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"21"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"calledTool"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"calculate\""}</span><span className="gdt0">{", { status: "}</span><span className="gdt2">{"\"completed\""}</span><span className="gdt0">{" });"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"22"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"messageIncludes"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"/"}</span><span className="gdt8">{"126"}</span><span className="gdt2">{"/"}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"23"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" },"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"24"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
93
|
-
</div>
|
|
94
|
-
</div>
|
|
95
|
-
|
|
96
|
-
<div className="gd-file">
|
|
97
|
-
<div className="gd-head"><span className="gd-name">{"evals/hitl-deny.eval.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+23"}</span></span></div>
|
|
98
|
-
<div className="gd-body">
|
|
99
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { defineEval } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { equals } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval/expect\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// deny 分支:人否决和工具故障是两回事——calledTool 的 status 应该是 \"rejected\","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// noFailedActions() 依然通过。有的模型被拒绝一次后会不死心、原样再试一次同一个工具调用"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// (在 claude-sdk / langgraph 的接入里都复现过),不是 adapter 的映射 bug,是模型行为。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// deny 到它放弃为止,给个上限避免死循环。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"8"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"defineEval"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"9"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" description: "}</span><span className="gdt2">{"\"HITL:calculate 被拒绝后标记 rejected 而不是 failed\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"10"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"11"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"async"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"test"}</span><span className="gdt0">{"("}</span><span className="gdt7">{"t"}</span><span className="gdt0">{") {"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"12"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"send"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"用计算器算一下 (23+19)*3 等于多少\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"13"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"requireInputRequest"}</span><span className="gdt0">{"({ action: "}</span><span className="gdt2">{"\"calculate\""}</span><span className="gdt0">{" });"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"14"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"15"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"let"}</span><span className="gdt0">{" denied "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"respond"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"deny\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"16"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"for"}</span><span className="gdt0">{" ("}</span><span className="gdt4">{"let"}</span><span className="gdt0">{" attempt "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" "}</span><span className="gdt1">{"0"}</span><span className="gdt0">{"; attempt "}</span><span className="gdt4">{"<"}</span><span className="gdt0">{" "}</span><span className="gdt1">{"3"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"&&"}</span><span className="gdt0">{" denied.status "}</span><span className="gdt4">{"==="}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"waiting\""}</span><span className="gdt0">{"; attempt"}</span><span className="gdt4">{"++"}</span><span className="gdt0">{") {"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"17"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" denied "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"respond"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"deny\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"18"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" }"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"19"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"check"}</span><span className="gdt0">{"(denied.status, "}</span><span className="gdt5">{"equals"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"completed\""}</span><span className="gdt0">{"));"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"20"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"calledTool"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"calculate\""}</span><span className="gdt0">{", { status: "}</span><span className="gdt2">{"\"rejected\""}</span><span className="gdt0">{" });"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"21"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"noFailedActions"}</span><span className="gdt0">{"();"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"22"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" },"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"23"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
100
|
-
</div>
|
|
101
|
-
</div>
|
|
102
|
-
|
|
103
|
-
<div className="gd-file">
|
|
104
|
-
<div className="gd-head"><span className="gd-name">{"evals/session-isolation.eval.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+20"}</span></span></div>
|
|
105
|
-
<div className="gd-body">
|
|
106
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { defineEval } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { includes, excludes } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval/expect\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 这条 eval 专门验证跨轮记忆的两半承诺:同一 session 里第二轮记得住第一轮说的名字"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// (客户端重放完整历史续接成功——这个应用服务端零状态,续接完全靠 adapter 按 sessionId 存取"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 完整 UIMessage[] 并原样重发);t.newSession() 造出的新 session 不共享历史。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"defineEval"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"8"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" description: "}</span><span className="gdt2">{"\"测试跨轮记忆与 newSession() 隔离\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"9"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"10"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"async"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"test"}</span><span className="gdt0">{"("}</span><span className="gdt7">{"t"}</span><span className="gdt0">{") {"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"11"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"send"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"我叫小明,帮我记住这个名字。\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"12"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"const"}</span><span className="gdt0">{" "}</span><span className="gdt1">{"recall"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"send"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"我刚才说我叫什么名字?\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"13"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" recall."}</span><span className="gdt5">{"messageIncludes"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"小明\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"14"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"check"}</span><span className="gdt0">{"(t.reply, "}</span><span className="gdt5">{"includes"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"小明\""}</span><span className="gdt0">{"));"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"15"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"16"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"const"}</span><span className="gdt0">{" "}</span><span className="gdt1">{"fresh"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"newSession"}</span><span className="gdt0">{"();"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"17"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" fresh."}</span><span className="gdt5">{"send"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"我叫什么名字?\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"18"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"check"}</span><span className="gdt0">{"(fresh.reply, "}</span><span className="gdt5">{"excludes"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"小明\""}</span><span className="gdt0">{"));"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"19"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" },"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"20"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
107
|
-
</div>
|
|
108
|
-
</div>
|
|
109
|
-
|
|
110
|
-
<div className="gd-file">
|
|
111
|
-
<div className="gd-head"><span className="gd-name">{"evals/weather-tool.eval.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+21"}</span></span></div>
|
|
112
|
-
<div className="gd-body">
|
|
113
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { defineEval } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 这条 eval 验证 agent 遇到实时天气问题时会调 get_weather,而不是直接编一个答案。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 工具断言完全来自 UI Message Stream 协议帧直构(uiMessageStreamAgent 内置),adapter 没有为它写一行帧映射。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"defineEval"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" description: "}</span><span className="gdt2">{"\"测试 agent 在天气问题中正确调用 get_weather 并基于结果作答\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"8"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"async"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"test"}</span><span className="gdt0">{"("}</span><span className="gdt7">{"t"}</span><span className="gdt0">{") {"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"9"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"const"}</span><span className="gdt0">{" "}</span><span className="gdt1">{"turn"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"="}</span><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"send"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"北京今天天气怎么样?\""}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"10"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" turn."}</span><span className="gdt5">{"expectOk"}</span><span className="gdt0">{"();"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"11"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"12"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" "}</span><span className="gdt4">{"await"}</span><span className="gdt0">{" t."}</span><span className="gdt5">{"group"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"调用 get_weather 且城市正确\""}</span><span className="gdt0">{", () "}</span><span className="gdt4">{"=>"}</span><span className="gdt0">{" {"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"13"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"calledTool"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"get_weather\""}</span><span className="gdt0">{", { input: { city: "}</span><span className="gdt2">{"\"北京\""}</span><span className="gdt0">{" } });"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"14"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t."}</span><span className="gdt5">{"messageIncludes"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"/"}</span><span className="gdt8">{"°C"}</span><span className="gdt4">{"|"}</span><span className="gdt8">{"气温"}</span><span className="gdt4">{"|"}</span><span className="gdt8">{"天气"}</span><span className="gdt4">{"|"}</span><span className="gdt8">{"晴"}</span><span className="gdt4">{"|"}</span><span className="gdt8">{"多云"}</span><span className="gdt4">{"|"}</span><span className="gdt8">{"雨"}</span><span className="gdt4">{"|"}</span><span className="gdt8">{"阴"}</span><span className="gdt2">{"/"}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"15"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" });"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"16"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"17"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" t.judge.autoevals"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"18"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" ."}</span><span className="gdt5">{"closedQA"}</span><span className="gdt0">{"("}</span><span className="gdt2">{"\"助手是否给出了具体的天气数据(温度或天气状况),而不是拒绝回答或含糊其辞?\""}</span><span className="gdt0">{")"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"19"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" ."}</span><span className="gdt5">{"atLeast"}</span><span className="gdt0">{"("}</span><span className="gdt1">{"0.7"}</span><span className="gdt0">{");"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"20"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" },"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"21"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
114
|
-
</div>
|
|
115
|
-
</div>
|
|
116
|
-
|
|
117
|
-
<div className="gd-file">
|
|
118
|
-
<div className="gd-head"><span className="gd-name">{"experiments/assistant.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+9"}</span></span></div>
|
|
119
|
-
<div className="gd-body">
|
|
120
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { defineExperiment } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" agent "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"../agents/ai-sdk-v7.ts\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 单配置基线:不比较模型,用请求体不传 model 时应用自己的默认值。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"defineExperiment"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" description: "}</span><span className="gdt2">{"\"ai-sdk-v7:真实 AI SDK v7 后端(默认模型)\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" agent,"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"8"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" runs: "}</span><span className="gdt1">{"1"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"9"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
121
|
-
</div>
|
|
122
|
-
</div>
|
|
123
|
-
|
|
124
|
-
<div className="gd-file">
|
|
125
|
-
<div className="gd-head"><span className="gd-name">{"experiments/compare-models/deepseek-v4-flash.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+13"}</span></span></div>
|
|
126
|
-
<div className="gd-body">
|
|
127
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { defineExperiment } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" agent "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"../../agents/ai-sdk-v7.ts\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// compare-models 组的一格:deepseek-v4-flash。一文件一配置(单 model),model 经 ctx.model"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// 走请求体传给应用,同一个 server 实例服务所有 model,不用重启进程。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"defineExperiment"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" description: "}</span><span className="gdt2">{"\"deepseek-v4-flash: 对比模型\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"8"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" agent,"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"9"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" model: "}</span><span className="gdt2">{"\"deepseek-v4-flash\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"10"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" runs: "}</span><span className="gdt1">{"2"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"11"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" earlyExit: "}</span><span className="gdt1">{"true"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"12"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" budget: "}</span><span className="gdt1">{"2"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"13"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
128
|
-
</div>
|
|
129
|
-
</div>
|
|
130
|
-
|
|
131
|
-
<div className="gd-file">
|
|
132
|
-
<div className="gd-head"><span className="gd-name">{"experiments/compare-models/deepseek-v4-pro.ts"}</span><span className="gd-stats"><span className="gd-plus">{"+12"}</span></span></div>
|
|
133
|
-
<div className="gd-body">
|
|
134
|
-
<table className="gd-table"><tbody><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"1"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" { defineExperiment } "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"niceeval\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"2"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"import"}</span><span className="gdt0">{" agent "}</span><span className="gdt4">{"from"}</span><span className="gdt0">{" "}</span><span className="gdt2">{"\"../../agents/ai-sdk-v7.ts\""}</span><span className="gdt0">{";"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"3"}</td><td className="gd-sign">{"+"}</td><td className="gd-code">{" "}</td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"4"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt6">{"// compare-models 组的一格:deepseek-v4-pro。与 deepseek-v4-flash.ts 钉住一切、只差 model。"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"5"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt4">{"export"}</span><span className="gdt0">{" "}</span><span className="gdt4">{"default"}</span><span className="gdt0">{" "}</span><span className="gdt5">{"defineExperiment"}</span><span className="gdt0">{"({"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"6"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" description: "}</span><span className="gdt2">{"\"deepseek-v4-pro: 对比模型\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"7"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" agent,"}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"8"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" model: "}</span><span className="gdt2">{"\"deepseek-v4-pro\""}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"9"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" runs: "}</span><span className="gdt1">{"2"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"10"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" earlyExit: "}</span><span className="gdt1">{"true"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"11"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{" budget: "}</span><span className="gdt1">{"2"}</span><span className="gdt0">{","}</span></td></tr><tr className="gd-add"><td className="gd-ln"></td><td className="gd-ln">{"12"}</td><td className="gd-sign">{"+"}</td><td className="gd-code"><span className="gdt0">{"});"}</span></td></tr></tbody></table>
|
|
135
|
-
</div>
|
|
136
|
-
</div>
|