1. 项目概述:一个全能AI助手的自建之路
如果你和我一样,是个喜欢折腾的技术爱好者,同时又对市面上各种AI助手(ChatGPT、Copilot、Gemini等)的切换使用感到麻烦,那么今天分享的这个项目,你一定会感兴趣。我最近花了不少时间,成功部署并深度使用了一个名为GPT-Telegramus的开源项目。简单说,它就是一个能让你在Telegram里,通过一个机器人,无缝切换调用多个主流AI大模型(包括免费的!)的“瑞士军刀”。
这个项目的核心价值在于“聚合”与“自由”。你不再需要为了用Copilot去开Edge浏览器,为了用Gemini去访问特定网页,或者为了用某个需要特定网络环境的服务而头疼。所有对话都聚合在你最熟悉的Telegram里,历史记录清晰可查,并且由于是自托管,你的对话数据完全掌握在自己手中。我最初是被它支持微软Copilot(原Bing AI)的免费、联网搜索和图片理解功能所吸引,后来发现它还能集成Gemini、Groq等,甚至支持流式响应、多语言和管理员功能,这让我决定深入折腾一番,并把完整的搭建、配置和深度使用心得记录下来。
无论你是想给自己搭建一个24小时在线的私人AI助理,还是想为一个小团队提供内部AI工具,甚至只是想学习如何将多个API服务整合到一个机器人里,这篇文章都将提供一份从零开始、可直接“抄作业”的详细指南。我会涵盖Linux服务部署、Docker容器化、各个模块的详细配置解析,以及我在实际使用中踩过的坑和总结的优化技巧。
2. 核心架构与模块解析
在动手部署之前,理解GPT-Telegramus的架构和各个模块的工作原理至关重要。这能帮助你在配置时做出正确选择,并在出现问题时快速定位。
2.1 整体工作流设计
GPT-Telegramus的核心是一个基于python-telegram-bot框架的机器人服务。它的工作流可以概括为以下几步:
- 用户交互:用户在Telegram中向机器人发送消息或命令。
- 消息路由:机器人后端接收到消息,根据用户当前选择的“模块”(如
lmao_ms_copilot、gemini等),将请求路由到对应的处理函数。 - API调用:处理函数会按照对应AI服务的API要求,封装用户请求(包括可能的聊天历史、图片附件等),并通过网络发送出去。这里的关键在于,项目使用了不同的底层库来适配不同服务:
- ChatGPT & Copilot (免费版):依赖于作者另一个项目LMAO API,这是一个旨在提供类浏览器访问体验的非官方开源API。
- Gemini:使用Google官方的
google-generativeaiPython SDK。 - Groq:使用Groq官方的
groqPython SDK。
- 响应处理与流式返回:获取AI服务的响应后,机器人会进行处理(如Markdown解析、消息长度分割、图片下载等),并以流式(逐字或分块)或非流式的方式将结果发送回Telegram客户端。
- 状态与数据管理:在整个过程中,机器人会维护用户的状态(当前模块、聊天历史、对话风格等),并可根据配置将对话内容记录到本地文件中。
这种模块化设计的好处是清晰且易于扩展。每个AI服务都是一个独立的“插件”,只要遵循项目定义的接口,理论上可以接入任何新的LLM服务。
2.2 核心模块深度解读
项目默认支持几个核心模块,每个都有其特点和使用场景:
💬 ChatGPT (免费版)
- 底层实现:基于
LMAO API。这不是OpenAI的官方API,而是通过模拟浏览器行为访问ChatGPT免费网页版实现的。这意味着它不需要OpenAI的付费API Key,但受限于网页版的可用性和稳定性。 - 能力:纯文本对话,支持聊天历史,支持流式响应。需要注意的是,由于是免费渠道,目前不支持GPT-4、文件上传、联网搜索等高级功能,且响应速度和稳定性可能不如官方API。
- 适用场景:对成本敏感,只需要基础文本对话功能的用户。
🟦 Microsoft Copilot (原Bing AI / EdgeGPT)
- 底层实现:同样基于
LMAO API的lmao_ms_copilot模块。这是本项目的明星功能。项目也保留了旧的ms_copilot模块(基于EdgeGPT),但已标记为弃用,推荐使用新的LMAO API版本。 - 核心优势:
- 完全免费:使用微软账户的免费额度。
- 联网搜索:可以获取最新信息(需在Web端开启“精确”模式,在Bot中可通过
/style命令切换)。 - 多模态输入:可以发送图片让AI识别并讨论图片内容(这是免费服务中非常罕见的能力)。
- 多风格对话:提供“创意”、“平衡”、“精确”三种对话风格。
- 引用来源:回复时会附带网络信息的引用链接。
- 配置关键:需要在
module_configs/lmao_ms_copilot.json中配置有效的微软账户Cookie。这是使用该模块的唯一门槛,也是配置中最需要小心的一步。 - 适用场景:绝大多数用户的首选,尤其是需要信息时效性、图片理解或不想付费的场景。
♊ Gemini
- 底层实现:使用Google官方
google-generativeai库,需要申请Google AI Studio的API Key。 - 能力:支持Gemini Pro模型对话,支持聊天历史,支持图片输入(你可以发送一张带文字的图片,Gemini能同时理解图文)。但注意,带图片的对话不会被记录到聊天历史中,这是当前API的限制。
- 特点:回复质量高,在逻辑和代码生成方面表现优异。拥有免费的每日请求额度,适合中度使用。
- 适用场景:需要高质量文本生成、代码编写,或需要进行图文混合分析的用户。
🔴 Groq
- 底层实现:使用Groq官方
groq库,需要在其官网申请API Key。 - 核心卖点:极致的速度。Groq使用独特的LPU(语言处理单元)硬件,推理速度极快,几乎是“秒回”。
- 能力:支持多个开源模型(如
llama2-70b-4096,mixtral-8x7b-32768),支持聊天历史。纯文本交互,速度是其最大优势。 - 适用场景:对响应延迟极其敏感,追求“实时对话”体验的用户。
实操心得:模块选择策略我个人通常将
lmao_ms_copilot作为主力,用于需要搜索、理解图片或进行开放性聊天的场景。当需要编写复杂的代码或进行深度逻辑推理时,我会切换到gemini。而在需要快速获取一个简单问题的答案,或者进行多轮快速问答时,groq的无与伦比的速度体验是最好的。你可以通过/module命令在它们之间快速切换。
3. 从零开始的部署实战
理论清晰后,我们进入实战环节。我将以最稳定、最便于维护的Linux系统服务部署方式为例,详细讲解每一步。如果你使用Docker,思路也基本一致,主要是配置文件的挂载方式不同。
3.1 基础环境准备
首先,你需要一台服务器(VPS)或一台长期开机的Linux电脑(如家里的树莓派或旧笔记本)。系统推荐Ubuntu 22.04 LTS或Debian 11/12。
步骤1:更新系统并安装基础工具
sudo apt update && sudo apt upgrade -y sudo apt install -y git curl wget vim步骤2:安装Python 3.11项目推荐Python 3.10或3.11。Ubuntu 22.04默认可能自带3.10,但为了更好的兼容性,我选择手动安装3.11。
# 安装编译依赖 sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev # 下载Python 3.11.9源码(可前往官网查看最新版本) wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz tar -xzf Python-3.11.9.tgz cd Python-3.11.9 # 配置、编译并安装。--enable-optimizations 参数会进行优化,但编译时间较长。 ./configure --enable-optimizations make -j $(nproc) # 使用所有CPU核心加速编译 sudo make altinstall # 使用altinstall避免覆盖系统默认python3 # 验证安装 python3.11 --versionaltinstall会将其安装为python3.11命令,而不会替换掉系统原有的python3(可能是3.10)。这样更安全。
步骤3:安装pip及虚拟环境工具
# 为python3.11安装pip curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.11 # 安装venv模块(通常已包含,但确保一下) sudo apt install -y python3.11-venv3.2 获取项目与配置核心
步骤4:克隆项目代码
cd ~ git clone https://github.com/F33RNI/GPT-Telegramus.git cd GPT-Telegramus步骤5:创建并激活虚拟环境虚拟环境能将项目依赖与系统Python环境隔离,是Python项目的最佳实践。
python3.11 -m venv venv source venv/bin/activate激活后,命令行提示符前会出现(venv)字样。后续所有操作都应在此虚拟环境下进行。
步骤6:安装项目依赖
pip install -r requirements.txt --upgrade这个过程会安装python-telegram-bot,google-generativeai,groq等所有必要的库。请保持网络通畅。
步骤7:核心配置文件详解与修改这是整个部署过程中最关键且最容易出错的一步。项目配置分为主配置和模块配置。
1. 主配置文件config.json:用编辑器打开它,我们逐一分析关键字段:
{ “telegram_token”: “YOUR_BOT_TOKEN_HERE”, “admin_id”: [YOUR_TELEGRAM_USER_ID], “language”: “eng”, “data_collecting”: { “enabled”: false, “path”: “./collected_data/” }, “files”: { “config”: “./config.json”, “langs”: “./langs/”, “module_configs”: “./module_configs/” } }telegram_token:必须修改。前往Telegram找@BotFather创建一个新机器人,它会给你这个Token。admin_id:必须修改。你的Telegram用户ID。你可以通过给@userinfobot这个机器人发送/start来获取。这是一个数字。language:设置默认语言,例如“eng”(英文)或“zho”(中文)。data_collecting:是否启用数据收集。出于隐私考虑,除非你有明确需求且告知了用户,否则建议保持false。如果启用,所有对话的请求和回复会以文本形式保存在指定路径。files:配置文件路径,通常保持默认即可。
2. 模块配置文件module_configs/:每个模块都有一个对应的JSON文件。你需要至少配置一个你想用的模块。
配置Gemini (
gemini.json):{ “enabled”: true, “api_key”: “YOUR_GEMINI_API_KEY_HERE”, “model”: “gemini-pro”, “stream”: true }去 Google AI Studio 创建一个API Key并填入。
stream: true启用流式输出,体验更好。配置Groq (
groq.json):{ “enabled”: true, “api_key”: “YOUR_GROQ_API_KEY_HERE”, “model”: “mixtral-8x7b-32768”, “stream”: true }去 Groq Cloud 创建一个API Key并填入。
配置Copilot (
lmao_ms_copilot.json) – 最复杂的一步:{ “enabled”: true, “cookies”: [ { “name”: “_U”, “value”: “YOUR_COOKIE_VALUE_HERE” } ], “proxy”: “”, “stream”: true }这里的
cookies需要你从已登录Copilot的浏览器中提取。方法如下:- 在Chrome或Edge浏览器中,登录你的微软账户,并访问 bing.com/chat 。
- 按
F12打开开发者工具,切换到Application(应用)标签页。 - 在左侧
Storage(存储)下找到Cookies,点击https://www.bing.com。 - 在右侧列表中,找到名为
_U的Cookie,将其Value(值)完整地复制出来。 - 将其粘贴到配置文件的
“value”字段中。
重要警告:
_UCookie 等同于你的账户登录凭证。绝对不要分享给任何人,也不要将其提交到公开的Git仓库。最好在服务器上直接用编辑器修改配置文件。proxy字段如果你有需要可以填写,格式如“http://user:pass@host:port”,国内用户可能需要用它来访问服务。
避坑指南:Cookie失效与更新微软的Cookie可能会定期失效(尤其是长时间不活动后)。如果某天发现Copilot模块无法工作,提示认证错误,最可能的原因就是Cookie过期了。你需要按照上述步骤重新获取并更新
_U值。建议定期检查。这也是自托管的一个小维护成本。
3.3 配置系统服务实现后台运行与自启动
我们不希望SSH窗口一关闭机器人就停止。因此,我们将其配置为Linux的systemd服务。
步骤8:创建启动脚本run.sh在项目根目录(GPT-Telegramus/)下创建文件run.sh:
#!/bin/bash cd /home/你的用户名/GPT-Telegramus # 请修改为你的项目绝对路径 source venv/bin/activate python3.11 main.py然后赋予执行权限:
chmod +x run.sh这个脚本的作用是:进入项目目录,激活虚拟环境,然后启动主程序。
步骤9:创建Systemd服务文件
sudo vim /etc/systemd/system/gpt-telegramus.service将以下内容粘贴进去,务必修改WorkingDirectory和ExecStart中的路径:
[Unit] Description=GPT-Telegramus AI Bot Service After=network.target [Service] Type=simple User=你的用户名 # 建议使用非root用户,如‘ubuntu’ WorkingDirectory=/home/你的用户名/GPT-Telegramus ExecStart=/home/你的用户名/GPT-Telegramus/run.sh Restart=on-failure RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target步骤10:启动并启用服务
# 重新加载systemd配置 sudo systemctl daemon-reload # 设置开机自启 sudo systemctl enable gpt-telegramus.service # 立即启动服务 sudo systemctl start gpt-telegramus.service # 查看服务状态和日志,确认运行是否正常 sudo systemctl status gpt-telegramus.service sudo journalctl -u gpt-telegramus.service -f # 实时查看日志如果状态显示active (running),并且日志中没有明显的错误信息(可能有一些依赖库的警告,可以暂时忽略),那么恭喜你,机器人已经在后台运行了!
4. 高级配置、使用技巧与问题排查
部署成功只是开始,要让机器人好用、稳定,还需要一些进阶配置和技巧。
4.1 管理员功能与用户管理
作为管理员(config.json中设置的admin_id),你拥有一些特权命令,这对于管理一个多人使用的Bot非常有用。
/users:列出所有使用过Bot的用户及其ID。这是进行用户管理的基础。/ban <用户ID> [原因]:封禁一个用户。被封禁的用户将无法再使用Bot。慎用。/unban <用户ID>:解封用户。/broadcast <消息>:向所有未被封禁的用户广播一条消息。可以用来发布通知或更新。/queue:查看当前待处理的消息队列。在高负载时可以用来诊断瓶颈。/restart [模块名]:重启所有模块或指定模块。当某个AI服务(如Copilot)出现连接异常时,重启其模块往往是第一选择。
实操心得:如何安全地管理多人使用?如果你将Bot分享给朋友或小团队使用,建议:
- 初期先观察
/users列表,了解都有谁在使用。 - 明确使用规则,避免滥用导致API限额耗尽或服务器负载过高。
- 对于Copilot的免费Cookie,其使用限制是账户级别的。如果多人频繁使用,有触发微软风控导致Cookie失效的风险。可以考虑为Bot单独注册一个微软账户。
4.2 流式输出与消息分割优化
GPT-Telegramus默认启用了流式输出(“stream”: true),这意味着AI的回复是逐字或分块发送的,而不是等全部生成完再一次性发送,体验更接近ChatGPT网页版。
然而,Telegram对单条消息有长度限制(约4096个字符)。对于AI生成的长文,项目内置了自动分割机制。但有时分割逻辑可能不完美,比如在代码块中间被切断。你可以通过修改config.json中与stream和split相关的参数(如果项目更新暴露了这些配置)来调整,但通常默认值已足够好。
一个更实用的技巧是:当你需要AI生成非常长的内容(如一篇报告)时,可以在请求中明确要求它“分点列出”或“按章节输出”,这样AI自己会生成结构更清晰、更易于分割的内容。
4.3 多语言与自定义
项目支持多语言,语言文件位于langs/目录下。如果你想修改Bot的交互文本(如按钮名称、提示信息),可以编辑对应的语言文件(例如eng.json)。
如果你想贡献一种新的语言(比如完善中文翻译):
- 复制
eng.json并重命名为zho.json(中文的ISO 639-2代码)。 - 翻译所有
“value”字段后的字符串。注意保留所有的{xxx}占位符,这是代码中用于动态替换变量(如用户名、模型名)的地方,不要修改或翻译它们。 - 翻译完成后,在
config.json中将“language”改为“zho”即可测试。如果翻译质量高,可以向原作者提交Pull Request。
4.4 常见问题与故障排除实录
在数周的深度使用中,我遇到了不少问题,以下是它们的症状和解决方案:
问题1:启动后报错ModuleNotFoundError: No module named ‘xxx’
- 原因:虚拟环境未激活,或依赖未正确安装。
- 解决:确保在项目目录下执行了
source venv/bin/activate,并且已运行pip install -r requirements.txt。在run.sh和 systemd服务文件中,激活虚拟环境的步骤至关重要。
问题2:Copilot模块报错,提示认证失败或Cookie无效
- 原因:
_UCookie已过期或被撤销。 - 解决:按照3.2 步骤7的方法重新获取并更新
module_configs/lmao_ms_copilot.json中的Cookie值。然后使用管理员命令/restart lmao_ms_copilot重启该模块,无需重启整个Bot服务。
问题3:Bot响应缓慢,或长时间“正在输入…”后无回复
- 原因:网络问题或AI服务端拥堵/限流。
- 排查:
- 使用
/queue命令查看是否有任务堆积。 - 检查服务器到目标API(如Google, Groq, 微软)的网络连接。可以尝试
ping或curl测试。 - 对于Gemini和Groq,检查API Key的额度是否用尽。
- 对于Copilot(LMAO API),免费服务本身可能不稳定或遇到临时风控。可以尝试切换对话风格(
/style)或稍后再试。
- 使用
- 临时解决:切换到另一个可用的模块(如从Copilot切到Gemini)。
问题4:在群组中使用/chat命令,Bot不响应
- 原因:Bot可能未被设为群组管理员,或者未开启“隐私模式”设置。
- 解决:
- 将Bot添加为群管理员。
- 更重要的一步:私聊
@BotFather,对你的Bot发送/setprivacy,然后选择Disable。这样Bot才能看到群组中所有非以/开头的消息(/chat命令需要Bot能读到触发命令后的用户消息)。
问题5:Docker容器运行后无法保存配置或数据
- 原因:Docker容器内的文件变化是临时的。你没有将宿主机的配置文件目录挂载到容器内。
- 解决:确保在
docker run命令中使用了-v参数,正确地将存放config.json和module_configs/的本地目录挂载到容器的/app/config路径,如-v /home/user/gpt-telegramus-config:/app/config。所有配置修改都应在宿主机的这个目录中进行。
问题6:如何查看详细的运行日志以调试复杂问题?
- 方法:对于systemd服务,最强大的工具就是
journalctl。
日志通常会明确指出错误发生在哪个模块、哪行代码,是排查问题的第一手资料。# 查看全部日志 sudo journalctl -u gpt-telegramus.service # 查看最近100行并实时刷新 sudo journalctl -u gpt-telegramus.service -n 100 -f # 查看特定时间段的日志 sudo journalctl -u gpt-telegramus.service --since “2024-01-01 00:00:00” --until “2024-01-02 12:00:00”
5. 安全、维护与未来展望
将这样一个功能强大的AI聚合机器人部署在公网上,安全和维护是不可忽视的话题。
安全建议:
- Token与Key保管:
telegram_token、Gemini/Groq的api_key、微软的_Ucookie 都是最高机密。确保配置文件 (config.json,module_configs/*.json) 的权限设置为仅当前用户可读 (chmod 600 *.json),并且绝不上传到Git等公开版本控制系统。.gitignore文件通常已忽略这些配置文件,但请再次确认。 - 使用非root用户运行:如我在systemd服务文件中所示,使用
User=ubuntu之类的非root用户来运行服务,可以最大限度降低安全风险。 - 防火墙设置:服务器应只开放必要的端口(如SSH)。Bot本身不需要开放任何额外入站端口,因为它通过HTTP长轮询或Webhook(如果配置)与Telegram服务器通信。
- 定期更新:关注项目GitHub仓库的更新,定期
git pull拉取新代码,并更新依赖 (pip install -r requirements.txt --upgrade),以获取功能改进和安全修复。
维护工作:
- 监控服务状态:可以配置一个简单的监控,例如用
crontab定时任务检查服务是否在运行,如果停止则自动重启。# 编辑当前用户的crontab crontab -e # 添加一行,每5分钟检查一次 */5 * * * * systemctl is-active --quiet gpt-telegramus.service || systemctl restart gpt-telegramus.service - 日志轮转:长期运行后,systemd日志会变大。可以配置
journald的日志轮转策略,或定期清理旧日志。 - 备份配置:定期备份你的
config.json和module_configs/目录。如果服务器需要迁移,这些文件是关键。
这个项目的生态还在活跃发展中。根据作者的TODO列表,未来可能会集成OpenAI官方付费API、DALL-E图像生成等更多功能。自托管软件的魅力就在于,一旦你搭建好这个平台,新的功能模块往往只需要更新代码和添加新的配置即可享用,主动权完全在你手中。
搭建的过程本身,就是对现代AI服务架构、API集成和Linux运维的一次绝佳实践。当你最终在Telegram里轻松地切换于Copilot、Gemini和Groq之间,享受着一个完全由自己掌控的AI助手时,那种成就感和便利性,绝对是使用任何官方客户端都无法比拟的。希望这篇详尽的指南能帮你顺利搭建起属于自己的那个“全能AI伙伴”。