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_URL把deepeval指向内部或自托管的 Confident AI API,且该端点使用自签名证书、私有 CA 或运行时证书库不信任的证书链、并已确认失败与证书验证相关时,才考虑关闭验证:
export CONFIDENT_BASE_URL=https://your-self-hosted-confident-api.example.com export CONFIDENT_DISABLE_SSL=1CONFIDENT_DISABLE_SSL=1会关闭deepeval发往 Confident AI API 请求的证书验证(对应实现见 Api 客户端,verify参数直接取CONFIDENT_DISABLE_SSL的反值)。文档明确警告:这只应作为修复信任证书链期间的临时手段,不要把它当成长期配置,尤其是非内部/自托管环境。对公开端点(https://api.confident-ai.com、https://eu.api.confident-ai.com、https://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_MODE、DEEPEVAL_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),仅供参考