Skip to content

yamsfeer/model-eval

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Model Eval - AI 模型能力自动化评估框架

对 AI 模型进行 19 维度的能力评估,自动完成多轮对话测试、评分、生成对比报告与雷达图。用于对比各模型长短板,并为每个模型定制 Harness 调用策略。

快速开始

本地开发/源码运行

# 1. 安装依赖
pnpm install

# 2. 配置 API Key
# 方式 A:使用 .env 文件
cp .env.example .env
# 编辑 .env,填入你要测试的模型的 API Key

# 方式 B:使用配置文件
pnpm dev --init-config
# 编辑生成的 .model-eval.json,填入 API Key

# 3. 运行评估
pnpm dev --model glm-5

# 4. 查看结果
pnpm dev --open-chart

全局安装后使用

# 1. 全局安装
npm install -g model-eval

# 2. 生成配置文件(会自动放到 ~/.model-eval/config.json)
model-eval --init-config
# 编辑该文件,填入 API Key

# 3. 运行评估
model-eval --model glm-5

# 4. 查看雷达图
model-eval --open-chart

全局安装后,所有结果默认保存在 ~/.model-eval/results/ 目录下。

CLI 参数

model-eval [选项]
参数 说明 默认值
--model 指定模型,多个用逗号分隔 全部已配置模型
--test 指定测试维度 ID,多个用逗号分隔 全部 19 个
--category 指定测试类别 全部
--adapter 调用方式:apiclisdk api
--output 结果输出目录 开发模式 ./results,全局安装 ~/.model-eval/results
--config 指定配置文件路径 ./.model-eval.json~/.model-eval/config.json
--init-config 生成配置文件模板 -
--list-models 列出所有可用模型 -
--list-tests 列出所有评估维度 -
--open-chart 打开最新生成的雷达图 -

示例

# 测试单个模型
model-eval --model glm-5

# 对比多个模型
model-eval --model glm-5,glm-5.1,kimi-code

# 只跑上下文和执行类测试
model-eval --model glm-5 --category context,execution

# 只跑特定维度
model-eval --model glm-5 --test context-decay,hallucination

# 使用 SDK 方式调用(真实 Agent 会话,适用于 Claude 模型)
model-eval --model claude-sonnet-4-6 --adapter sdk

# 指定输出目录
model-eval --model glm-5 --output ./my-results

# 生成并编辑配置文件
model-eval --init-config

# 查看可用模型列表
model-eval --list-models

# 直接打开最新雷达图
model-eval --open-chart

配置模型

框架支持三种配置来源(优先级从高到低):

  1. --config 显式指定的 JSON 文件
  2. .model-eval.json / ~/.model-eval/config.json
  3. .env 环境变量(向后兼容)
  4. 内建默认配置(URL、模型参数等)

配置文件(推荐)

运行 model-eval --init-config 生成模板:

{
  "models": [
    {
      "id": "glm-5",
      "name": "GLM-5",
      "provider": "智谱",
      "api": {
        "apiKey": "your-api-key",
        "baseUrl": "https://open.bigmodel.cn/api/paas/v4",
        "apiModel": "glm-5"
      }
    }
  ]
}

只需配置你要测试的模型,不需要的模型可以删除或留空 apiKey

环境变量

在项目根目录创建 .env 文件:

# 智谱 GLM 系列
GLM_API_KEY=your-glm-api-key
GLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4

# 月之暗面 Kimi
KIMI_API_KEY=your-kimi-api-key
KIMI_BASE_URL=https://api.moonshot.cn/v1

# MiniMax
MINIMAX_API_KEY=your-minimax-api-key
MINIMAX_BASE_URL=https://api.minimax.chat/v1

# 裁判模型(用于设计类主观评分,可选)
JUDGE_API_KEY=your-judge-api-key
JUDGE_BASE_URL=https://api.openai.com/v1
JUDGE_MODEL=gpt-4o

新增模型

在配置文件中添加即可:

{
  "id": "my-model",
  "name": "我的模型",
  "provider": "厂商名",
  "api": {
    "apiKey": "your-key",
    "baseUrl": "https://api.example.com/v1",
    "apiModel": "model-name"
  }
}

所有模型默认走 OpenAI 兼容接口(/v1/chat/completions),只需改 baseUrl 和密钥。

调用方式

框架支持三种调用方式:

方式 说明 适用场景
--adapter api 直接调用 HTTP API 快速评估、批量测试
--adapter cli 子进程调用 CLI 工具 本地 CLI 工具测试
--adapter sdk Claude Agent SDK 真实会话 测试 Claude 模型在 Agent 环境下的表现

19 个评估维度

上下文类(Context)

# ID 维度 测什么
1 context-decay 上下文衰减 注入 6 条关键信息 → 7 轮填充任务 → 检查最终回答保留了多少
2 compression-recovery 压缩恢复力 给长上下文 → 要求总结 → 再追问细节,看信息丢失程度
3 state-awareness 状态感知 多轮对话中切换话题再回来,检查模型是否还记得之前的上下文

执行类(Execution)

# ID 维度 测什么
4 instruction-following 指令遵循 给出 8 条编码规则 × 5 个编程任务,检查输出是否遵守规则
5 self-correction 自我纠错 给含 4 个隐藏 bug 的代码,让模型修复,看能找到几个
6 strategy-adaptation 策略适应 先做 A 方案 → 要求换 B 方案 → 检查是否彻底切换而非混搭
7 completion-tendency 完成度 给复杂任务,检查输出是完整实现还是偷工减料

协作类(Collaboration)

# ID 维度 测什么
8 task-decomposition 任务分解 给大任务,检查拆分是否合理(粒度、依赖、完整性)
9 summary-transfer 摘要传递 模拟 Harness 场景:让模型总结当前状态 → 新实例接续,看信息传递质量
10 parallel-conflict 并行冲突 两个实例分别修改同一文件的不同部分,检查合并结果

质量类(Quality)

# ID 维度 测什么
11 code-quality-consistency 代码质量一致性 连续 5 个编程任务,检查代码风格、错误处理是否一致
12 hallucination 诚实度 5 个陷阱问题(不存在的 API、虚假文件路径等),看模型是否承认不知道
13 tool-efficiency 工具效率 给可简化的复杂任务,看模型是否会选择高效方案

设计类(Design)

# ID 维度 测什么
14 aesthetic 审美 给设计需求,评估配色、留白、视觉层次
15 design-consistency 设计一致性 连续 3 个相关页面设计,检查风格是否统一
16 layout-ia 布局架构 检查页面结构、信息层级是否合理
17 visual-detail 视觉细节 检查是否注意间距、对齐、阴影等细节
18 design-system 设计系统 要求输出设计规范,检查完整性和可复用性
19 design-iteration 设计迭代 给设计反馈,检查是否精准调整而非推翻重来

评分机制

每个维度评分范围 1-5 分,评分方式分两类:

自动评分(维度 1-13)

基于规则的自动化评分:

  • 关键词匹配:检查模型回答中是否包含预期的关键信息
  • 正则模式检查:验证代码输出是否符合指定规则
  • 命中率映射:将匹配比例转化为 1-5 分

裁判评分(维度 14-19)

设计类维度涉及主观判断,使用裁判模型(默认 GPT-4o)打分:

  1. 将模型的设计输出交给裁判模型
  2. 裁判根据预设评分标准(配色、留白、层次等)打 1-5 分
  3. 返回评分 + 评分理由

裁判模型配置在 .envJUDGE_* 变量中。如果未配置,设计类测试会使用规则兜底评分。

输出结果

运行完成后,默认在输出目录生成以下报告:

results/
├── raw/                              # JSON 原始数据
│   ├── eval-glm-4.7-incremental.json # 每个模型的增量结果
│   └── eval-2026-04-15-09-56.json    # 最终汇总 JSON
├── reports/                          # Markdown 报告
│   └── report-2026-04-15-09-56.md
└── charts/                           # 雷达图
    ├── radar.html                    # 最新雷达图(--open-chart 打开它)
    └── radar-2026-04-15-09-56.html   # 历史副本

所有带时间戳的文件都使用 YYYY-MM-DD-HH-mm 格式,便于识别。

JSON 报告

结构化的评分数据,包含每个模型的每个维度得分、分类平均分、总耗时。可用于程序化分析或导入其他工具。

Markdown 报告

人类可读的报告,包含:

  • 评分总览表:各模型的分类得分对比
  • 详细评分:每个维度的星级评分 + 评分依据
  • Harness 配置建议:根据模型各分类得分,给出定制化的调用策略建议

雷达图

独立的 HTML 文件,用 Canvas 绘制多模型叠加雷达图,支持:

  • 19 维度全维度对比
  • 多模型颜色区分叠加
  • 评分表格(高/中/低分用绿/黄/红标记)
  • 浏览器直接打开即可查看

项目结构

model-eval/
├── src/
│   ├── cli.ts                  # CLI 入口(bin 入口)
│   ├── adapters/               # 模型调用适配器
│   │   ├── adapter.ts          #   适配器接口定义
│   │   ├── api-adapter.ts      #   API 调用(OpenAI 兼容接口)
│   │   ├── cli-adapter.ts      #   CLI 调用(子进程方式)
│   │   └── sdk-adapter.ts      #   SDK 调用(Claude Agent SDK)
│   ├── config/
│   │   ├── models.ts           # 基础模型配置定义
│   │   ├── loader.ts           # 配置加载器(合并文件/env/默认值)
│   │   └── paths.ts            # 路径解析(区分开发/生产模式)
│   ├── dimensions/             # 19 个评估维度用例
│   │   ├── registry.ts         #   维度注册表
│   │   ├── context/            #   上下文类(01-03)
│   │   ├── execution/          #   执行类(04-07)
│   │   ├── collaboration/      #   协作类(08-10)
│   │   ├── quality/            #   质量类(11-13)
│   │   └── design/             #   设计类(14-19)
│   ├── scoring/
│   │   └── scorer.ts           # 评分引擎
│   ├── runner/
│   │   └── runner.ts           # 测试运行器(调度、进度显示、增量保存)
│   └── reporter/               # 报告生成器
│       ├── json-reporter.ts    #   JSON 原始数据
│       ├── markdown-reporter.ts#   Markdown 分析报告
│       └── radar-reporter.ts   #   HTML 雷达图
├── results/                    # 输出目录
├── package.json
└── tsconfig.json

预置模型

模型 ID 名称 厂商 适配器
glm-4.7 GLM-4.7 智谱 api
glm-5 GLM-5 智谱 api
glm-5.1 GLM-5.1 智谱 api
kimi-code Kimi Code 月之暗面 api
minimax-2.7 MiniMax 2.7 MiniMax api
claude-sonnet-4-6 Claude Sonnet 4.6 Anthropic sdk
claude-opus-4-6 Claude Opus 4.6 Anthropic sdk

注意事项

  • 每个模型跑完全部 19 个维度约需 10-20 分钟(取决于 API 响应速度)
  • 并发数默认为 1(串行调用),避免触发 API 限流
  • 上下文类测试已优化为预填充对话历史,单维度只需 1 次 API 调用
  • 测试过程中会实时打印进度,每完成一个维度都会增量保存到 JSON,防止意外中断丢失数据
  • 设计类测试(14-19)如果未配置裁判模型,会使用规则兜底评分,精度较低
  • 所有测试用例的原始响应都保存在 JSON 报告中,可回溯审计

About

AI 模型能力自动化评估框架 - 19 维度测试 + 雷达图对比

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors