DeepEval: 开源LLM评估框架的全面解析

RayRay
DeepEvalLLM评估开源框架AI测试指标评估Github开源项目

DeepEval简介

DeepEval是一个专门用于评估大型语言模型(LLM)输出的开源框架。它的设计理念类似于Pytest,但专门针对LLM输出进行单元测试。DeepEval集成了最新的研究成果,提供了多种评估指标,如G-Eval、幻觉检测、答案相关性、RAGAS等,这些指标利用LLM和各种NLP模型在本地机器上进行评估。

无论您的应用是基于RAG还是微调,使用LangChain还是LlamaIndex,DeepEval都能满足您的需求。通过DeepEval,您可以轻松确定最佳的超参数来改进RAG管道,防止提示词漂移,甚至自信地从OpenAI过渡到托管自己的Llama2模型。

DeepEval Logo

主要特性与指标

DeepEval提供了丰富的现成LLM评估指标,这些指标都附带详细解释,可以由任何您选择的LLM、统计方法或在本地机器上运行的NLP模型提供支持:

  • G-Eval
  • 摘要评估
  • 答案相关性
  • 忠实度
  • 上下文召回率
  • 上下文精确度
  • RAGAS
  • 幻觉检测
  • 毒性检测
  • 偏见检测
  • 等等

除了丰富的评估指标外,DeepEval还具有以下主要特性:

  1. 批量评估:只需20行Python代码即可并行评估整个数据集。可以通过CLI以类似Pytest的方式进行,也可以通过evaluate()函数进行。

  2. 自定义指标:通过继承DeepEval的基础指标类,创建自定义指标,并自动集成到DeepEval的生态系统中。

  3. CI/CD集成:可以无缝集成到任何CI/CD环境中。

  4. LLM基准测试:只需10行代码即可在流行的LLM基准上对任何LLM进行基准测试,包括MMLU、HellaSwag、DROP、BIG-Bench Hard、TruthfulQA、HumanEval、GSM8K等。

  5. Confident AI集成:自动集成到Confident AI平台,实现LLM应用的持续评估:

    • 记录评估结果并分析指标通过/失败情况
    • 根据评估结果比较和选择最佳超参数(如提示模板、分块大小、使用的模型等)
    • 通过LLM跟踪调试评估结果
    • 在一个地方管理评估测试用例/数据集
    • 追踪事件以识别生产中的实时LLM响应
    • 在生产环境中进行实时评估
    • 将生产事件添加到现有评估数据集以加强评估

快速入门

让我们通过一个简单的例子来了解如何使用DeepEval。假设您的LLM应用是一个基于RAG的客户支持聊天机器人,以下是如何使用DeepEval测试您的应用。

安装

首先,安装DeepEval:

pip install deepeval

创建账户(强烈推荐)

虽然可选,但创建一个账户可以让您记录测试结果,方便跟踪变更和性能迭代。运行以下命令登录:

deepeval login

按照CLI中的说明创建账户,复制API密钥,并将其粘贴到CLI中。

编写第一个测试用例

创建一个测试文件test_chatbot.py,并编写您的第一个DeepEval测试用例:

import pytest from deepeval import assert_test from deepeval.metrics import AnswerRelevancyMetric from deepeval.test_case import LLMTestCase def test_case(): answer_relevancy_metric = AnswerRelevancyMetric(threshold=0.5) test_case = LLMTestCase( input="What if these shoes don't fit?", # 替换为您的LLM应用的实际输出 actual_output="We offer a 30-day full refund at no extra costs.", retrieval_context=["All customers are eligible for a 30 day full refund at no extra costs."] ) assert_test(test_case, [answer_relevancy_metric])

设置OPENAI_API_KEY环境变量(您也可以使用自定义模型进行评估):

export OPENAI_API_KEY="..."

运行测试:

deepeval test run test_chatbot.py

如果一切正常,您的测试应该通过了✅。让我们来分析一下发生了什么:

  • input变量模拟用户输入,actual_output是您的聊天机器人基于此查询的预期输出。
  • retrieval_context包含来自您知识库的相关信息。
  • AnswerRelevancyMetric(threshold=0.5)是DeepEval提供的现成指标,用于根据提供的上下文评估LLM输出的相关性。
  • 指标分数范围从0到1,threshold=0.5阈值最终决定您的测试是否通过。

高级用法

不使用Pytest集成进行评估

对于notebook环境,您可以不使用Pytest进行评估:

from deepeval import evaluate from deepeval.metrics import AnswerRelevancyMetric from deepeval.test_case import LLMTestCase answer_relevancy_metric = AnswerRelevancyMetric(threshold=0.7) test_case = LLMTestCase( input="What if these shoes don't fit?", actual_output="We offer a 30-day full refund at no extra costs.", retrieval_context=["All customers are eligible for a 30 day full refund at no extra costs."] ) evaluate([test_case], [answer_relevancy_metric])

使用独立指标

DeepEval的模块化设计使得任何人都可以轻松使用任何指标:

from deepeval.metrics import AnswerRelevancyMetric from deepeval.test_case import LLMTestCase answer_relevancy_metric = AnswerRelevancyMetric(threshold=0.7) test_case = LLMTestCase( input="What if these shoes don't fit?", actual_output="We offer a 30-day full refund at no extra costs.", retrieval_context=["All customers are eligible for a 30 day full refund at no extra costs."] ) answer_relevancy_metric.measure(test_case) print(answer_relevancy_metric.score) # 大多数指标还提供解释 print(answer_relevancy_metric.reason)

批量评估数据集/测试用例

在DeepEval中,数据集只是测试用例的集合。以下是如何批量评估:

import pytest from deepeval import assert_test from deepeval.metrics import HallucinationMetric, AnswerRelevancyMetric from deepeval.test_case import LLMTestCase from deepeval.dataset import EvaluationDataset first_test_case = LLMTestCase(input="...", actual_output="...", context=["..."]) second_test_case = LLMTestCase(input="...", actual_output="...", context=["..."]) dataset = EvaluationDataset(test_cases=[first_test_case, second_test_case]) @pytest.mark.parametrize( "test_case", dataset, ) def test_customer_chatbot(test_case: LLMTestCase): hallucination_metric = HallucinationMetric(threshold=0.3) answer_relevancy_metric = AnswerRelevancyMetric(threshold=0.5) assert_test(test_case, [hallucination_metric, answer_relevancy_metric]) # 在CLI中运行,可以添加可选的-n标志以并行运行测试 # deepeval test run test_<filename>.py -n 4

或者不使用Pytest集成:

from deepeval import evaluate ... evaluate(dataset, [answer_relevancy_metric]) # 或 dataset.evaluate([answer_relevancy_metric])

Confident AI上的实时评估

Confident AI是一个免费的Web平台,提供以下功能:

  1. 记录和查看DeepEval测试运行的所有测试结果/指标数据。
  2. 通过LLM跟踪调试评估结果。
  3. 比较和选择最佳超参数(提示模板、模型、分块大小等)。
  4. 创建、管理和集中化评估数据集。
  5. 在生产中跟踪事件并增强评估数据集以进行持续评估。
  6. 在生产中跟踪事件,查看评估结果和历史洞察。

要开始使用,请从CLI登录:

deepeval login

按照说明登录,创建您的账户,并将API密钥粘贴到CLI中。然后,再次运行您的测试文件:

deepeval test run test_chatbot.py

测试运行完成后,您应该会在CLI中看到一个链接。将其粘贴到浏览器中即可查看结果!

结语

DeepEval为LLM应用开发者提供了一个强大而灵活的评估框架。通过其丰富的指标、易用的API和与Confident AI平台的集成,DeepEval可以帮助您持续改进LLM应用的性能,确保输出质量,并在开发过程中做出数据驱动的决策。无论您是构建RAG系统、微调模型,还是探索新的LLM应用,DeepEval都是一个不可或缺的工具,可以帮助您构建更可靠、更高质量的AI应用。

要深入了解DeepEval的更多功能和高级用法,请查阅官方文档。如果您有任何问题或想讨论LLM评估,欢迎加入DeepEval的Discord社区

Confident AI Test Cases

通过DeepEval,让我们共同推动LLM技术的发展,构建更智能、更可靠的AI应用!

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多