国内使用ChatGPT的各种门槛无需多言,注册、升级、中转等各种问题让人抓狂。字节海外退出coze后,国内紧锣密鼓上线了扣子,无奈国内版扣子GPT4、DallE3等欠奉,效果很难令人满意,有人无力吐槽:“我要个云雀模型干嘛使“,客观点说,扣子和coze压根就不是一个平台。
Coze迭代后支持了GPT-4 Turbo 128k,长文本生成、pdf相关应用等理论上都可以支持,但coze仅限海外市场,国内IP不在服务支持范围,明明一家中国企业搞了个约等于GPTs的一站式AI平台,偏偏中国用户无法访问。所以,在可访问性还需要一番折腾。好在coze发布后,第一时间就有相应的开源应用诞生、发布,为曲线救国开辟了一条道路。
本文就详细介绍这种曲线救国的方法,划重点:无需VPS、本地直接访问、无需额外中转代理。基本原理就是将coze机器人发布、托管至其支持的社交平台(如discord),配置discord后,通过安装部署在render上的非官方代理(coze-discord-proxy)连接discord并作API转换,本地安装非官方客户端(nextchat),配置API网关(base_url)指向render上的代理。guang!done!
准备工作
要实现在国内本地访问海外版coze的目标,需要具备三个账号:一个海外版coze账号、一个discord账号、一个render账号。同时,国内除render可以直接稳定访问外,discord、海外版coze以及容器镜像源(docker或github)的访问都需要至少一个临时魔法。借助discord本地使用海外版coze分为四个步骤,分别是:
- 创建、配置discord应用/机器人并记录参数
- 创建、发布coze机器人至discord
- Render上安装、部署discord coze proxy开源应用提供API接口
- 本地安装并使用NextChat(ChatGPTNextWeb)或其他非官方AI应用调用render上的API接口
本文使用到的平台和开源应用包括:
整个过程中,renden平台国内可以直接访问,NextChat客户端可在此直接下载桌面端(「Windows cn」、「Windows en」 「Debian/Ubuntu」、「MacOS」),discord、coze的访问必须借助梯子。本人自用⚡高速VPN⚡有免费计划可自取。
创建、配置Discord应用/机器人
打开开发者模式、创建服务器
Discord注册环节略过,登录Discord后,在discord及discord开发平台分别创建服务器和2个机器人,过程很简单,重点是记录服务器、频道和机器人的各项标识和参数备用。discord中,点击界面左下方的代表用户设置的齿轮图标,调出用户设置对话框,选择『高级设置』,打开『开发者模式』。
接下来创建服务器,左侧导航栏点选加号图标,在弹出的『创建您的服务器』对话框中选择『亲自创建』。
之后可以结合服务器开放程度需要进行选择,这里实例选择了『仅供我和我的朋友使用』。
接下来自定义服务器,定义并输入服务器名称,是需要可上传服务器logo,然后点击『创建』就完成了服务器创建工作,右键点击左侧新出现的服务器图标,可以查看服务器ID。
创建、配置discord机器人并记录参数
前往「discord开发者平台」创建discord应用(discord bot)并进行配置和参数记录。
创建并配置第一个discord机器人
文中采用bot1指代第一个discord机器人。给bot1应用起个名字,勾选同意开发者政策复选框,点击『Create/创建』。
创建第一个机器人bot1后,在应用概述页面拷贝bot1的ID备用,即『Application ID』。下方的公钥Public Key本用例无需拷贝。
点击左侧导航栏中的『Bot』,点击『Reset Token』生成一个Token并拷贝。这里USERNAME处显示的机器人名称和左上角的机器人名称,因为要创建两个机器人,不要混淆。
弹出对话框中选择『Yes,do it!』生成token,之后就会出现『Copy』按钮,拷贝token备用。
token重置并拷贝后,我们还需要为bot1赋予权限,下拉后打开如下图三项,分别是『PRESENCE INTENT』、『SERVER MEMBERS INTENT』、『MESSAGE CONTENT INTENT』,再点击『Save Charges』保存权限状态更改。
创建并配置第二个discord机器人
回退至discord开发者平台」应用概述页面,创建第二个discord机器人,这里使用bot2指代。
bot2机器人创建及Applicatin ID、Token获取方法和过程同bot1。bot不需要进行额外的权限配置。
将bot1、bot2机器人邀请发布至刚刚创建的服务器
两个机器人创建后,可开发者平台进行切换选择。这里切换至第一个机器人bot1,左侧点选『OAuth2』。
点击『URL Gernerator』后,勾选bot,下方会弹出机器人发布至服务器中可获得的权限。
在下方勾选如图的权限项,分别是Manage Channels、Read Messages/View Channels、Send Messages、Send Messages in threads、Manage Messages、Read Message History等6项,每勾选一项,下方发布URL的permission字段都会发生变化,discord是以整数值对应相应权限的。
点击『Copy』按钮,将URL拷贝后,在新窗口或新标签页粘贴跳转,在打开的邀请发布页『添加至服务器』处,注意选择正确的计划发布的目标服务器,然后点击『继续』,授权保持各项勾选状态(就是之前在配置bot1时勾选的6项权限),点击『授权』。
后续可能需要进行人机验证,通过人机验证后,即完成了bot1的发布。discord自动跳转至server界面,下方会显示机器人“跳进了服务器”的提示。同时,每个服务器默认会有一个文字频道和语音频道。
bot2的发布同bot1,区别在于仅需配置Send Messages、Read Message History 权限,然后『Copy』发布URL即可。
bot1、bot2邀请发布完成后,discord中会有所提示。
完成discord机器人配置
最后,拷贝服务器ID和默认频道(文字频道 #常规)ID。
至此,discord中的bot创建、发布和参数记录完成。重点包括:
- bot1作为coze托管的机器人,bot2扮演“网关”角色,外部程序调用bot2,主动发起聊天
- 需要拷贝bot1的Application ID、Token,bot2的Token、服务器的ID和默认频道(文字频道 #常规)ID
- 对bot1的授权和对bot2的授权不同,bot2仅需授权发送、接收消息
创建coze机器人并发布至discord
在coze中创建并发布机器人的方法和详细过程请见「Coze:白嫖GPT4/GPT4V、DallE3创建、测试、发布专属机器人」,仅需注意两点:
- 区别于视频演示内容,可不添加任何提示词和开场白
- 模型当前可选择GPT4 Turbo(128k),插件建议选择GPT4V、DALLE 3、Google Web Search
发布coze机器人至discord需绑定bot1,也即填写bot1的Token。
点击『Save』保存后,勾选discord,再点击右上角的『Publish』就完成了coze机器人发布并绑定(托管)discord bot1的工作。
回到discord,就可以@bot1进行测试了,这里“@”的应为coze机器人的名称,输入@在弹出菜单中选择即可。
4.在Render上部署coze-discord-proxy
可点击「此处」注册render。除了0.1c CPU和512m 内存,Render的Free计划提供每个月总计750小时的实例(包括web servive)运行时间,也就是说只有1个实例的话,是可以长期不间断运行的。出口流量上,Freee计划是每月100GB,如果绑卡还可以额外增加,单纯个人自用的ChatGPT,100GB/M是足够的,虽然有休眠限制,但可以非常简单地通过定期发起连接请求解决。因此,推荐在桌面端安装第三方ChatGPT客户端而非在VPS或Serverless方式部署ChatGPT客户端。
有关render的注册使用可参考博文「在Render上部署LibreChat」,本文不展开。注意以下两方面:
- render无需fork repo,可以直接导入镜像,输入镜像名称deanxv/coze-discord-proxy,render会自动搜索docker官方源并拉取导入。
- 在创建web service的最后一步,点击『Add Environment Variable』逐项添加环境变量,分别为:
- BOT_TOKEN(discord bot2的token)
- GUILD_ID(服务器ID)
- COZE_BOT_ID(discord bot1的ID)
- CHANNEL_ID(频道ID)
- PROXY_SECRET(对应于NextChat的OpenAI API Key,可手动编写)
- TZ(时区 Asia/Shanghai)
点击『Create Web Service』之后,部署过程很快,部署完成render log中即有live提示。xxxx.onrender.com就是web service的域名,也是客户端调用OpenAI API时的BASE_URL。
5.本地客户端(NextChat)使用
这里我们安装、使用NextChat(ChatGPTNextWeb)的Windows客户端即可,多人共享需要在远程部署非官方ChatGPT应用。对应操作系统X64架构安装包,可在此分别下载「Windows cn」、「Windows en」 「Debian/Ubuntu」、「MacOS」。
安装NextChat后,仅需填写接口地址、API Key两项内容。
- 接口地址为render为web service分配的域名(https://xxxx.onrender.com),不要添加端口号
- API Key即为web service的环境变量PROXY_SECRET,NextChat中API Key默认不可为空,这也是在使用NextChat时需要在render web service环境变量中添加PROXY_SECRET可选参数的原因
前面的所有配置完成后,就可以开始每月怒省20刀,免费使用GPT4 Turbo(128k)之旅了,无需VPS、无需中转代理、无需魔法,而且无需考虑render的休眠机制,coze-discord-proxy的作者增加定时任务,会保持render上web service的激活状态。
需要注意的是,字节coze貌似对速率有所限制,所以不建议短时间高频次调用,确有生产任务可以进行适当分解为若干子任务。
我都配置完毕后,在discord页面也看到bot2发消息给AI,为什么AI没有回复,但我@AI 就会回复