0


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

    使用别人封装好的接口:

参数名类型长度必须备注apiKeyString64是OpenAI 的 ApiKeysessionIdString64是会话ID,关联上下文,推荐使用UUID作为sessionIdcontentString1000是发送的内容
代码示例如下,只需要将‘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_address

your_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)


本文转载自: https://blog.csdn.net/qq_43704127/article/details/129740456
版权归原作者 qq_43704127 所有, 如有侵权,请联系我们删除。

“调用ChatGpt的API接口遇到问题详解”的评论:

还没有评论