songquanpeng / one-api

OpenAI 接口管理 & 分发系统,支持 Azure、Anthropic Claude、Google PaLM 2 & Gemini、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元,可用于二次分发管理 key,仅单可执行文件,已打包好 Docker 镜像,一键部署,开箱即用. OpenAI key management & redistribution system, using a single API for all LLMs, and features an English UI.
https://openai.justsong.cn/
MIT License
18.51k stars 4.18k forks source link

我已经通过HTTP_PROXY的环境变量设置带理,可以访问openai等外网,但是否可以设置某些国内服务不用代理 #859

Open lightfate opened 10 months ago

lightfate commented 10 months ago

例行检查

问题描述 我已经通过HTTP_PROXY的环境变量设置带理,可以访问openai等外网,但是否可以设置某些国内服务不用代理,比如千问不用代理,其他两个用代理,这样要怎么操作 image

Lichil commented 9 months ago

HTTP_PROXY 是全局变量,可以考虑在代理软件上面设置哪些域名或者 IP 直连,哪些IP 设置走代理 或者在环境变量上设置no_proxy 试试

suwubee commented 9 months ago

环境不设置代理,每个渠道设置代理。 如果要设置相同渠道不同模型的话,复制同样的渠道,筛选出模型,设置渠道优先级。

songquanpeng commented 9 months ago

参考 #883 该功能确实有意义,会支持,需要时间,希望理解,期待 PR

SkyLifewood commented 9 months ago

环境不设置代理,每个渠道设置代理。 如果要设置相同渠道不同模型的话,复制同样的渠道,筛选出模型,设置渠道优先级。

单个渠道设置代理怎么设代理?

D0rayak1 commented 9 months ago

Docker中环境设置HTTP_PROXY吗,我设置了不生效啊,终端也进不去

lightfate commented 9 months ago

Docker中环境设置HTTP_PROXY吗,我设置了不生效啊,终端也进不去

目前我是通过启动docker时设置这两个环境变量进行点 HTTP_PROXY xxxxxxxxx HTTPS_PROXY xxxxxxxxx

ShanySky commented 7 months ago

在docker启动命令中增加一个no_proxy的环境变量即可。 示例:

docker run --name one-api \
-d --restart always \
-p 3000:3000 \
-v ./data:/data \
-e TZ=Asia/Shanghai \
-e HTTP_PROXY=http://172.17.0.1:7890 \
-e HTTPS_PROXY=http://172.17.0.1:7890 \
-e no_proxy=dashscope.aliyuncs.com \
justsong/one-api

其中的 -e no_proxy=dashscope.aliyuncs.com 表示通义千问接口地址不走代理

ShanySky commented 7 months ago

在docker启动命令中增加一个no_proxy的环境变量即可。 示例:

docker run --name one-api \
-d --restart always \
-p 3000:3000 \
-v ./data:/data \
-e TZ=Asia/Shanghai \
-e HTTP_PROXY=http://172.17.0.1:7890 \
-e HTTPS_PROXY=http://172.17.0.1:7890 \
-e no_proxy=dashscope.aliyuncs.com \
justsong/one-api

其中的 -e no_proxy=dashscope.aliyuncs.com 表示通义千问接口地址不走代理

需要注意的是默认情况下容器与宿主机所在局域网是处于不同网段的,无法直接访问到宿主机所在局域网内的其他机子的代理服务,如下面的启动命令示例是无法访问到代理服务的:

docker run --name one-api \
-d --restart always \
-p 3000:3000 \
-v ./data:/data \
-e TZ=Asia/Shanghai \
-e HTTP_PROXY=http://192.168.0.63:7890 \
-e HTTPS_PROXY=http://192.168.0.63:7890 \
-e no_proxy=dashscope.aliyuncs.com \
justsong/one-api

这个示例假设代理服务部署在宿主机局域网的一台IP为192.168.0.63的机子上,由于容器与其不在同一网段是无法直接访问到的。这种情况可以考虑在宿主机上通过nginx将该IP和端口上的服务映射到宿主机的某个端口上来实现访问。对了,映射完成后还需要设置防火墙,设置在docker网络上允许7890这个端口被访问。 另外,如果希望有多个域名或IP不走代理,可以在no_proxy参数中用逗号分隔来设置,如 127.0.0.1,dashscope.aliyuncs.com,xxx.xxx.com

linth2005 commented 6 months ago

这功能属于代理软件的功能,不应在one-api中实现,且代理软件早就有各种规则支持了