大模型测试第一步DeepEval环境配置与安装
文章目录1. 环境配置与安装1.1. 安装 deepeval1.1.1. pip 安装1.1.2. 验证安装1.2. 配置 LLM 提供商1.2.1. OpenAI需要 API Key1.2.2. DeepSeek国内推荐1.2.3. 本地模型Ollama1.3. 配置环境变量1.3.1. .env 文件方式1.3.2. 必需的环境变量1.3.3. 可选的环境变量1.4. 环境验证脚本1.5. 小结1. 环境配置与安装文档基于 DeepEval v4.1.0 编写来源https://deepeval.com/docs/getting-started1.1. 安装 deepeval1.1.1. pip 安装DeepEval 要求 Python 3.9。建议在虚拟环境中安装# 创建虚拟环境可选但推荐python-mvenv deepeval_envsourcedeepeval_env/bin/activate# Linux/Mac# deepeval_env\\Scripts\\activate # Windows# 安装 DeepEvalpipinstall-Udeepeval1.1.2. 验证安装# 来源: https://deepeval.com/docs/getting-started# 验证安装是否成功importdeepeval# 打印版本号print(fDeepEval 版本:{deepeval.__version__})# 运行上面代码后输出类似 DeepEval 版本: 4.1.01.2. 配置 LLM 提供商DeepEval 的指标大多使用 LLM-as-a-Judge 模式需要指定一个 LLM 来执行评估。默认使用 OpenAI 的 GPT 模型。1.2.1. OpenAI需要 API Key# 设置 OpenAI API KeyexportOPENAI_API_KEYsk-your-openai-api-key# Windows 用户# set OPENAI_API_KEYsk-your-openai-api-key# 来源: https://deepeval.com/docs/metrics-introduction# 在 Jupyter/Colab 中设置环境变量%env OPENAI_API_KEYsk-your-openai-api-key注意如果使用 OpenAI 需要科学上网国内用户建议使用 DeepSeek 或 Ollama 本地模型见下方配置。1.2.2. DeepSeek国内推荐DeepSeek 提供兼容 OpenAI 接口的 API国内可直接访问价格低廉。# 获取 API Key: https://platform.deepseek.com/api_keysexportDEEPEVAL_TELEMETRY_OPT_OUTYESexportOPENAI_API_KEYsk-your-deepseek-api-keyexportOPENAI_API_BASEhttps://api.deepseek.compythonpython# 来源: https://deepeval.com/guides/guides-using-custom-llms# 方式一通过自定义 LLM 类使用 DeepSeekfrom openaiimportOpenAI from deepeval.models.base_modelimportDeepEvalBaseLLM class DeepSeekModel(DeepEvalBaseLLM): def __init__(self, model_name: strdeepseek-chat): self.model_namemodel_name# 初始化 DeepSeek 客户端self.clientOpenAI(api_keysk-your-deepseek-api-key,base_urlhttps://api.deepseek.com)def load_model(self):returnself.model_name def generate(self, prompt: str)-str:# 调用 DeepSeek API 生成响应responseself.client.chat.completions.create(modelself.model_name,messages[{role:user,content:prompt}],temperature0)returnresponse.choices[0].message.content async def a_generate(self, prompt: str)-str:returnself.generate(prompt)def get_model_name(self)-str:returnself.model_name# 创建 DeepSeek 模型实例deepseek_llmDeepSeekModel()# 验证模型是否可用test_responsedeepseek_llm.generate(请用一句话介绍你自己)print(f测试响应: {test_response})# 运行上面代码后输出类似 测试响应: 我是 DeepSeek由深度求索公司创造的 AI 助手。1.2.3. 本地模型OllamaOllama 允许在本地运行开源模型完全离线无需 API Key。# 安装 OllamamacOS/Linux# curl -fsSL https://ollama.com/install.sh | sh# 拉取模型ollama pull deepseek-r1:1.5b# 启动 Ollama 服务后配置 DeepEvaldeepeval set-ollama--modeldeepseek-r1:1.5b# 来源: https://deepeval.com/docs/metrics-introduction#configure-llm-judges# 验证 Ollama 配置fromdeepeval.metricsimportAnswerRelevancyMetricfromdeepeval.test_caseimportLLMTestCase# 创建测试用例test_caseLLMTestCase(input什么是机器学习,actual_output机器学习是人工智能的一个子领域它使计算机能够从数据中学习。)# 使用 Ollama 模型进行评估# 注意需要先执行 deepeval set-ollama --modeldeepseek-r1:1.5bmetricAnswerRelevancyMetric(threshold0.5)metric.measure(test_case)print(f分数:{metric.score})print(f通过:{metric.score0.5})# 运行上面代码后输出类似 分数: 0.85 通过: True注意Ollama 本地模型在推理能力上可能弱于 GPT-4/DeepSeek建议在简单评估场景使用复杂评估建议使用 DeepSeek。提供商优点缺点推荐场景OpenAI评估质量最高需要科学上网成本高生产环境、高精度评估DeepSeek国内直连价格低质量好高峰期可能限流国内开发/生产环境首选Ollama完全离线免费本地模型推理能力有限开发调试、离线场景1.3. 配置环境变量1.3.1. .env 文件方式DeepEval 在导入时会自动加载.env.local和.env文件优先级已有环境变量 →.env.local→.env。# 在项目根目录创建 .env.local 文件会被 git 忽略touch.env.local# .env.local 文件内容 OPENAI_API_KEYsk-your-api-key # 如果使用 DeepSeek设置这两个变量 # OPENAI_API_KEYsk-your-deepseek-api-key # OPENAI_API_BASEhttps://api.deepseek.com # 关闭遥测数据上报国内用户建议设置 DEEPEVAL_TELEMETRY_OPT_OUTYES # 关闭 .env 自动加载如果有特殊需求 # DEEPEVAL_DISABLE_DOTENV11.3.2. 必需的环境变量环境变量说明示例值OPENAI_API_KEYOpenAI/DeepSeek API Keysk-xxx1.3.3. 可选的环境变量环境变量说明默认值DEEPEVAL_TELEMETRY_OPT_OUT关闭遥测数据上报未设置开启DEEPEVAL_DISABLE_DOTENV禁用 .env 自动加载未设置DEEPEVAL_RESULTS_FOLDER本地结果存储路径./deepeval_results1.4. 环境验证脚本# 来源: https://deepeval.com/docs/getting-started# 完整环境验证脚本importosimportsysdefcheck_environment():检查 DeepEval 运行环境是否配置正确print(*50)print(DeepEval 环境验证)print(*50)# 1. 检查 Python 版本python_versionsys.version_infoprint(f\n[1/4] Python 版本:{python_version.major}.{python_version.minor}.{python_version.micro})ifpython_version(3,9):print( ❌ Python 版本过低需要 3.9)returnFalseelse:print( ✅ Python 版本符合要求)# 2. 检查 deepeval 安装try:importdeepevalprint(f\n[2/4] DeepEval 版本:{deepeval.__version__})print( ✅ DeepEval 已安装)exceptImportError:print(\n[2/4] ❌ DeepEval 未安装请运行: pip install -U deepeval)returnFalse# 3. 检查 API Keyapi_keyos.environ.get(OPENAI_API_KEY,)ifapi_key:masked_keyapi_key[:7]...api_key[-4:]print(f\n[3/4] API Key:{masked_key})print( ✅ OPENAI_API_KEY 已设置)else:print(\n[3/4] ❌ OPENAI_API_KEY 未设置)print( 请运行: export OPENAI_API_KEYsk-your-key)returnFalse# 4. 检查遥测设置telemetryos.environ.get(DEEPEVAL_TELEMETRY_OPT_OUT,)print(f\n[4/4] 遥测状态:{已关闭iftelemetryelse开启中})ifnottelemetry:print( 建议设置: export DEEPEVAL_TELEMETRY_OPT_OUTYES)print(\n*50)print(✅ 环境验证通过可以开始使用 DeepEval)print(*50)returnTrueif__name____main__:check_environment()# 运行上面代码后输出类似 DeepEval 环境验证 [1/4] Python 版本: 3.11.0 ✅ Python 版本符合要求 [2/4] DeepEval 版本: 4.1.0 ✅ DeepEval 已安装 [3/4] API Key: sk-xxxx...xxxx ✅ OPENAI_API_KEY 已设置 [4/4] 遥测状态: 已关闭 ✅ 环境验证通过可以开始使用 DeepEval 1.5. 小结安装pip install -U deepeval要求 Python 3.9LLM 配置国内首选 DeepSeek兼容 OpenAI 接口直连低价本地开发可选 Ollama关键环境变量OPENAI_API_KEY必需、DEEPEVAL_TELEMETRY_OPT_OUTYES建议验证运行环境验证脚本确保所有组件正常

相关新闻

langgraph持久化记忆的get_state_history(config)方法返回的生成器内容详解

langgraph持久化记忆的get_state_history(config)方法返回的生成器内容详解

文章目录一、StateSnapshot 七大字段全景二、结合 MessagesState 的真实例子三、每个字段的深度解读四、实战:解析 MessagesState 历史的完整模板五、MessagesState 场景下的两个高级用法用法 1:提取"纯 AI 回复"时间线用法 2:从任…

2026/10/20 9:47:28 阅读更多 →
UE4/UE5导航网格优化:从原理到动态调整的实战指南

UE4/UE5导航网格优化:从原理到动态调整的实战指南

1. 项目概述:为什么导航网格值得你花时间优化?在UE4(或UE5)里做游戏,尤其是涉及AI寻路、开放世界或者动态场景,导航网格(NavMesh)绝对是后台的“无名英雄”。你可能没直接操作过它&a…

2026/10/18 20:35:14 阅读更多 →
OMAP-L137 SPI接口深度解析:从寄存器配置到DMA调优的嵌入式通信实战

OMAP-L137 SPI接口深度解析:从寄存器配置到DMA调优的嵌入式通信实战

1. SPI接口基础:从“对讲机”到“流水线”的通信哲学搞嵌入式开发这么多年,SPI(Serial Peripheral Interface)绝对是我打交道最多的通信接口之一。它不像I2C那样需要复杂的地址协议,也不像UART那样依赖精确的波特率匹配…

2026/10/20 3:32:54 阅读更多 →

最新新闻

Python提速全攻略:PyPy、Numba、Cython等五大优化方案详解

Python提速全攻略:PyPy、Numba、Cython等五大优化方案详解

每次有人聊起 Python 运行速度,话题往往走向“怎么给 Python 提速”。我没法用一句话回答,因为同样是慢,不同场景的瓶颈可能完全不一样:有的是 CPU 密集计算卡在循环里,有的是 I/O 等网络响应,有的是单纯内…

2026/10/20 9:47:18 阅读更多 →
Langchain4j AI Services:让Java大模型集成走向接口化

Langchain4j AI Services:让Java大模型集成走向接口化

1. Java 生态接大模型的别扭之处:从裸调 HTTP 到认识 Langchain4j大概半年前,我拿到一个很典型的 Java 后端需求:把公司内部的工单系统接上大模型,让用户用自然语言查“上周的工单为什么积压”,同时自动归类、生成总结…

2026/10/20 9:47:18 阅读更多 →
聊天机器人如何全链条再造新闻传播:生产、组织、分发与反馈

聊天机器人如何全链条再造新闻传播:生产、组织、分发与反馈

1. 从"对话即界面"说起:聊天机器人到底在改造新闻传播的哪一环这两年我一直在跟踪对话式交互产品在内容行业的落地,越做越觉得一个判断是对的:聊天机器人对新闻传播的改变,不是"多了一个分发渠道"这么轻描淡写…

2026/10/20 9:47:18 阅读更多 →
国产AI算力地基:硬件抽象层与运行时深度解析

国产AI算力地基:硬件抽象层与运行时深度解析

1. 项目概述:为什么说“国产算力的地基”比开源模型更值得致敬“致敬,DeepSeek 最新开源的不是模型,是国产算力的地基”——这句话在技术圈刷屏时,我正调试一套国产AI推理服务,卡在CUDA版本兼容性上整整两天。看到标题…

2026/10/20 9:47:18 阅读更多 →
Vue 3组合查询条件封装:多字段联动、URL同步与防抖搜索实战

Vue 3组合查询条件封装:多字段联动、URL同步与防抖搜索实战

简介:本资源是一套基于Vue.js实现的组合查询条件功能完整源码,面向前端初学者及中级开发者,聚焦表单联动、动态参数组装与响应式数据更新等实战场景。项目采用Vue CLI脚手架构建,涵盖组件化封装、计算属性与watch侦听器协同处理多…

2026/10/20 9:47:18 阅读更多 →
无源贴片晶振匹配解决方案:负载电容计算与PCB布局实战

无源贴片晶振匹配解决方案:负载电容计算与PCB布局实战

做硬件调试这些年,绕不开一个特别“小”但又特别容易坑人的器件:无源贴片晶振。很多开发者第一次画板子,MCU选好了、代码写好了,上电却发现系统时钟不对,或者干脆不振,最后查来查去,问题往往就出…

2026/10/20 9:46:04 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →