DeepEval 上传结果报 SSL certificate verify failed 怎么排查?
2026/9/14 9:49:51 网站建设 项目流程

DeepEval 上传结果报 SSL certificate verify failed 怎么排查?

【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval

deepeval把评估结果上传到 Confident AI 时失败,报错形如 Python 的:

SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate

或 TypeScript 的:

Error: unable to verify the first certificate (UNABLE_TO_VERIFY_LEAF_SIGNATURE)

按官方 Troubleshooting 文档 的说法,这类错误通常意味着证书验证在本地环境里失败了,而不是deepeval内部的问题。排查目标就一个:先证明你的机器能不能正常完成对 Confident AI API 的 TLS 握手,再决定是修证书链还是临时关闭验证。以下所有检查都要求在与运行deepeval的同一台机器、同一环境里执行。

第一步:用 curl 检查 TLS 握手

在与运行deepeval相同的终端里执行:

curl -v https://api.confident-ai.com/

如果curl也报 SSL / 证书错误,把完整输出复制下来留作证据——这说明是机器层面的证书问题,与deepeval无关。

第二步:用 deepeval 所用的 HTTP 栈再验证一次

curl用的 TLS 栈和deepeval不同,所以文档要求再通过deepeval实际使用的 HTTP 库访问一次 API。

Python 环境执行:

unset REQUESTS_CA_BUNDLE SSL_CERT_FILE SSL_CERT_FILE python -m pip install -U certifi python - << 'PY' import requests r = requests.get("https://api.confident-ai.com") print(r.status_code) PY

其中unset REQUESTS_CA_BUNDLE SSL_CERT_FILE SSL_CERT_DIR会移除当前 shell 里的证书包相关环境变量,让requests使用certifi的默认证书链,避免这些变量干扰判断;pip install -U certifi升级本地证书包。

TypeScript 环境执行:

node -e "require('https').get('https://api.confident-ai.com', r => console.log(r.statusCode)).on('error', e => console.error(e))"

如果这一步仍报证书错误,同样复制完整输出。

判断逻辑很直接:

  • 两个检查都成功(能返回状态码、无证书错误)→ 进入第三步重跑deepeval
  • 仍然证书报错 → 你的运行时信任链本身有问题,继续看下一节的处理方式,或按文末要求带上全部诊断输出提 issue。

第三步:从同一终端重跑 deepeval

如果第二步的代码片段成功,就在同一个终端会话里重新运行你的deepeval评估,确认上传是否还失败。如果依然报 TLS 错误,提 issue 时需要附上完整错误和上面两个检查的输出。

另外注意deepeval的设置是缓存的:如果修改环境变量后没有生效,重启进程即可(Python 里也可以用deepeval.config.settings.reset_settings原地重载)。

可选分支:自托管或内部端点

只有在你使用CONFIDENT_BASE_URLdeepeval指向内部或自托管的 Confident AI API,且该端点使用自签名证书、私有 CA 或运行时证书库不信任的证书链、并已确认失败与证书验证相关时,才考虑关闭验证:

export CONFIDENT_BASE_URL=https://your-self-hosted-confident-api.example.com export CONFIDENT_DISABLE_SSL=1

CONFIDENT_DISABLE_SSL=1会关闭deepeval发往 Confident AI API 请求的证书验证(对应实现见 Api 客户端,verify参数直接取CONFIDENT_DISABLE_SSL的反值)。文档明确警告:这只应作为修复信任证书链期间的临时手段,不要把它当成长期配置,尤其是非内部/自托管环境。对公开端点(https://api.confident-ai.comhttps://eu.api.confident-ai.comhttps://au.api.confident-ai.com),应保持验证开启,持续报错就上报完整 TLS 诊断信息。

TypeScript 侧如果组织用私有 CA 终结 TLS,另一种更稳妥的做法是把 Node 指向该 CA 包:

export NODE_EXTRA_CA_CERTS=/path/to/your-ca.pem

/path/to/your-ca.pem替换为你实际的私有 CA 证书路径。

排查无果时如何提 issue

文档要求 issue 中包含以下材料,缺一不可:

  • deepeval版本;
  • 操作系统,以及python --version(或 Node 的node --version)的输出;
  • 最小复现脚本;
  • 完整 stack trace;
  • LOG_LEVEL=DEBUG跑出的日志(deepeval还支持DEEPEVAL_VERBOSE_MODEDEEPEVAL_LOG_STACK_TRACES等环境变量输出更多诊断信息);
  • 你设置过的所有非默认deepeval环境变量。

提交前记得抹掉 API key 等敏感信息。

更多排查细节(超时调优、dotenv 加载、日志配置)可参见 docs/content/docs/troubleshooting.mdx,环境变量含义可对照 docs/content/docs/environment-variables.mdx。

【免费下载链接】deepevalThe LLM Evaluation Framework项目地址: https://gitcode.com/GitHub_Trending/de/deepeval

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询