opvexe / go-chatgpt-api

一个尝试绕过 Cloudflare 来使用 ChatGPT 接口的程序(支持 GPT-4)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

go-chatgpt-api

一个尝试绕过 Cloudflare 来使用 ChatGPT 接口的程序


支持接口

范例(URL 和参数基本保持着和官网一致,部分接口有些许改动),部分例子,不是全部,理论上全部基于文本传输的接口都支持

https://github.com/linweiyuan/go-chatgpt-api/tree/main/example (需安装 HTTP Client 插件)


使用的过程中遇到问题应该如何解决

汇总贴:linweiyuan#74

如果有疑问而不是什么程序出错其实可以在 Discussions 里发而不是新增 Issue

群聊:linweiyuan#197


配置

如需设置代理,可以设置环境变量 GO_CHATGPT_API_PROXY,比如 GO_CHATGPT_API_PROXY=http://127.0.0.1:20171 或者 GO_CHATGPT_API_PROXY=socks5://127.0.0.1:20170,注释掉或者留空则不启用

如果代理需账号密码验证,则 http://username:password@ip:port 或者 socks5://username:password@ip:port

如需配合 warp 使用:GO_CHATGPT_API_PROXY=socks5://chatgpt-proxy-server-warp:65535,因为需要设置 warp 的场景已经默认可以直接访问 ChatGPT 官网,因此共用一个变量不冲突(国内 VPS 不在讨论范围内,请自行配置网络环境,warp 服务在魔法环境下才能正常工作)

家庭网络无需跑 warp 服务,跑了也没用,会报错,仅在服务器需要

GPT-4 相关模型目前需要验证 arkose_token,如果配置 GO_CHATGPT_API_ARKOSE_TOKEN_URL 则使用在线服务获取 arkose_token ,不设置或者留空则由程序内部自己生成(推荐优先使用这种)

GO_CHATGPT_API_ARKOSE_TOKEN_URL 可选值:

如果用以上方法还是 403 并且你的 Plus 没有过期,则有一种可能就是你的账号被风控了,可以尝试用这个账号打开官网,看下会不会弹验证码,然后手动处理下,接着再回来看 go-chatgpt-api 还会不会 403


根据你的网络环境不同,可以展开查看对应配置

直接利用现成的服务

服务器不定时维护,不保证高可用,利用这些服务导致的账号安全问题,与本项目无关

家庭网络
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080
    environment:
      - TZ=Asia/Shanghai
      - GO_CHATGPT_API_PROXY=
      - GO_CHATGPT_API_PANDORA=
      - GO_CHATGPT_API_ARKOSE_TOKEN_URL=
      - GO_CHATGPT_API_ARKOSE_PUID=
    restart: unless-stopped
服务器在直连或者通过网络代理的情况下可以正常访问 ChatGPT
  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080
    environment:
      - TZ=Asia/Shanghai
      - GO_CHATGPT_API_PROXY=
      - GO_CHATGPT_API_PANDORA=
      - GO_CHATGPT_API_ARKOSE_TOKEN_URL=
      - GO_CHATGPT_API_ARKOSE_PUID=
    restart: unless-stopped
服务器访问 ChatGPT 提示 "Sorry, you have been blocked"

如何验证:curl https://chat.openai.com | grep '<p>' | awk '{$1=$1;print}'

  go-chatgpt-api:
    container_name: go-chatgpt-api
    image: linweiyuan/go-chatgpt-api
    ports:
      - 8080:8080
    environment:
      - TZ=Asia/Shanghai
      - GO_CHATGPT_API_PROXY=socks5://chatgpt-proxy-server-warp:65535
      - GO_CHATGPT_API_PANDORA=
      - GO_CHATGPT_API_ARKOSE_TOKEN_URL=
      - GO_CHATGPT_API_ARKOSE_PUID=
    depends_on:
      - chatgpt-proxy-server-warp
    restart: unless-stopped

  chatgpt-proxy-server-warp:
    container_name: chatgpt-proxy-server-warp
    image: linweiyuan/chatgpt-proxy-server-warp
    environment:
      - LOG_LEVEL=OFF
    restart: unless-stopped

目前 warp 容器检测到流量超过 1G 会自动重启,如果你知道什么是 teams-enroll-token (不知道就跳过),可以通过环境变量 TEAMS_ENROLL_TOKEN 设置它的值,然后利用这条命令来检查是否生效

docker-compose exec chatgpt-proxy-server-warp warp-cli --accept-tos account | awk 'NR==1'

Account type: Free (没有生效)

Account type: Team (设置正常)

如果要让运行的镜像总是保持最新,可以配合这个一起使用(官方文档 可以设置哪些容器不更新,请自行查看):

services:
  watchtower:
    container_name: watchtower
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 3600
    restart: unless-stopped

这个只会更新新镜像,旧的镜像如果没手动删除还会在本地,如果新镜像不适用,将 <none> 镜像重新打 tag 即可,比如:docker tag <IMAGE_ID> linweiyuan/go-chatgpt-api,这样就完成了回滚

(本项目没有计划写更新日志和做历史版本管理)


如何集成其他第三方客户端

环境变量

CHATGPT_BASE_URL=https://go-chatgpt-api.linweiyuan.com/chatgpt/backend-api/

config.cfg

[openai]
browserless_endpoint = "https://go-chatgpt-api.linweiyuan.com/chatgpt/backend-api/"

环境变量

API_REVERSE_PROXY=https://go-chatgpt-api.linweiyuan.com/chatgpt/backend-api/conversation

环境变量

go-chatgpt-api: GO_CHATGPT_API_PANDORA=1

pandora: CHATGPT_API_PREFIX=https://go-chatgpt-api.linweiyuan.com

application.yaml

proxy:
  url: https://go-chatgpt-api.linweiyuan.com

如何控制打包行为

Fork 此项目后,可以在 Settings-Secrets and variables-Actions 下控制如下行为: Secrets 页添加 DOCKER_HUB_TOKEN 即可自行打包推送到个人的 Dockerhub 账户下(如何申请 token

Variables 页添加 USE_GHCR=1 即可推送到个人的 GHCR 仓库(需要开启仓库的写入权限Variables 页添加 PLATFORMS=linux/amd64,linux/arm64 即可同时打包 amd64 和 arm64 的架构的镜像(缺省情况下只会打包 amd64)


相关博客(程序更新很多次,文章的内容可能和现在的不一样,仅供参考):ChatGPT


最后感谢各位同学

Made with contrib.rocks.


广告位

Vultr 推荐注册

通过这条链接进去注册登录,并充值 $10,然后创建服务器用至少一个月,我可以得到佣金


微信赞赏码(经济条件允许的可以考虑支持下):

About

一个尝试绕过 Cloudflare 来使用 ChatGPT 接口的程序(支持 GPT-4)

License:MIT License


Languages

Language:Go 99.5%Language:Dockerfile 0.5%