OpenAI は最近 ChatGPT の API インターフェースを更新しましたが、ある地域ではすぐにアクセスが制限されました。インターネット上にはさまざまな逆プロキシのチュートリアルがあります。cf work を使用するものや NGINX を使用するものなど、さまざまな方法があります。私も一つ書いてみます。
最初に#
traefik をインストールし、file provider ファイルディレクトリを設定していることを確認してください。
[providers]
[providers.file]
directory = "/etc/traefik/conf.d/"
Docker ファイルでは、対応するボリュームがマウントされています。以下のようになります。
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
# Add folder with dynamic configuration yml
- ./data/configurations://etc/traefik/conf.d/
設定#
data/configurations ディレクトリに openai.yaml ファイルを作成し、以下の内容を追加します。
http:
routers:
openai:
entryPoints:
- websecure
rule: "Host(`yourdomain.com`) && Path(`/v1/chat/completions`)"
service: openai
services:
openai:
loadBalancer:
passHostHeader: true
servers:
- url: "https://api.openai.com"
設定が完了したら、しばらく待って traefik ダッシュボードで設定が正しく読み込まれているか確認してください。
私はこれでうまくいくと思っていましたが、非コンテナサービスをプロキシできないようです。しかし、コンテナサービスの場合はこの設定で正常に動作します。私の使用方法に問題があるのでしょうか?わかる方は教えてください。ありがとうございます。
新しい方法を試してみました#
Docker イメージを作成しました。https://hub.docker.com/r/mirrors2/chatgpt-api-proxy
version: '3.7'
services:
chatgpt-api-proxy:
image: mirrors2/chatgpt-api-proxy
container_name: chatgpt-api-proxy
restart: unless-stopped
networks:
- traefik
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.chatgpt-api-proxy.entrypoints=websecure"
- "traefik.http.routers.chatgpt-api-proxy.rule=Host(`your.domains`)"
networks:
traefik:
external: true
これでうまくいきました。
Koyeb にもパブリックプロキシをデプロイしました(安定性は保証されません):
https://chatgpt.mirrors2.eu.org