搭建ChatGPT Telegram Bot
写在前面
此教程旨在搭建一个可以与chatgpt
对话的teletgram bot
,只使用免费的ChatGPT额度,而无需使用付费的API key,支持上下文。同样这种方式带来的风险需要自己承担,如使用IP被封锁的原因导致账号被block
,请仔细考虑后决定是否使用本套搭建方案。
准备
- Telegram 账号
- Open AI 账号
- 服务器 (需要安装
python 3.10+
&Go
)
注册Telegram Bot
创建一个Telegram账号
如果你还没有Telegram账号,首先需要在手机上下载Telegram应用并创建一个账号。这个账号将用于管理你的Bot。
与BotFather对话
- 打开Telegram应用,在搜索栏中搜索"BotFather"。
- 选择"BotFather"账号并开始与它聊天。
- 发送命令
/newbot
以创建一个新的Bot。
设置Bot的名称和用户名
- 在创建新Bot的对话中,BotFather会要求你为Bot命名。发送一个你想要的名字,比如"MyAwesomeBot"。
- 接下来,BotFather会要求你为Bot设置一个用户名,该用户名必须以"Bot"结尾。例如,你可以选择"AwesomeBot"作为用户名。
- 一旦完成,BotFather会发送一条包含你的Bot Token的消息给你。
获取Bot Token
Bot Token是与你的Bot通信的关键凭证。它是一个类似于下面的字符串:
1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi
请务必妥善保管好这个Token,不要分享给其他人,因为拥有该Token的人可以完全控制你的Bot。
运行TelegramBot服务端
克隆仓库并进入目录:
git clone https://github.com/peanut996/chatgpt-telegram-bot.git cd chatgpt-telegram-bot
编辑配置文件:
vim config.yaml
在这个配置文件中,你需要提供以下信息:
- Telegram Bot的信息:类型、Token(你的Telegram Bot Token)。
- chatgpt-engine的信息:端口号和主机地址。
这个项目的Telegram Bot部分只是一个控制程序,实际的聊天交流还是依赖于chatgpt-engine。因此,在开始之前,请确保你已经运行了chatgpt-engine服务。
以下是配置文件(config.yaml)的详细说明:
bot: type: telegram token: <your tg bot token> # 替换为你的Telegram Bot Token engine: port: 127.0.0.1 # chatgpt-engine服务的端口号 host: 5000 # chatgpt-engine服务的主机地址
下载依赖并运行:
go build . ./chatgpt-telegram-bot # 也可以使用参数'-c'指定配置文件位置 ./chatgpt-telegram-bot -c <path to your config.yaml>
nohup
可以将服务运行在后台,以便session关闭后仍然能继续访问:nohup ./chatgpt-telegram-bot &
测试
找到你创建的telegram机器人,发送 /ping
命令,如果机器人回复 pong
则证明服务端启动成功。可以使用这个来判断服务是否正确启动然后随便发送一句话,会得到回复
Chatgpt engine is not ready, please wait a moment.
😇ChatGPT 引擎还没有准备好,请稍等一下
这是因为chatgpt-engine还没有运行,如果该服务已启动那么则会正确回复。
下面将介绍如何继续启动chatgpt-engine模块
获取Open AI Account AccessToken
你可以通过登录官方网站,然后从浏览器存储的cookie中提取出access token
。不过,这种方法存在一定的风险,而且可能会比较繁琐。
为了方便起见,以下链接提供了一种获取token的方法,来自Pandora作者:获取Token链接。在输入你的账号凭证并点击获取按钮后,你将会得到一个以以下内容开头的token:
eyJhbGciOiJSUzI15cCI6IkpXVCIsImtpZCI6Ik1UaEVOVUpHTkVNMVFURTRNMEZCTWpkJodHInwsadgwzsf...
这个token就是open ai accout的Access Token。请注意,该token的有效期为 expires_in
: 1209600 秒,意味着在此时间过后需要重新获取,以确保持续使用。
同样在此页面上会同时获得一个 refresh_token
保存这个token就可以自动刷新获取最新的access token
, 而无需手动更新配置文件
后端(ChatGPT-Engine)
下载代码&安装依赖
git clone https://github.com/peanut996/chatgpt-engine.git
cd chatgpt-engine/
# 安装依赖
pip install -r requirements.txt
在某些版本的linux发行版上已经不允许直接使用系统的python进行安装依赖,可以使用虚拟环境:
# 创建名为venv虚拟环境
python -m venv venv
# 激活虚拟环境
source venv/bin/activate
编写配置
首先需要准备好配置文件,如下所示:
engine:
port: 5000
debug: false
host: 127.0.0.1
chatgpt:
tokens:
- "账号:密码:<access token>:<refresh_token>" #这里是以冒号分隔
配置文件详解:
port
:指定服务要监听的端口号。debug
:设置是否启用调试模式。host
:指定服务绑定的主机地址。chatgpt
:这似乎是一个命名空间,可能包含与ChatGPT集成相关的设置。tokens
:这是一个列表,包含用于身份验证的令牌(tokens)。由三部分组成,用冒号分隔:账号、密码、AccessToken
和RefreshToken
将上面的配置写入config.yaml
即可
运行
配置文件编写完成后直接使用以下命令即可运行后端:
python main.py
# 也可以使用 '-c' 指定配置文件目录
python main.py -c ./config.yaml
可以如下请求来验证服务是否正确启动:
curl http://localhost:5000/ping
如果响应为pong
则说明服务器启动完毕
nohup
可以将服务运行在后台,以便session关闭后仍然能继续访问:
nohup python main.py &
设置代理
因为Open AI对于IP的限制比较严重,所以在无法直接使用的场景下需要设置中转代理
这里推荐使用潘多拉作者的代理:https://ai.fakeopen.com/api/
# 设置环境变量
export CHATGPT_BASE_URL="https://ai.fakeopen.com/api/"
# 启动服务
python main.py
# 或者
CHATGPT_BASE_URL="https://ai.fakeopen.com/api/" python main.py
你可以通过登录官方网站,然后从浏览器存储的cookie中提取出access token
。不过,这种方法存在一定的风险,而且可能会比较繁琐。
为了方便起见,以下链接提供了一种获取token的方法,来自Pandora作者:获取Token链接。在输入你的账号凭证并点击获取按钮后,你将会得到一个以以下内容开头的token:
eyJhbGciOiJSUzI15cCI6IkpXVCIsImtpZCI6Ik1UaEVOVUpHTkVNMVFURTRNMEZCTWpkJodHInwsadgwzsf...
这个token就是你接下来所需的Access Token。请注意,该token的有效期为 “expires_in”: 1209600 秒,意味着在此时间过后需要重新获取,以确保持续使用。
🎉 恭喜,一个可以与ChatGPT对话的Telegram Bot就部署完成了!