调用ChatGpt的API接口遇到问题详解

        在调用ChatGpt的API接口时,由于需要科学上网,所以会遇到一些问题,按照调用API接口的目的,可分为两类:

一,调用API搭建对话机器人

        报错:openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host=’api.openai.com’, port=443): Max retries exceeded with url: /v1/engines/text-davinci-002/completions (Caused by SSLError(SSLEOFError(8, ‘EOF occurred in violation of protocol (_ssl.c:1129)’)))

        使用别人封装好的接口:

参数名类型长度必须备注
apiKeyString64OpenAI 的 ApiKey
sessionIdString64会话ID,关联上下文,推荐使用UUID作为sessionId
contentString1000发送的内容

        代码示例如下,只需要将‘apikey’处值修改为自己的apikey即可。

二,调用API接口使用GPT3或者GPT4算法处理相关NLP任务

        以概念抽取任务为例:

        问题:openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host=’api.openai.com’, port=443): Max retries exceeded with url: /v1/engines/text-davinci-002/completions (Caused by SSLError(SSLEOFError(8, ‘EOF occurred in violation of protocol (_ssl.c:1129)’)))

        解决方案:使用代理(proxy)来解决这个问题

        代码示例如下:

        这里需要使用你自己实际的代理地址和端口替换your_proxy_addressyour_proxy_port。这样,你的请求将通过指定的代理服务器发送。 

        这种情况下,由于OpenAI库没有api_client属性,所以会报错ttributeError: module ‘openai’ has no attribute ‘api_client’,此时需要创建一个继承自openai.api_resources.completion.Completion的新类,并重写_create方法。在这个新的_create方法中,可以指定代理设置。代码如下:

 

         同上,只需要将proxies中的代理地址和端口替换为自己的就可以了。如果这时候还是报错:openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host=’api.openai.com’, port=443): Max retries exceeded with url: /v1/engines/text-davinci-002/completions (Caused by SSLError(SSLEOFError(8, ‘EOF occurred in violation of protocol (_ssl.c:1129)’)))

         那么问题大概就是urllib3的版本问题了,将urllib3的版本退回至1.25.11版本问题就解决。

 运行结果如下:

 

参考链接:

OpenAI API代理 (openai-proxy.com)

解决OpenAI API 挂了 Dai Li 还是连接不上的问题 openai.error.APIConnectionError – 知乎 (zhihu.com)

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年5月31日
下一篇 2023年5月31日

相关推荐