eval-assist
IBM/eval-assist加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2024 年,大模型评测领域面临一个根本性矛盾:传统自动指标(BLEU、ROUGE)无法评估生成内容的语义质量,而人类评估成本高昂、速度慢、难以复现。与此同时,随着 GPT-4、Claude、Gemini 等闭源模型以及 Llama、Mistral 等开源模型的出现,AI 开发者面临一个共同难题——如何快速、公平地比较两个模型的输出质量?
EvalAssist 正是在这个背景下诞生的。它由 IBM 研究团队构建,基于 Unitxt 开源评测库,用大语言模型本身作为"裁判"来评判其他大模型的输出质量。项目核心作者为 Martín Santillán Cooper,已获得 Apache-2.0 开源许可。
LLM-as-a-Judge(LLM 充当裁判)是一种利用大语言模型评估文本生成质量的技术。与传统规则匹配不同,LLM 裁判能够理解上下文,评估生成内容的:
EvalAssist 支持两种主流评估范式:
| 评估模式 | 说明 | 适用场景 |
|---|---|---|
| 直接评估(Rubric-based) | 预设评分标准,逐项打分 | 标准化评测、比赛打分 |
| 配对评估(Pairwise) | 两个输出对比,选出更优者 | 模型对比、A/B 测试 |
EvalAssist 采用 前后端分离 架构,前端基于 Next.js(TypeScript)静态导出,后端基于 FastAPI(Python 3.10-3.12)。
| 模块 | 功能 |
|---|---|
judges/ | 预置裁判模型定义与调用逻辑 |
benchmark/ | 评测流程编排与结果持久化 |
synthetic_example_generation/ | 合成测试用例生成 |
notebook_generation/ | 自动导出 Jupyter Notebook 代码用于离线批量评测 |
extended_unitxt.py | 扩展 Unitxt 评测模板 |
用户在浏览器中直接定义评测标准(Rubric),系统实时展示 LLM 裁判的评分结果。可以反复调整标准,观察评分变化,直到满意为止。
内置多个开箱即用的裁判模型:
custom_models_example.json 配置)满意后,一键导出为标准 Jupyter Notebook,包含完整的 Unitxt 评测代码,可在大规模数据集上批量运行评测任务。
项目自带多个场景的示例测试用例,涵盖摘要生成、问答、代码生成等常见场景,用户可参考学习快速上手。
| 安装方式 | 难度 | 适用人群 |
|---|---|---|
pip install evalassist[webapp] | ★★☆ | 有 Python 基础的开发者 |
uvx eval-assist serve | ★☆☆ | 零配置快速体验 |
conda 虚拟环境 | ★★☆ | 数据科学团队 |
| Docker 多阶段构建 | ★★☆ | 部署运维场景 |
最低要求:Python 3.10 以上,4GB RAM,推荐 8GB 以上以流畅运行 Web UI。
pip install 'evalassist[webapp]'
eval-assist serve
# 访问 http://localhost:8000
后端监听 8000 端口,前端以静态文件形式由 FastAPI 服务,无需 Node.js 运行时(构建已由 Dockerfile 完成)。
LLM-as-a-Judge 存在位置偏见(Position Bias)—— 倾向于给前排输出更高分,以及长度偏见—— 倾向于给更长、更详细的回答更高分。EvalAssist 官方文档未明确说明如何缓解这些问题,这是该技术的公认局限。
使用预置裁判模型(GPT、Claude)需要提供对应 API Key,产生云服务费用。本地 Ollama 模式虽免费,但需要本地部署大模型,对硬件要求较高。
"好的回答"本身没有客观标准。EvalAssist 虽然支持自定义 Rubric,但标准的制定本身依赖人工经验,评测结果的可信度取决于标准质量,而非工具本身。
项目提供多阶段 Dockerfile,可一键构建镜像:
docker build -t eval-assist .
docker run -p 7860:7860 eval-assist
构建分为两个阶段:
NEXT_OUTPUT_MODE=export)注意:Dockerfile 中暴露端口为 7860,但 CMD 默认也是 --port 7860,对外映射建议用 -p 8000:7860 或修改 CMD 参数。
| 维度 | 评分 | 说明 |
|---|---|---|
| 代码质量 | ★★★★☆ | 完整类型标注(Pydantic v2、TypeScript),PEP8 + ESLint + pre-commit 检查 |
| 测试覆盖 | ★★★☆☆ | 有 pytest 测试套件(--cov=evalassist),覆盖率数据未公开 |
| 文档质量 | ★★★★☆ | README 完整,有独立开发指南、LOCAL_DEV_GUIDE.MD、贡献规范 |
| 安全实践 | ★★★★☆ | OpenSSF Best Practices 认证,bandit 安全扫描,secrets 基线检查 |
| 架构设计 | ★★★★☆ | 前后端分离,CLI + Web 双入口,模块化可扩展 |
EvalAssist 填补了 LLM-as-a-Judge 领域开源工具链的空白。在它之前,LLM 评测主要依赖商业 API(如 OpenAI Evals)或闭源平台(如 Scale AI Leaderboard)。EvalAssist + Unitxt 的组合让任何开发者都能在本地部署完整的 LLM 评测流水线,推动了 AI 评测民主化进程。IBM 作为企业级 AI 玩家的背书,也为项目可信度加了分。
本报告基于 GitHub 仓库代码分析生成,分析时间:2026-08-06。