sam0690/evalgate

GitHub: sam0690/evalgate

面向 LLM 应用的 CI 门禁工具,通过 golden-set 回归、成本/延迟漂移检测和 prompt 注入检查在构建阶段拦截质量与安全问题。

Stars: 0 | Forks: 0

# Evalgate [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/sam0690/evalgate/actions/workflows/ci.yml) 面向基于 LLM 应用的 CI 门禁。每次代码变更时,会对您的 pipeline 执行回归测试、成本/延迟漂移以及 prompt 注入检查,并在超出阈值时 以非零状态退出 —— 就像 pytest 一样,但专为 LLM 系统特有的 故障模式而生。 ## 问题所在 团队经常修改 prompt、更换模型并修改检索逻辑,却 没有系统性的信号来判断情况是变好还是变坏: - **隐性回归** —— 调整 prompt 修复了一个案例,却破坏了另外三个。 - **成本/延迟蔓延** —— 一次改动悄悄地使 token 使用量翻倍;没人追踪它。 - **安全漂移** —— 系统提示词的编辑削弱了越狱抵抗力,且未经验证。 - **人工肉眼检查** —— “在 playground 里看起来没问题”是行业默认做法。 ## 三大支柱 | 支柱 | 解决的问题 | 状态 | |---|---|---| | Golden-set 回归 | 已知的良好案例得分是否仍然高于阈值? | ✅ 阶段 1(精确匹配/正则匹配/语义匹配)+ judge(阶段 2) | | 成本与延迟漂移 | 与滚动基准线相比,此更改是否改变了 p95 延迟或成本? | ✅ 阶段 3(`evalgate report`,DRIFT 标志) | | 注入鲁棒性 | 固定的对抗性测试集是否仍会被拒绝? | ✅ 阶段 4(`suites.injection`,相同的 gate) | 还有最棘手的部分:**根据手工标注的 ground truth 进行校准的 LLM-as-judge 评分**, 并附带置信区间报告 —— 而非凭感觉的评分器。 (✅ 阶段 2:使用多数投票的 `method: judge` + 带有 Wilson 置信区间的 `evalgate calibrate`。请参阅 [评分标准](docs/rubric.md) 和 [阶段 2 说明](docs/phase-2.md)。) ## 快速开始 ``` pip install -e . # or .[semantic] for embedding-based scoring python examples/toy_target.py & # demo target app evalgate run --config examples/evalgate.yaml ``` Evalgate 将您的应用视为通过 HTTP 通信的黑盒:`POST {"input": ...}` → `{"output": ...}`。适用于任何语言、任何技术栈。 ## 文档 - [概念词汇表](docs/CONCEPTS.md) —— 用平实的语言解释每个术语 - [阶段 1 说明](docs/phase-1.md) —— golden-set 运行器 - [阶段 2 说明](docs/phase-2.md) —— LLM-as-judge + 校准 - [阶段 3 说明](docs/phase-3.md) —— 成本/延迟漂移 - [阶段 4 说明](docs/phase-4.md) —— 注入鲁棒性
标签:AI工程, DLL 劫持, Python, 反取证, 大语言模型, 安全评估, 文档结构分析, 无后门, 逆向工具