ssl 与OpenAI通信时出错:HTTPSConnectionPool(host ='api.openai.com',port=443):超过url的最大重试次数

14ifxucb  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(1407)

我使用的是EC2服务器,并在其上安装了SSL。我还使用A DNS记录连接了我的GoDaddy域。然而,当我调用OpenAI API时,

def call_openai(search_prompt, engine='text-davinci-003', temp=0.3, top_p=1.0, tokens=400, freq_pen=0.0, pres_pen=0.0, stop=['END']):
    prompt = search_prompt.encode(encoding='ASCII',errors='ignore').decode()
    response = openai.Completion.create(
        engine=engine,
        prompt=prompt,
        temperature=temp,
        max_tokens=tokens,
        top_p=top_p,
        frequency_penalty=freq_pen,
        presence_penalty=pres_pen,
        stop=stop)
    text = response['choices'][0]['text'].strip()
    return text

使用Python SDK时,我收到以下错误消息:

openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/engines/text-davinci-003/completions (Caused by SSLError(PermissionError(13, 'Permission denied')))

请注意,当我在浏览器中输入服务器的IP地址时,它似乎不安全,但我的域在使用它显示ec2内容时是安全的。
如何修复此错误?

ux6nzvsh

ux6nzvsh1#

从OpenAI下载根证书:
a.在Web浏览器中转到https://api.openai.com/v1/engines
B.单击URL旁边的锁定按钮并选择证书。
c.单击“详细信息”,然后单击“导出”。
d.将证书保存到计算机。
更新代码以使用下载的证书:
a.在Python文件的顶部,在任何其他导入或代码之前添加以下代码:
python复制代码

import os
os.environ['REQUESTS_CA_BUNDLE'] = '/path/to/OpenAI-Root.crt'

将/path/to/OpenAI-Root. crt替换为计算机上下载的证书的实际路径。
通过设置REQUESTS_CA_BUNDLE环境变量,您可以告诉requests库(由openai库使用)使用指定的根证书进行SSL验证。

相关问题