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:passhost: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] DescriptionGPT-Telegramus AI Bot Service Afternetwork.target [Service] Typesimple User你的用户名 # 建议使用非root用户如‘ubuntu’ WorkingDirectory/home/你的用户名/GPT-Telegramus ExecStart/home/你的用户名/GPT-Telegramus/run.sh Restarton-failure RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-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服务文件中激活虚拟环境的步骤至关重要。问题2Copilot模块报错提示认证失败或Cookie无效原因_UCookie已过期或被撤销。解决按照3.2 步骤7的方法重新获取并更新module_configs/lmao_ms_copilot.json中的Cookie值。然后使用管理员命令/restart lmao_ms_copilot重启该模块无需重启整个Bot服务。问题3Bot响应缓慢或长时间“正在输入…”后无回复原因网络问题或AI服务端拥堵/限流。排查使用/queue命令查看是否有任务堆积。检查服务器到目标API如Google, Groq, 微软的网络连接。可以尝试ping或curl测试。对于Gemini和Groq检查API Key的额度是否用尽。对于CopilotLMAO API免费服务本身可能不稳定或遇到临时风控。可以尝试切换对话风格/style或稍后再试。临时解决切换到另一个可用的模块如从Copilot切到Gemini。问题4在群组中使用/chat命令Bot不响应原因Bot可能未被设为群组管理员或者未开启“隐私模式”设置。解决将Bot添加为群管理员。更重要的一步私聊BotFather对你的Bot发送/setprivacy然后选择Disable。这样Bot才能看到群组中所有非以/开头的消息/chat命令需要Bot能读到触发命令后的用户消息。问题5Docker容器运行后无法保存配置或数据原因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服务文件中所示使用Userubuntu之类的非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伙伴”。