项目简介
chatgpt-telegram-bot-serverless 是一个功能强大的 Telegram 机器人,它让用户可以直接通过 Telegram 与 ChatGPT 进行交流。这个机器人利用了全新发布的 ChatGPT API,并完全部署在 AWS Lambda 上,实现了无服务器化,用户无需设置本地服务器,也不需要通过浏览器登录即可使用。
功能特性
- 支持全新 ChatGPT API:机器人通过最新的 API 技术,实现智能对话功能。
- 支持语音消息:用户不仅可以发送文字,也可以通过语音与 ChatGPT 进行沟通。
- 支持 Markdown 格式渲染:用户发送的 Markdown 文本能得到良好的显示效果。
初始设置
要使用这个 Telegram 机器人,用户需要完成以下步骤:
- 创建一个 OpenAI 账户,并获取 API Key。
- 创建一个 AWS 账户。
- 设置 Telegram 机器人,并获取机器人令牌。
为了支持语音消息,需要在 AWS 账户中创建一个 S3 存储桶。
- 在 AWS 管理控制台中搜索 S3 并点击创建存储桶。
- 在配置过程中,输入一个全球唯一的存储桶名称并创建。
- 在
.chalice/config.json
文件中设置以下配置:- 将
TELEGRAM_TOKEN
设置为你的 Telegram 令牌。 - 将
OPENAI_API_KEY
设置为你的 OpenAI API 令牌。 - 将
VOICE_MESSAGES_BUCKET
设置为你刚创建的存储桶名称。
- 将
安装步骤
- 使用 pyenv 或其他 Python 安装工具安装 Python。
- 创建一个虚拟环境:
python3 -m venv .venv
。 - 激活虚拟环境:
source .venv/bin/activate
。 - 安装项目依赖:
pip install -r requirements.txt
。 - 安装 AWS CLI 并配置你的凭据。
部署
- 运行
chalice deploy
部署项目。 - 在 AWS 控制台中,导航到 Lambda -> chatgpt-telegram-bot-dev-message-handler-lambda -> 配置 -> 函数 URL。
- 点击创建函数 URL,设置认证类型为 NONE。
- 复制生成的函数 URL。
- 在 Telegram 中设置 Webhook,使其指向 AWS Lambda 仓库,命令如下:
curl --request POST --url https://api.telegram.org/bot<YOUR_TELEGRAM_TOKEN>/setWebhook --header 'content-type: application/json' --data '{"url": "YOUR_FUNCTION_URL"}'
完成以上步骤后,用户即可在 Telegram 中找到并使用 ChatGPT 机器人啦!
未来计划
- 支持会话中的代币自动刷新。
- 提高响应性能。
- 增加 ChatGPT 服务错误处理。
- 通过 CloudFormation 一键部署解决方案(计划中)。
致谢
特别感谢以下开源项目的支持和启发:
- ChatGPT Telegram Bot - @altryne
- whatsapp-gpt
- ChatGPT Reverse Engineered API
通过这些基础和当前技术的结合,chatgpt-telegram-bot-serverless 项目成为了一个简单易用,功能强大的工具,使得用户可以轻松体验到与 ChatGPT 的对话乐趣。