ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

DeepEval LLM 评估实战:给 LLM 应用装一套可运行的质量门禁

DeepEval LLM 评估实战:给 LLM 应用装一套可运行的质量门禁 DeepEval LLM 评估实战给 LLM 应用装一套可运行的质量门禁【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval线上 LLM 应用的回答质量是悄悄劣化的某天问答开始答错日志里没有任何报错人工抽 20 条还能撑住抽 2000 条就不现实了。DeepEval 是一个开源 LLM 评估框架流程全部用 Python 写把LLM 当法官做成可执行的断言由一个评估模型给应用输出打分低于阈值用例即失败整个结果像普通测试一样接入 pytest。DeepEval 与 Confident AI 平台架构框架通过公开 API 把评估、指标、数据集、trace 送到平台一侧评估到底在评什么一次评估的数据流是固定的先把你的一次应用调用包进LLMTestCase保存input、actual_output、expected_output、retrieval_context等字段再选一个或多个指标每个指标把用例交给评估模型即法官另一个 LLM得到 0~1 的分数和理由最后分数与阈值比对低于阈值判 FAIL。内置指标按场景分组RAG 评估指标有AnswerRelevancyMetric答案相关性和FaithfulnessMetric对检索内容的忠实度Agent 方向有TaskCompletionMetric、ToolUseMetric内容安全方向有HallucinationMetric、PIILeakageMetric个人信息泄漏检测等共 40 多个。评估模型是负责打分的第二个 LLM它只读用例与评分标准因此可以和你的业务模型不同、也可以来自不同厂商。第一个评估怎么跑安装与最小用例DeepEval 用 Poetry 管理依赖pip 直接装当前代码即可法官默认用 OpenAI需要先备好 API Key。git clone https://gitcode.com/GitHub_Trending/de/deepeval cd deepeval pip install -U . # 安装当前代码 deepeval --version # 验证安装 export OPENAI_API_KEYyour-api-key写一个最小用例评估一条客服问答的答案相关性# test_eval.py from deepeval import assert_test from deepeval.test_case import LLMTestCase from deepeval.metrics import AnswerRelevancyMetric def test_refund_answer(): test_case LLMTestCase( inputWhat if these shoes dont fit?, actual_outputWe offer a 30-day full refund at no extra cost., expected_outputYoure eligible for a free full refund within 30 days., ) metric AnswerRelevancyMetric(threshold0.7) assert_test(test_case, [metric])用内置命令运行deepeval test run test_eval.py。终端会打印一张测试表格指标列给出 AnswerRelevancy 得分0~1与 PASS/FAIL 状态失败时附带法官给出的理由。这条用例显示 PASSDeepEval LLM 评估就通了。把评估铺到 RAG 问答场景上单指标只能回答答得相不相关回答不了是不是忠于检索到的文档。给文档问答机器人叠上三个最常用的 RAG 评估指标# rag_eval.py from deepeval import evaluate from deepeval.test_case import LLMTestCase from deepeval.metrics import (AnswerRelevancyMetric, FaithfulnessMetric, ContextualRelevancyMetric) cases [ # (问题, 检索内容, 模型输出) (Whats the refund policy?, [Full refunds are available within 30 days.], You can get a full refund within 30 days.), (Do you ship internationally?, [We currently only ship domestically.], We offer both domestic and international shipping.), ] test_cases [LLMTestCase(inputq, actual_outputo, retrieval_contextc) for q, c, o in cases] evaluate(test_casestest_cases, metrics[ AnswerRelevancyMetric(threshold0.7), FaithfulnessMetric(threshold0.7), ContextualRelevancyMetric(threshold0.6), ])运行python rag_eval.py后终端按用例逐个打印每个指标的得分与 PASS/FAIL。第二条用例的 Faithfulness 必然低并判 FAIL它声称支持国际配送与检索内容仅支持国内直接矛盾而这条的 AnswerRelevancy 可能仍然过线。单指标看不见的矛盾多指标叠加才拦得住。评估结果视图用例通过/失败汇总与每条用例的指标明细按需要扩展评估进入业务后通常依次需要三件事写出业务标准、把数据成规模管理起来、控制法官在哪里运行。用 GEval 自定义业务标准内置指标表达不了你的标准语气、格式、合规要求时把自然语言标准直接交给评估模型from deepeval.metrics import GEval from deepeval.test_case import SingleTurnParams tone GEval( name语气评估, criteria判断回复是否礼貌、专业避免含糊其辞或推诿话术, evaluation_params[SingleTurnParams.ACTUAL_OUTPUT, SingleTurnParams.INPUT], threshold0.8, )GEval 会依据 criteria 生成评分提示词判定不够稳时传strict_modeTrue要求更严格的判定。用数据集与参数化管理几十条用例用例多到几十条时用EvaluationDataset归拢再交给 pytest 参数化让每条用例独立运行、独立失败import pytest from deepeval.dataset import EvaluationDataset dataset EvaluationDataset(alias客服回归集, test_casestest_cases) pytest.mark.parametrize(test_case, dataset.test_cases) def test_rag(test_case): assert_test(test_case, [AnswerRelevancyMetric(threshold0.7)])alias是平台侧的聚合键保持它稳定同一数据集的历史运行才能并排对比换了别名等于另起一个数据集。数据集管理goldens 的编辑、版本化与一键评估入口更换评估模型含本地 Ollama法官默认走 OpenAI有成本或数据合规顾虑时直接换模型from deepeval.models.llms import OpenAIModel, GeminiModel, OllamaModel metric AnswerRelevancyMetric( threshold0.7, modelOllamaModel(modelllama3.1:70b), # 本地评估数据不出机器 )OllamaModel默认连localhost:11434也可用base_url指向远程实例。法官能力应与被评模型相当或更强否则分数本身不可信。接进 CI 并守住阈值DeepEval 本质是 pytest 插件把 pytest 集成 LLM 测试接进 CI 只需一条命令。最小 GitHub Actions 配置# .github/workflows/llm-eval.yml name: LLM Evaluation on: [push, pull_request] jobs: evaluate: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: actions/setup-pythonv5 with: python-version: 3.11 - run: pip install -U . - run: deepeval test run tests/ env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} CONFIDENT_API_KEY: ${{ secrets.CONFIDENT_API_KEY }}阈值策略的关键是先校准、后固定把任一用例低于阈值当作 PR 合并门槛而不是只看有没有报错。用真实业务数据校准一次阈值之后保持不动频繁调整会让回归线失去意义。CONFIDENT_API_KEY可选——配置后每次运行同步到 Confident AI 平台按数据集聚合成指标历史曲线回归是否劣化一眼可见纯本地 CI 可不设。回归视图同一用例在不同运行间的指标得分并排对比出问题时查这里同一用例两次运行得分不同— 法官本身带随机性分数会波动。重要指标多次运行取均值重复对比同一批用例时改用deepeval test run --use-cache启用结果缓存。评估时频繁 429 限流— 默认异步并发为 20很快打满提供商配额。从deepeval.evaluate.configs导入AsyncConfig并传async_configAsyncConfig(max_concurrent4)降低并发短时抖动有内置指数退避重试一般可自恢复。某指标直接报错而不是给分—FaithfulnessMetric与 Contextual 系列依赖retrieval_context字段缺失会失败而非跳过。给用例补上该字段多指标混用时逐个核对前置条件。本地评估首次运行很慢—OllamaModel首次会拉取模型等待时间计入评估耗时。提前ollama pull预热一次后续即为正常速度。阅读路径建议按顺序来先跑通最小用例再读AnswerRelevancyMetric源码弄清一次评分怎么产生最后把评估接进 CI让它成为每次提交前的固定动作。深入材料在仓库内全部指标的实现与参数见 deepeval/metrics/RAG、Agent 与追踪的完整示例见 examples/系统文档见 docs/。【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表