调用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)')))

        使用别人封装好的接口:

参数名 类型 长度 必须 备注
apiKey String 64 OpenAI 的 ApiKey
sessionId String 64 会话ID,关联上下文,推荐使用UUID作为sessionId
content String 1000 发送的内容

        代码示例如下,只需要将‘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)

猜你喜欢

转载自blog.csdn.net/qq_43704127/article/details/129740456