Nodejs和python 设置 openai 的API正向代理和反向代理入口链接连接方式,用于国内访问openAI接口
由于国内对openai的API接口网址进行了屏蔽,因此需要科学上网或对API进行反向代理才能使用API接口,那么该怎么使用反向代理的API接口呢?
1. 对于Nodejs
1.1 方法一:使用自己反向代理的API地址
在Configuration列表中添加一项basePath即可,下面是代码:
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: process.env.OPENAI_API_KEY,
basePath: "https://api.youraddress.com/v1",//在这里设置就可以了
});
const openai = new OpenAIApi(configuration);
const completion = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [{role: "user", content: "Hello world"}],
});
console.log(completion.data.choices[0].message);
1.2 方法二:在Nodejs中使用正向代理
在nodejs的代码中配置代理,添加下面的代码在nodejs 的正式代码之前:
process.env.HTTP_PROXY = "http://your.proxy.address:port"
process.env.HTTPs_PROXY = "http://your.proxy.address:port"
2. 对于Python
2.1 方法一:使用自己反向代理的API地址
对openai对象设置api_base 的参数即可:
#老版本,过时了,1.2已经不支持了
openai.api_base = "https://api.youraddress.com/v1" #在这里设置即可,需要特别注意这里的/v1是必须的,否则报错。前面的地址注意替换即可。
2023年11月10日更新,支持1.2版本
from pathlib import Path
from openai import OpenAI
client = OpenAI(
base_url="https://myapi.myapi.com/v1",
api_key="your_api_key"
)
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
)
print(completion.choices[0].message)
2.2 方法二:在python中使用正向代理
直接通过openai.proxy设置openai的代理:
import os
import openai
#已经过时了
openai.api_key = "yourAPIKey"
openai.proxy = "http://your.proxy.address:port" #在这里设置你的代理信息即可
2023年11月10日更新,支持1.2版本
from pathlib import Path
from openai import OpenAI
# 在代码开始部分添加
import os
proxy_url = 'http://127.0.0.1'
proxy_port = '8080'
# Set the http_proxy and https_proxy environment variables
os.environ['http_proxy'] = f'{proxy_url}:{proxy_port}'
os.environ['https_proxy'] = f'{proxy_url}:{proxy_port}'
# 在代码开始部分添加
client = OpenAI(
api_key="your_api_key"
)
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
]
)
print(completion.choices[0].message)
或者
import httpx
from openai import OpenAI
client = OpenAI(
api_key="",
http_client=httpx.Client(
proxies="http://127.0.0.1:7890",
transport=httpx.HTTPTransport(local_address="0.0.0.0"),
),
)