Files
life-echo/api/docs/internal-eval.md
Kevin ca8bcc8489 feat(evaluation): session catalog, user export import, and eval web UI
- Extend evaluation API: schemas, router, repo, admin and execution services
- Improve user export markdown importer; add fixtures and importer tests
- Session catalog repo/service updates; internal app wiring and docs
- Add internal-eval.sh helper; refresh app-eval-web (App, styles, Vite)
2026-04-06 13:49:28 +08:00

2.5 KiB
Raw Blame History

内部回归评测平台

与主 APIapp/main.py)隔离进程部署,避免评测候选链路透出给消费者 App。

启动

一键脚本 internal-eval.shdevelopment.sh 不是重复各启一套主站

development.sh internal-eval.sh
HTTP 主站 main:app(默认 8000 仅评测 internal_app(默认 8001
Celery 会起一个 worker 默认也会起一个 worker可与下面「瘦启动」二选一

评测分析只需要 8001 上的 internal API;若你已经在跑 development.shDB/Redis/主站/已有 Celery不必再起第二份基础设施和 worker

cd api
chmod +x internal-eval.sh
# 确保 .env.development 或 .env 里有 INTERNAL_EVAL_API_KEY
SKIP_INFRA=1 SKIP_INSTALL=1 SKIP_CELERY=1 ./internal-eval.sh   # 推荐:只多开 8001

全新机器、只跑评测栈时可直接 ./internal-eval.sh(会起 docker、uv sync、迁移、8001 + Celery默认会起 app-eval-web,并用 Vite --open 尝试打开浏览器http://127.0.0.1:5174/)。不要前端时设 START_EVAL_WEB=0;只要前端但不要弹窗时设 OPEN_EVAL_WEB=0

数据库与主服务共用;需配置环境变量后启动专用进程:

cd api
export INTERNAL_EVAL_API_KEY='your-long-random-secret'
export INTERNAL_EVAL_ENABLE_DOCS=1   # 可选,开 /docs
# GLM 评审(默认复用智谱 key也可单独配置
export EVAL_JUDGE_API_KEY='...'        # 可选,默认 ZHIPU_API_KEY
export EVAL_JUDGE_MODEL='glm-4-flash'

uv run uvicorn app.internal_main:internal_app --host 0.0.0.0 --port 8001

Celery worker 需已包含 app.tasks.evaluation_tasks(仓库 celery_app.include 已注册)。跑实验前:

uv run celery -A app.tasks.celery_app worker -l info

前端(app-eval-web

cd app-eval-web
npm install
VITE_EVAL_API_BASE=http://127.0.0.1:8001 VITE_EVAL_API_KEY=与上同 npm run dev

或使用仓库根目录 npm run eval-web(需本地已 npm installapp-eval-web)。

SSE / EventSource

浏览器 EventSource 无法带自定义 Header流式端点支持 query ?key=,与 X-Internal-Eval-Key 等效。

门禁规则v1

  • 所有 case 的合成均分:候选须 严格高于 基线。
  • is_protected=true 的 case合成份跌幅不得超过 EVAL_GATE_PROTECTED_REGRESSION_THRESHOLD(默认 2 分)。

结果写入 eval_gate_verdicts,不影响 git;后续可接 pre-commit / CI。