BenchLLM 项目介绍
项目概述
BenchLLM 是一个基于 Python 的开源库,专门用于简化大型语言模型(LLM)和人工智能驱动应用的测试。它通过使用 LLM 测试大量数据来验证模型、代理和链的响应准确性。BenchLLM 活跃于 V7 公司,并且已经开放源码为社区共享,采用 MIT 许可协议。
功能特色
- 测试各种提示的反馈:BenchLLM 让用户可以通过大语言模型来测试任意数量的提示,确保模型的回应符合预期。
- 持续集成:支持链(例如 Langchain)、代理(例如 AutoGPT)和 LLM 模型(例如 Llama 和 GPT-4)的持续集成。
- 提高代码可信度:消除不稳定的链,提升代码自信。
- 版本控制中的问题检测:在每个版本中检测不准确的响应和幻觉。
测试方法论
BenchLLM 使用一个独特的两步法进行机器学习模型的验证:
- 测试阶段:在此阶段,用户的代码将在不立即判断或比较的情况下对预期响应进行测试,并捕获模型生成的预测。
- 评估阶段:通过 LLM 进行预测值和预期输出的比较从而验证事实相似性,并生成包含通过/失败状态和其他指标的详细比较报告。
安装与使用
BenchLLM 可以通过 pip 安装:
pip install benchllm
用户需使用 @benchllm.test
装饰器标记需要测试的函数。然后,准备好你的测试,这些测试以 YAML/JSON 文件的形式组织。运行测试的命令为:
bench run
多种评估方法
BenchLLM 提供多种评估方法来检查预测是否符合预期值:
semantic
:使用大语言模型进行语义相似性检查。embedding
:通过嵌入向量的余弦距离进行评估。string-match
:对字符串大小写不敏感匹配。interactive
:用户在终端手动接受或拒绝测试。web
:使用 pywebio 提供简单的本地网页界面。
缓存与并行化
为加速评估过程,BenchLLM 使用缓存机制保存评估输出,可以通过不同的缓存类型(如 memory
、file
或 none
)来选择合适的缓存方式。此外,支持多工作线程以平行运行评估。
API 与高级控制
BenchLLM 提供 API,使用户不必依赖 YML/JSON 测试即可对模型进行评估。用户可以通过创建 Test 对象、使用 Tester 对象生成预测,最后使用 Evaluator 对象评估模型。
from benchllm import StringMatchEvaluator, Test, Tester
tests = [
Test(input="What's 1+1?", expected=["2", "It's 2"]),
Test(input="First rule of fight club?", expected=["Do not talk about fight club"]),
]
tester = Tester(my_test_function)
tester.add_tests(tests)
predictions = tester.run()
evaluator = StringMatchEvaluator()
evaluator.load(predictions)
results = evaluator.run()
print(results)
贡献与支持
BenchLLM 兼容 Python 3.10,并建议在此环境下开发。开发步骤包括 fork 项目,为你的更改创建新的分支,完成后提交 PR。需要支持时,可以在 GitHub 页面上开 issue。
BenchLLM 提供了一个强大的框架来简化 LLM 应用的测试流程,帮助开发者更高效地评估和改进他们的模型。