连接GPT-3开放AI时API连接错误和SSL认证错误如何解决?

问题描述 投票:0回答:3

我正在尝试通过尝试GPT-3开放AI来运行python脚本(jupyter笔记本)来创建一些NLP项目并了解其功能和用例。当我尝试打开 JSON 文件时,出现 SSL 认证和 API 连接错误。我在网上查了一些解决方案,但没有提供任何补救措施。我只是尝试通过 API 密钥连接到服务器,但代码无法正常工作。我执行的代码如下-

import ssl
import certifi
certifi.where()
import openai
api_key='my_api_key'            #it is confidential string
openai.api_key = api_key
response = openai.File.create(file=open("C:\\Users\\pythons_scripts\\Corporate Governance1658287996.json"), purpose="search")
print(response)

所以上面的脚本抛出了以下所有错误 -

SSLCertVerificationError                  Traceback (most recent call last)    
SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)
APIConnectionError                        Traceback (most recent call last)
APIConnectionError: Error communicating with OpenAI

有人知道如何解决这个问题吗?或者有人解决过这样的问题吗?有人可以建议一个可行的解决方案吗?

python-3.x api ssl-certificate openai-api gpt-3
3个回答
3
投票

OpenAI 库在底层使用标准的 python 请求。这意味着您可以使用以下环境变量设置 CA 捆绑包(可在 Python 请求 - 如何使用系统 ca 证书 (debian/ubuntu)?)中找到。

名称:REQUESTS_CA_BUNDLE

值:/etc/ssl/certs/ca-certificates.crt

只需记住将该值更改为 ca 捆绑文件的实际路径。

这已经过测试并确认可以在 Windows 上运行,但也应该可以跨其他平台运行


0
投票

同样的问题,尝试使用公司网络的 API。 不幸的是,在类似的情况下,我不得不禁用 SSL 验证。我尝试添加 verify_ssl=False 的变体但不起作用,还尝试更新 conda、certifi 等以防万一。

然后我检查了各种api文档,甚至这里的代码库:https://github.com/openai/openai-python/blob/main/openai/api_requestor.py看看是否有任何提示并在那里看到:

def _make_session() -> requests.Session:
    if not openai.verify_ssl_certs:
        warnings.warn("verify_ssl_certs is ignored; openai always verifies.")

看起来开发者不支持禁用 ssl 作为原则。 当然,这只是一个猜测,我很高兴被证明是错误的:)

对于未能解决您的问题深表歉意 干杯!

事后思考:您可能会考虑尝试其他库/方法。在 https://beta.openai.com/docs/api-reference/introduction 中,他们说“您可以通过任何语言的 HTTP 请求、通过我们的官方 Python 绑定、我们的官方 Node.js 库或与 API 进行交互社区维护的图书馆。”


0
投票

在 Python 中使用

openai
库,以下内容对我有用,而无需使用
verify=False
或类似工具完全禁用 SSL 验证。

第 1 步:安装库

pip install httpx[http2]
pip install openai

第 2 步:将 Certify CA 证书添加到 HTTPX 客户端

from openai import OpenAI

import certifi
import httpx


ca_certs = certifi.where()
# or: 
#   import requests
#   ca_certs = requests.certs.where()

httpx_client = httpx.Client(http2=True, verify=ca_certs)

client = OpenAI(http_client=httpx_client)
© www.soinside.com 2019 - 2024. All rights reserved.