socks代理怎么调用OpenAi API
根本原因:
openai
调用aiohttp
库实现流式返回。aiohttp
包不支持socks
怎么改造,可以是Socks代理支持调用OpenAi API呢?
这边针对两个版本的改造
目前测试版本可行:0.28.0 和 1.13.1【目测大致可以分为1.0以下 和 1.0以上,各位去试下就行】
依赖包安装:
pip install pysocks
pin install openai==0.28.0 或者 pin install openai 直接安装最新版
openai==1.13.1
的版本:
在自己的代码中加上如下代码:
import socket
import socks
# 127.0.0.1 1086 可能不一样,具体看下自己当前网络的代理地址,注意这边一定是 PROXY_TYPE_SOCKS5
socks.set_default_proxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 1086)
socket.socket = socks.socksocket
创建会话需要改造成:
# 创建会话实例
res = openai.chat.completions.create(model=model,messages=messages,temperature=0)
# 返回消息结果
return res.choices[0].message.content
注意:如果改造完出现 request time out
类似的报错,多试几次就行。
openai==0.28.0
的版本:
在自己的代码中加上如下代码:
import socket
import socks
# 127.0.0.1 1086 可能不一样,具体看下自己当前网络的代理地址,
# 注意这边可以是 socks.SOCKS5 也可以是 socks.PROXY_TYPE_SOCKS5
socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 1086)
socket.socket = socks.socksocket
创建会话需要改造成:
# 创建会话实例
res = openai.ChatCompletion.create(model=model, messages=messages, temperature=0)
# 返回消息结果
return res.choices[0].message.content
至于那些说要改造什么api_requestor.py
全是胡扯一堆,反正我设置完这个就行。
但是有个一点需要注意:socks.SOCKS5
只能在低版本中使用,高版本需要使用PROXY_TYPE_SOCKS5
否则会出现如错误:
httpcore.ConnectError: Error connecting to SOCKS5 proxy 127.0.0.1:1086: [Errno 61] Connection refused