我正在尝试通过尝试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
有人知道如何解决这个问题吗?或者有人解决过这样的问题吗?有人可以建议一个可行的解决方案吗?
OpenAI 库在底层使用标准的 python 请求。这意味着您可以使用以下环境变量设置 CA 捆绑包(可在 Python 请求 - 如何使用系统 ca 证书 (debian/ubuntu)?)中找到。
名称:REQUESTS_CA_BUNDLE
值:/etc/ssl/certs/ca-certificates.crt
只需记住将该值更改为 ca 捆绑文件的实际路径。
这已经过测试并确认可以在 Windows 上运行,但也应该可以跨其他平台运行
同样的问题,尝试使用公司网络的 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 进行交互社区维护的图书馆。”
在 Python 中使用
openai
库,以下内容对我有用,而无需使用 verify=False
或类似工具完全禁用 SSL 验证。
pip install httpx[http2]
pip install openai
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)