Evidently:用一套 Python 库跑通 ML/LLM 的评估、测试与监控
【免费下载链接】evidentlyEvidently is an open-source ML and LLM observability framework. Evaluate, test, and monitor any AI-powered system or data pipeline. From tabular data to Gen AI. 100+ metrics.项目地址: https://gitcode.com/GitHub_Trending/ev/evidently
Evidently 是一个开源的 Python 框架,定位是 ML 与 LLM 系统的可观测性:它内置 100 多个指标,帮算法工程师和数据分析师在实验和线上环境做模型评估、回归测试与持续监控。
🎯 三个典型用法
一次性评估:先看看数据或模型出了什么问题。适合发布前的数据体检。官方 README 里的例子用鸢尾花数据集做数据漂移检查:前 60 行当"当前数据",后面当"参考数据",跑完导出一份 HTML 报告:
report = Report([DataDriftPreset(method="psi")]) my_eval = report.run(iris_frame.iloc[:60], iris_frame.iloc[60:]) my_eval.save_html("file.html")结果也可以取 JSON 或 dict,方便塞进你自己的流程。
回归测试:把评估变成"通过/失败"。任意 Report 加上传输gt(大于)、lt(小于)等判断条件,就变成一个 Test Suite,适合放进 CI/CD 或数据校验环节;测试阈值还能从一个参考数据集自动生成,不用手填。
持续监控:指标随时间变化要看趋势。一条命令拉起本地监控面板:
evidently ui --demo-projects all然后访问 localhost:8000 即可看到演示项目。如果团队已有 Grafana,仓库里examples/grafana/下有完整示例,用 docker-compose 起 PostgreSQL + Grafana,脚本每 10 秒算一批指标写库。
⚡ 三步跑通:安装到出报告
要求 Python 3.10 及以上(见 pyproject.toml 中requires-python),安装:
pip install evidentlyLLM 相关能力(语义相似度、LLM 裁判等)依赖较重,按需单独装:
pip install evidently[llm]最小 LLM 评估示例(摘自 README,数据换成自己的问答对即可):
from evidently import Report, Dataset, DataDefinition from evidently.descriptors import TextLength from evidently.presets import TextEvals ds = Dataset.from_pandas(df, data_definition=DataDefinition(), descriptors=[TextLength("answer", alias="Length")]) Report([TextEvals()]).run(ds)其中 descriptors 是"逐行打分器"(长度、情感、是否含某词等),定义在 src/evidently/descriptors/。
📋 关键规格:开始之前该知道什么
| 项目 | 取值 | 对使用者意味着什么 |
|---|---|---|
| 许可 | Apache 2.0 | 可商用、可集成进公司项目 |
| Python | >=3.10 | 老环境需先升级解释器 |
| 内置指标 | 100+ | 数据漂移、分类/回归性能、RAG 排序(NDCG/MAP/MRR)等开箱即用 |
| 输出格式 | HTML / JSON / dict | 报告可存档、可编程消费、可喂给 Grafana |
| 可选依赖 | [llm][spark][sql][s3]等 | 用到哪块装哪块,基础环境保持轻量 |
🛠️ 实战要点与常见坑
- 漂移评估必须给两份数据:当前数据 + 参考数据(通常是历史快照),只传一份不会报错但结果没有意义。
- descriptors 的列名要和 DataFrame 完全一致,
alias只影响显示名称,不匹配时该行评估结果为空。 - HTML 报告要在其所在目录打开,直接双击可能因路径问题加载不出图表。
- 不需要的能力别装:
[llm]会引入 transformers、sentence-transformers 等重依赖;只评估表格数据用基础包即可。 - 想拦截线上输出,可以加一层 guardrails(如毒性、敏感词检查),代码在 src/evidently/guardrails/。
- 想深入理解结构,可以从 examples/classic_ml_validation.ipynb 和 examples/llm_input_output_validation.ipynb 两个官方笔记本入手,细节以项目文档为准。
收尾
Evidently 的价值在于把"模型到底还行不行"这件事从人工抽查变成可复现的指标化流程:离线评估一条pip install就能开始,要上生产监控再参考examples/grafana/下的部署示例。下一步建议先跑通数据漂移或文本评估任一示例,再按业务补上 pass/fail 条件。
【免费下载链接】evidentlyEvidently is an open-source ML and LLM observability framework. Evaluate, test, and monitor any AI-powered system or data pipeline. From tabular data to Gen AI. 100+ metrics.项目地址: https://gitcode.com/GitHub_Trending/ev/evidently
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考