当ChatGPT无法直接访问时,需要某个地方设置一个代理服务,如Nginx代理,接下来介绍如何设置API代理并保持流式输出的能力。
假设后端服务的地址为http://127.0.0.1:3000
,后端提供了流式返回的API能力,如果需要通过代理去访问该服务,Nginx的代理配置如下:
server {
listen 80;
listen [::]:80;
server_name _;
location / {
root /data/www/chat;
index index.html;
}
location /api {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Upgrade "";
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_cache off;
}
}
其中如下配置是设置支持流式返回:
代码语言:shell复制proxy_set_header Upgrade "";
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_cache off;
所以若直接代理ChatGPT的聊天API(https://api.openai.com/v1/chat/completions
),可以配置如下:
server {
listen 80;
listen [::]:80;
server_name _;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass https://api.openai.com/v1/chat/completions;
proxy_set_header Upgrade "";
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_cache off;
proxy_set_header X-XSS-Protection "1; mode=block";
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass_request_headers on;
proxy_pass_request_body on;
proxy_ssl_server_name on;
proxy_ssl_session_reuse off;
}
}
因为代理的是HTTPS请求,因此需要额外加一些SSL请求配置:
代码语言:shell复制proxy_set_header X-XSS-Protection "1; mode=block";
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass_request_headers on;
proxy_pass_request_body on;
proxy_ssl_server_name on;
proxy_ssl_session_reuse off;
当然也可以修改proxy_pass
配置实现更灵活的代理方式。