DDNS环境下的copilot-gtp4私有化部署指南

国内使用ChatGPT主要面临两个问题,一个是支付,一个是网络。但是国内使用GitHub Copilot是畅通无阻的,对于个人开发者来说,每个月只需要$10。但是Copilot毕竟是编程语言的场景。有没有一种方式能够通过Copilot使用自然语言进行交互呢?答案不仅是可以,而且底层就是ChatGPT. 而这种方式就是copilot-gpt4-service.

项目本身非常有意思,自带的说明写得挺详细。自己尝试安装了一下,针对自己的使用场景有些问题做了简单的记录。

安装copilot-gpt4-service

推荐使用docker:

docker run -d \
--name copilot-gpt4-service \
--restart always \
-p 9010:8080 \
-e HOST=0.0.0.0 \
aaamoon/copilot-gpt4-service:latest

如果对golang很熟悉,也可以从源码安装。需要自己指定配置文件.configenv,参考格式:

HOST=0.0.0.0 # 服务监听地址,默认为 0.0.0.0。
PORT=8080 # 服务监听端口,默认为 8080。
CACHE=true # 是否启用持久化,默认为 true。
CACHE_PATH=db/cache.sqlite3 # 持久化缓存的路径(仅当 CACHE=true 时有效),默认为 db/cache.sqlite3。
DEBUG=false # 是否启用调试模式,启用后会输出更多日志,默认为 false。
LOGGING=true # 是否启用日志,默认为 true。
LOG_LEVEL=info # 日志级别,可选值:panic、fatal、error、warn、info、debug、trace(注意:仅当 LOGGING=true 时有效),默认为 info。
COPILOT_TOKEN=ghp_xxxxxxx # 默认的 GitHub Copilot Token,如果设置此项,则请求时携带的 Token 将被忽略。默认为空。
SUPER_TOKEN=randomtoken,randomtoken2 # Super Token 是用户自定义的 Token,用于对请求进行鉴权,若鉴权成功则会使用上方的 COPILOT_TOKEN 处理请求。多个 Token 以英文逗号分隔。默认为空。设置该项可以帮助用户在不泄漏 COPILOT_TOKEN 的情况下分享服务给他人使用。
ENABLE_SUPER_TOKEN=false # 是否启用 Super Token 鉴权,默认为 false。如果未启用但 COPILOT_TOKEN 不为空,则所有请求都会在不鉴权的情况下使用 COPILOT_TOKEN 处理。
CORS_PROXY_NEXTCHAT=false # 启用后,可以通过路由 /cors-proxy-nextchat/ 上为 NextChat 提供代理服务。配置 NextChat 云同步时,如本地部署方式则设置代理地址为:http://localhost:8080/cors-proxy-nextchat/
RATE_LIMIT=0 # 每分钟允许的请求数,如果为 0 则没有限制,默认为 0。

安装客户端 – OpenCat

我自己比较喜欢在手机上用OpenCat, 这里需要注意的是需要从美区下载的版本才能设置OpenAI,国区不支持。另外,当前(2024-01-31)似乎支持订阅制使用高级功能了,以前是可以一次性买断,略微遗憾。不过还是推荐这个APP,即使是免费版,功能也够用,APP的交互和审美设计都很过关,且没有乱七八糟的广告,还要什么自行车。

需要注意的是在APP里面设置OpenAI地址需要使用https协议。从安全和隐私角度,这个要求非常合理。作为一个gopher,自然是是通过Caddy来解决。只不过因为我的把copilot-gpt4-service部署在家里的内网服务器,因此有一层DDNS。

使用caddy解决https问题

因为有DDNS,我自己的域名托管商是DNSPod,因此需要下载下载带有特定DNS Provider的版本,也可以使用xcaddy工具自己编译:

xcaddy build --with github.com/caddy-dns/REPOSITORY

然后一切就绪以后提供一个参考的Caddyfile配置:

{
email YOUR_EMAIL
}

YOUR_DOMAIN:PORT {
reverse_proxy localhost:9010
tls {
dns dnspod ID,KEY
}
}

Have fun!

相关资料

–EOF–

版权声明
转载请注明出处,本文原始链接