零成本本地LLM评测用 DeepEval Ollama 十分钟跑通离线回归【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval本文讲如何用 DeepEval 把本地LLM评测完全跑在自己的机器上用 Ollama 或 vLLM 推理服务充当打分模型30 内置指标直接接入回归测试做成普通 pytest 用例挂进 CI。测试数据与模型输出不出机器不产生 API 账单评测速度与成本都由你掌控。上周有个医疗支持团队问能不能让患者对话数据不出内网就完成一次 chatbot 输出的全量质检答案是可以——在 DeepEval 的评测流程里打分的模型同样可以换成你机器上的那一台。整套 DeepEval 本地部署流程核心只是把打分模型替换成本地实例其余代码不动。把打分模型搬到自己机器上的理由评测的本质是让一个模型给另一个模型的输出打分。当评委是云端 API 时每一次打分调用都会把你的测试输入、被测模型输出、参考答案一起发出去。对普通产品迭代这无所谓但医疗、金融这类场景这个数据流本身就是合规风险。成本上更直接100 条测试用例 × 3 个指标就是 300 次评委调用按 token 计费。模型每周迭代一次这笔钱就是长期固定支出。换成本地评测后账单归零你要操心的只剩电费和显存。还有个实用收益不依赖外网结果不受限流和抖动影响同一份数据集每次跑出来的分数可复现。本地模型怎么接进本地LLM评测DeepEval 把打分模型抽象成统一接口接入有三条路从零代码到十几行不等。Ollama 直连。本机装了 Ollama 并拉好模型三行就能用from deepeval.metrics import AnswerRelevancyMetric, FaithfulnessMetric from deepeval.models import OllamaModel judge OllamaModel(modelllama3.1:8b, temperature0) # 指向本机 Ollama 服务 metrics [ AnswerRelevancyMetric(modeljudge), FaithfulnessMetric(modeljudge), ]OllamaModel是 DeepEval 内置适配器默认连http://localhost:11434参数细节见 Ollama 集成文档。用 OpenAI 兼容服务直连本地跑 vLLM、llama.cpp、SGLang 这类推理服务时它们都暴露 OpenAI 兼容接口直接用内置的LocalModelfrom deepeval.models import LocalModel judge LocalModel( modelQwen/Qwen2.5-7B-Instruct, base_urlhttp://localhost:8000/v1, # 本地推理服务地址 )自托管模型写一个 12 行适配器直接用 Transformers 加载的模型继承DeepEvalBaseLLM实现生成方法即可可参考 内置适配器的实现。以 4 位量化的 Llama-3 8B 为例from deepeval.models import DeepEvalBaseLLM class MyLocalJudge(DeepEvalBaseLLM): def __init__(self, model, tokenizer): self.model, self.tokenizer model, tokenizer # 自行加载后传入 def load_model(self): return self.model def generate(self, prompt, schemaNone): out self.model.generate( **self.tokenizer(prompt, return_tensorspt).to(cuda), max_new_tokens200) return self.tokenizer.decode(out[0], skip_special_tokensTrue), 0.0 def get_model_name(self): return local-judge三条路覆盖绝大多数开源模型图省事就选前两条。评测指标怎么选先定维度再挑模型这些开源模型评测指标按检验维度划分且全部支持本地计算。第一次回归从相关性、事实性、安全三条线各挑一个就够维度代表指标检验什么相关性AnswerRelevancy回答是否切题、不跑偏事实性Faithfulness有无编造参考材料之外的事实幻觉安全性Toxicity输出是否带有害、偏见内容格式JSONCorrectness结构化输出能否被解析评委选型是关键1.5B 级别的小模型跑得快但判断本身不稳定分数容易来回漂7B~8B 是常用区间质量与速度平衡。若你的被测模型就是 8B让评委能力不低于它是比较稳妥的选择。显存与速度卡住时怎么办本地跑评测瓶颈通常只有两个显存、吞吐。显存不足时优先 4 位量化8B 模型占用从约 16GB 降到 4GB 左右约降 75%对打几分这种任务的精度影响很小。加载时传入BitsAndBytesConfig(load_in_4bitTrue, bnb_4bit_quant_typenf4)即可。吞吐不足时用 vLLM 这类推理引擎替代裸 Transformers 推理速度通常能提数倍再配合异步生成a_generate把测试集分批并发处理。还有一个常见坑部分开源模型输出 JSON 不稳定导致指标拿不到分数。遇到分数为空的指标先检查评委有没有按要求输出结构化判定——换一个指令遵循更好的模型或在推理服务端加格式约束比改评测代码更直接。把本地LLM评测挂进 CI 回归能本地跑就能被 CI 调度。把评测做成普通 pytest 用例每次提交都跑一遍黄金数据集指标低于阈值直接让构建失败。import pytest from deepeval import assert_test cases load_goldens() # 从本地 JSON 读取黄金数据集 pytest.mark.parametrize(case, cases) def test_no_regression(case): assert_test(test_casecase, metricsmetrics)# 在 .github/workflows/llm-eval.yml 里追加 - name: 本地评测 run: pytest tests/test_llm_quality.py这样 prompt 一改、模型版本一切就有机器替你把关分数漂移当天就能发现。行动清单✅pip install -U deepeval本机装好 Ollama 并拉一个 7B~8B 模型✅ 用OllamaModel替换打分模型先跑相关性 事实性 安全三个核心指标✅ 本地服务是 OpenAI 兼容接口时改用LocalModel并指向 vLLM 的base_url✅ 写一个黄金数据集的 pytest 用例挂进 CI给每个指标设好通过阈值✅ 显存吃紧时先上 4 位量化再考虑换小一号的模型【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考