AgentEvalTool/docs/data-models-v1.0.md
sinohqb a77cd83e6a v0.2.0-dev: 文件管理 + 页面布局统一 + 6 个 bug 修复
## 新增功能
- 文件管理模块:分类树 + 文件上传/下载/删除
- 文件上传支持拖拽(Dragger)+ 手动上传(customRequest 模式)

## 页面布局统一(参照评测执行页)
- 仪表盘/评测对象/评测场景/评测报告 全部改为全高 flex 布局
- 统一内联页头样式(h2 + 竖线分隔 + 描述)
- 表格撑满高度、overflow 处理
- 每页添加刷新按钮

## Bug 修复
- 分类树操作按钮 hover 不可见(CSS 规则缺失)
- 文件上传失败(multipart boundary 缺失)
- LLM API 响应 content blocks 数组格式支持(_extract_content_from_api_response)
- response_time_max_ms 被静默忽略(隐式规则传空 params)
- 空 messages 导致 IndexError 崩溃
- poll_reply 异常中止整个 run(缺 try/catch)
- engine finally 未关闭 session
- 3 个页面 UTC 时间戳解析偏差 8 小时

## 后端
- EvalEngine: poll_reply 异常保护、空 dialog 保护、session 关闭
- LLM API 响应解析支持 content-block-array 格式
- 隐式 response_time 规则正确传递 max_ms 参数

## 前端
- api.ts: 移除手动 Content-Type(让浏览器自动添加 boundary)
- Files.tsx: customRequest 替代 beforeUpload、布局优化
- index.css: 分类树 hover 规则
- Targets/Scenarios/Home/Reports: 全高布局改造
- 3 个页面时间戳改用 formatDateTime()(修复 UTC 偏差)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-16 15:25:22 +08:00

5.1 KiB
Raw Blame History

AgentEvalTool 数据模型文档

版本: v1.0
日期: 2026-07-09
状态: 已发布
作者: AgentEval Team


一、概述

本文档描述 AgentEvalTool V1 版本的核心数据模型。所有模型均使用 Pydantic/SQLModel 定义,支持数据验证和持久化。

二、核心模型

2.1 EvalTarget评测对象

评测对象代表被评估的智能体服务。

class EvalTarget:
    id: str                          # 唯一标识符UUID
    name: str                        # 对象名称
    description: str                 # 对象描述
    platform: str                    # 平台类型:"ai_digital_employee" | "ai_assistant"
    channel_type: str                # 通道类型:"tutu-api"
    channel_config: dict             # 通道配置参数
    status: str                      # 状态:"active" | "inactive" | "error"
    created_at: datetime             # 创建时间
    updated_at: datetime             # 更新时间

channel_config 字段说明tutu-api

  • base_url: API 基础地址
  • token: JWT 认证令牌
  • tenant: 租户标识
  • chat_channel_id: 聊天通道 ID
  • chat_contact_id: 聊天联系人 ID

2.2 Scenario评测场景

评测场景定义一组测试用例和评估规则。

class Scenario:
    id: str                          # 唯一标识符UUID
    name: str                        # 场景名称
    description: str                 # 场景描述
    tags: List[str]                  # 标签列表
    cases: List[Case]                # 用例列表
    created_at: datetime             # 创建时间
    updated_at: datetime             # 更新时间

2.3 Case评测用例

评测用例定义具体的测试对话和期望结果。

class Case:
    id: str                          # 用例标识符
    type: str                        # 用例类型:"single" | "multi_turn"
    messages: List[str]              # 消息列表(单轮或多轮)
    expectations: Expectation        # 期望结果
    eval_rules: List[EvalRuleConfig] # 评估规则配置

2.4 EvalRun评测执行记录

评测执行记录跟踪一次完整的评测任务。

class EvalRun:
    id: str                          # 唯一标识符UUID
    target_id: str                   # 评测对象 ID
    scenario_id: str                 # 评测场景 ID
    status: str                      # 状态:"pending" | "running" | "completed" | "failed"
    started_at: datetime             # 开始时间
    completed_at: Optional[datetime] # 完成时间
    summary: Optional[dict]          # 执行摘要

2.5 Turn对话轮次

对话轮次记录单次消息发送和回复。

class Turn:
    id: str                          # 唯一标识符UUID
    run_id: str                      # 所属执行记录 ID
    case_id: str                     # 所属用例 ID
    round_index: int                 # 轮次序号(从 1 开始)
    sent_message: dict               # 发送的消息内容
    sent_at: datetime                # 发送时间
    question_msg_id: Optional[str]   # 问题消息 ID用于配对回复
    reply: Optional[dict]            # 回复内容
    received_at: Optional[datetime]  # 接收时间
    latency_ms: Optional[int]        # 响应延迟(毫秒)

2.6 EvalResult评估结果

评估结果记录单条规则的评估结果。

class EvalResult:
    id: str                          # 唯一标识符UUID
    run_id: str                      # 所属执行记录 ID
    case_id: str                     # 所属用例 ID
    turn_id: str                     # 所属轮次 ID
    rule_type: str                   # 规则类型:"keyword_match" | "response_time" | "llm_score"
    passed: bool                     # 是否通过
    score: Optional[float]           # 得分0.0-1.0
    reason: str                      # 评估原因说明

三、数据库表结构

所有模型均持久化到 SQLite 数据库(data/agenteval.db)。

3.1 表名映射

模型 表名
EvalTarget eval_targets
Scenario scenarios
EvalRun eval_runs
Turn turns
EvalResult eval_results

3.2 关系图

EvalTarget (1) ──< (N) EvalRun
Scenario (1) ──< (N) EvalRun
EvalRun (1) ──< (N) Turn
EvalRun (1) ──< (N) EvalResult
Turn (1) ──< (N) EvalResult

四、数据持久化

  • 数据库: SQLite本地文件存储
  • ORM: SQLModel基于 Pydantic + SQLAlchemy
  • 数据目录: data/
    • agenteval.db: 主数据库
    • scenarios/: 场景 YAML 文件
    • reports/: 生成的报告文件

五、扩展性

当前数据模型设计预留了扩展点:

  1. 多通道支持: EvalTarget.channel_type 支持不同通道类型
  2. 多规则支持: EvalResult.rule_type 支持不同评估规则
  3. 多平台支持: EvalTarget.platform 支持不同平台类型
  4. 场景扩展: Scenario.cases 支持复杂的多轮对话场景