跳转至

评测架构蓝图 v1

本文档定义 AI Agent 平台评测体系的长期架构,目标是同时解决两个核心问题:

  • 看不见过程:无法系统追踪 RAG 抓取内容、重排序结果、最终上下文与生成行为。
  • 无法比较效果:缺少统一基准,无法在相同数据集上比较不同 Agent 或不同版本。

本文档聚焦统一评测底座设计,支持对话型 Agent 与非对话型 Agent。首期优先覆盖知识问答与 OCR 提取任务。

1. 代码资产盘点

1.1 入口与运行

  • 主入口:main.py
  • AI 服务入口:ai_service/main.py
  • API 启动入口:ai_service/api/entrypoint.py
  • 文档构建入口:mkdocs.yml

1.2 核心逻辑

  • 编排图:ai_service/orchestrator/graph.py
  • 编排状态:ai_service/orchestrator/state.py
  • RAG 检索:ai_service/services/rag_retrieval.py
  • 重排序:ai_service/services/rerank.py

1.3 数据层

  • 存储模型:ai_service/storage/models.py
  • 数据迁移:ai_service/migrations/versions/
  • 向量检索:ai_service/storage/qdrant_client.py

1.4 配置与环境

  • 依赖声明:pyproject.toml
  • 运行配置:config.toml.env.example
  • 工程命令:justfile

2. 架构目标

2.1 业务目标

  1. 统一记录 Agent 执行轨迹,完整还原每次任务过程。
  2. 统一离线评测基准,在同一数据集上对比 Agent 效果。
  3. 统一线上质量观察,支持持续优化与回归预警。

2.2 设计原则

  • Agent 解耦:评测不依赖具体 Agent 实现。
  • 任务解耦:评测指标按任务类型插件化扩展。
  • 数据解耦:评测运行与业务数据写入分离。
  • 线上离线闭环:离线做对比,线上做监控,统一指标口径。

3. 总体架构

flowchart LR
    A[Agent Runtime LangGraph] --> B[Trace Collector]
    A --> C[Artifact Collector]
    D[Dataset Manager] --> E[Evaluation Runner]
    B --> E
    C --> E
    E --> F[Evaluator Plugins]
    F --> G[Metrics Store]
    G --> H[Report Service]
    H --> I[Leaderboard Dashboard]

3.1 核心组件

  • Trace Collector:采集节点级过程事件与耗时成本信息。
  • Artifact Collector:采集检索候选、重排列表、最终上下文、模型输出。
  • Dataset Manager:维护 Bronze Silver Gold 分层数据集。
  • Evaluation Runner:按数据集批量执行多个 Agent 版本。
  • Evaluator Plugins:任务类型与环节指标插件。
  • Report Service:输出可读报告与对比榜单。

4. 统一数据模型

4.1 标准对象

  • TaskDefinition:任务定义与成功规则。
  • DatasetItem:单条评测样本,包含输入、期望输出与标注。
  • AgentSpec:Agent 标识、版本、参数、能力描述。
  • EvaluationRun:一次批量评测运行。
  • StepTrace:一次运行中的步骤轨迹。
  • Artifact:步骤产物,如候选文档与中间结果。
  • MetricRecord:指标结果,支持 run 级和 item 级。

4.2 最小字段建议

对象 关键字段 说明
TaskDefinition task_type, success_policy, weights 支持任务差异化成功定义
DatasetItem item_id, input_payload, expected_output, gold_evidence 支持 QA 与 OCR 统一
AgentSpec agent_name, agent_version, runtime_kind, config_hash 支持横向对比与回溯
EvaluationRun run_id, dataset_version, triggered_by, started_at 支持可复现
StepTrace step_name, step_type, latency_ms, status, error_code 支持过程诊断
Artifact artifact_type, content_uri, digest, metadata 支持过程可视化
MetricRecord metric_name, metric_value, level, aggregation 支持多维聚合

5. Trace Schema v1

5.1 Run 级字段

  • run_id
  • trace_id
  • task_type
  • agent_name
  • agent_version
  • dataset_name
  • dataset_version
  • request_time
  • total_latency_ms
  • total_token_input
  • total_token_output
  • total_cost_usd

5.2 Step 级字段

  • step_id
  • parent_step_id
  • step_name
  • step_type
  • input_summary
  • output_summary
  • status
  • latency_ms
  • token_input
  • token_output
  • model_name
  • tool_name
  • error_type
  • error_message

5.3 关键步骤类型

  • retrieval_query
  • retrieval_candidate
  • rerank_input
  • rerank_output
  • prompt_assembly
  • llm_generation
  • tool_call
  • tool_result
  • postprocess

6. RAG 评测体系

6.1 检索层

  • 指标:Recall@KPrecision@KMRRNDCG
  • 过程产物:原始召回候选列表与分数。

6.2 重排层

  • 指标:重排前后 NDCG 提升、TopK 命中变化、候选位次变化。
  • 过程产物:重排输入与重排输出全量保留。

6.3 生成层

  • 指标:答案正确性、忠实性、证据一致性、幻觉率。
  • 过程产物:最终上下文快照、最终回答、引用证据映射。

6.4 当前代码基线说明

  • 检索已具备:ai_service/services/rag_retrieval.py
  • 重排已具备接口:ai_service/services/rerank.py
  • 当前重排实现以确定性排序兜底,需在评测中与后续真实重排能力对比验证。

7. Agent 横向评测体系

7.1 通用指标

  • 任务成功率
  • 平均时延与 P95
  • 单请求成本
  • 工具调用成功率
  • 错误率与错误类型分布
  • 重试率

7.2 任务专项指标

  • 知识问答:答案质量、证据覆盖、引用一致性。
  • OCR 提取:字段级 F1、字段级 EM、编辑距离、漏提率、误提率。

7.3 排行与对比

  • 同数据集同任务类型跨 Agent 对比。
  • 同 Agent 跨版本回归对比。
  • 同 Agent 不同配置对比。

8. 数据集建设策略

8.1 分层策略

  • Bronze:自动构造样本,用于快速扩量。
  • Silver:人工抽检样本,用于稳定迭代。
  • Gold:严格标注样本,用于发布门禁。

8.2 首批建议规模

  • QA Gold:200 条
  • OCR Gold:100 条
  • 每周新增 Silver:50 条

8.3 样本字段建议

字段 说明
item_id 样本唯一标识
task_type qa 或 ocr
input_payload 原始输入,如问题文本或图像路径
expected_output 期望结果
gold_evidence QA 证据段或 OCR 标准字段
metadata 业务域、难度、来源等

9. 离线与线上闭环

flowchart TB
    A[Dataset Gold] --> B[Offline Evaluation]
    B --> C[Agent Leaderboard]
    C --> D[Release Gate]
    E[Online Traffic Sample] --> F[Online Evaluation]
    F --> G[Quality Monitor]
    G --> H[Issue Queue]
    H --> A
  • 离线评测:用于版本对比与发版门禁。
  • 线上评测:用于真实流量质量监控与异常告警。
  • 统一口径:线上离线共用同一指标定义与聚合逻辑。

10. LangGraph 接入方案

10.1 接入位置

  • Run 开始:进入 ChameleonOrchestrator 执行前创建 run_id
  • Node 执行前后:记录 StepTraceArtifact
  • 结束时:汇总 run 级指标并写入评测存储。

10.2 接口建议

class TraceCollector:
    def start_run(self, run_context: dict) -> str: ...
    def start_step(self, run_id: str, step_context: dict) -> str: ...
    def end_step(self, run_id: str, step_id: str, step_result: dict) -> None: ...
    def emit_artifact(self, run_id: str, artifact_payload: dict) -> None: ...
    def end_run(self, run_id: str, run_result: dict) -> None: ...

11. 模块落地建议

建议新增目录:

ai_service/eval/
├── adapters/
├── collectors/
├── datasets/
├── evaluators/
│   ├── rag/
│   ├── qa/
│   └── ocr/
├── runner/
├── reports/
└── schemas/

12. 实施路线图

12.1 Day 1 可交付

  1. 评测架构蓝图文档与字段规范。
  2. Trace Schema v1Dataset Schema v1
  3. MVP backlog 与优先级标注。

12.2 四周落地节奏

  • 第 1 周:LangGraph 全链路打点,完成 Run 与 Step 基础落库。
  • 第 2 周:RAG 评测插件,落地检索与重排评测。
  • 第 3 周:QA 与 OCR 任务评测插件,支持多 Agent 横向对比。
  • 第 4 周:线上抽样评测与回归门禁,输出周报与告警机制。

13. 验收标准

13.1 可观测性

  • 任意一次请求可回放完整 RAG 过程。
  • 可查询召回候选、重排结果、最终上下文。

13.2 可比较性

  • 可在同一数据集上生成多 Agent 排行榜。
  • 可追踪同 Agent 不同版本性能变化。

13.3 可扩展性

  • 新增任务类型仅需新增 TaskDefinition 与对应 Evaluator
  • 不修改核心 Runner 即可挂载新 Agent。

14. 风险与缓解

风险 影响 缓解策略
标注成本高 Gold 集增长慢 Bronze Silver Gold 分层推进
评测口径漂移 横向对比失真 指标定义集中管理与版本化
线上数据噪声 监控误报 采样策略与阈值分层
轨迹数据膨胀 存储与查询压力 分级留存与摘要归档

15. 下一步建议

  1. 优先实现 TraceCollectorEvaluationRunner 骨架。
  2. 优先构建 QA 与 OCR 的 Gold 数据样本导入流程。
  3. 以离线评测先打通可比较能力,再补齐线上抽样评测闭环。