Fin-EvalOps-v2 / README.md
appQQQ's picture
sync from GitHub bb1f476: fix(testsets): preserve `tags` field across all import paths
9d4f904 verified
|
Raw
History Blame Contribute Delete
4.21 kB
metadata
title: Fin-EvalOps
emoji: 📊
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7860
pinned: false
license: mit
short_description: 13 类金融 Agent 评测 Skill × 多模型 Judge × Web 评测平台

Fin-EvalOps

金融 Agent 评测运维平台 · 13 类自研评测 Skill × 65 真实金融问句样本 × 多模型 LLM Judge

针对金融 Agent 输出做自动化评测:输入金融问句,Agent 自动路由到对应的 10+ 类自研评测 Skill 之一,按"5 步评测协议 + 六档分量表 + 封顶规则 + 根因归因"产出结构化结果,Web 端可视化展示分数趋势、雷达图、根因时间线,并支持 Data Agent 对话式分析。

🟢 在线访问

URL 状态
Backend https://<your-space>.hf.space (Docker SDK) 主部署 · HF Space
Frontend https://shuaiwang888.github.io/Fin-EvalOps/ GitHub Pages
Repo https://github.com/shuaiwang888/Fin-EvalOps

后端部署在 Hugging Face Spaces (Docker SDK),详见 DEPLOY_HF.md

仓库分区

Fin-EvalOps/
├── skills/                # 三类评测协议(read-only)
│   ├── 自研评测Skill/     #   13 个自研评测协议(P0 已接入)
│   ├── 竞品对比Skill/     #   14 个竞品对比协议(P2 接入)
│   └── 端到端Skill/       #   14 个端到端协议(P2 接入)
├── 数据测试集/             # 13 分类 × 一类一文件(共 3627 条真实金融问句)
│   └── 自研评测测试集/      #   顶层 JSON 数组, 每项 = 1 个测试样本
├── fetch_eval_record.py  # 从问财 EvalOps 后端拉取评测明细(后端 import 复用)
├── backend/              # FastAPI + SQLAlchemy + SQLite
│   └── app/persistence.py  # HF Datasets 持久化层(新增)
├── frontend/             # Vite + React + TS + AntD + ECharts
├── Dockerfile            # HF Space 构建(新增)
├── DEPLOY_HF.md          # HF Space 部署指南(新增)

数据持久化方案(★ 新)

容器磁盘是临时的(Space 重启 / sleep-wake / 重新部署都会清空)。本项目用 Hugging Face Datasets 当持久层:

  • 存储位置:<HF_NAMESPACE>/<HF_DATASET_REPO> 仓库的 fin_evalops.db 文件
  • 拉取:每次 lifespan 启动,如果本地 DB 不存在或为空,自动从 Dataset 拉取
  • 推送触发点:
    • 每次 evaluate_batch 结束(自然业务单位)
    • 后台线程(默认 5 分钟,HF_PUSH_INTERVAL 可调)
    • 应用关闭(SIGTERM 时 tini 转发信号触发 lifespan 退出)
  • 快照方式:SQLite 在线 backup API(Connection.backup()),保证一致性
  • 禁用方式:不设置 HF_TOKENHF_NAMESPACE 即关闭全部持久化(纯本地模式)

详细 API 与运维命令见 DEPLOY_HF.md

本地启动

Backend (Python 3.11+)

cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env       # 填入 LLM API key(本地开发)
# 可选:填 HF_TOKEN / HF_NAMESPACE 启用 Datasets 持久化
uvicorn app.main:app --reload --port 8000

打开 http://localhost:8000/docs 查看 OpenAPI。

Frontend (Node 20+)

cd frontend
npm install
cp .env.example .env       # VITE_API_BASE=http://localhost:8000
npm run dev

打开 http://localhost:5173

部署

平台 入口
Backend Hugging Face Space (Docker SDK) DEPLOY_HF.md
Frontend GitHub Pages: https://shuaiwang888.github.io/Fin-EvalOps/ .github/workflows/deploy.yml

敏感信息约束(强制)

  • LLM API key 仅存放在 HF Space Secrets 中,前端代码与 GitHub Pages 仓库绝不包含任何 key
  • 问财 EvalOps 内网地址 IWENCAI_BASE_URL 仅后端可见,前端只暴露受控的 /api/testsets/import-from-iwencai
  • 部署前自检:grep -rE '117\.50\.195\.94|sk-[a-zA-Z0-9]{20,}' frontend/dist/ 必须为空

文档