Telegram人工智能助理机器人
概述
Telegram AI Assistant Bot是一个推理驱动的AI代理,名为Cortex-R,旨在通过Telegram与用户交互。它使用多个模型上下文协议(MCP)服务器来执行各种任务,如网络搜索、文档处理、数学计算和谷歌服务集成(如Gmail和谷歌表格)。机器人同时使用了这两种 stdio 和 sse 与这些MCP服务器通信的传输协议。
特性
- 电报集成机器人通过Telegram与用户互动,回应他们的询问和任务。
- 多MCP服务器支持:利用多个MCP服务器实现各种功能。
- 用于电子邮件管理的Gmail集成。 - 用于电子表格操作的Google表格集成。 - 使用DuckDuckGo的网络搜索功能。 - 文档处理和语义搜索。 - 数学计算。
- 动态工具发现:在初始化过程中自动从MCP服务器发现工具。
- 可定制的代理策略:支持不同的策略,如保守、重试一次和全部探索。
- 内存管理:检索和存储内存项以增强任务解决能力。
- 可配置的人物:允许自定义语气、冗长和行为。
建筑
机器人是使用以下组件构建的:
1. Telegram Bot集成
该机器人在 telegram_agent.py 使用 python-telegram-bot 图书馆。它处理用户消息和命令,例如 /start 和 /help用户查询由Cortex-R代理处理。
2. 核心组件
- 代理循环(
core/loop.py):管理代理的主要执行循环,包括感知、计划和工具执行。 - 会话管理(
core/session.py):使用处理与多个MCP服务器的通信stdio和sse传输协议。 - 战略(
core/strategy.py)实施决策规划策略。
3. MCP服务器
机器人与以下MCP服务器交互:
- Gmail服务器(
gmail_server.py):管理电子邮件操作,如发送、阅读和丢弃电子邮件。 - 谷歌表格服务器(
mcp_gdrive_server.py):处理电子表格操作,如创建、更新和共享Google表格。 - Web搜索服务器(
mcp_server_3.py):使用DuckDuckGo执行网络搜索并获取网页内容。 - 文档处理服务器(
mcp_server_2.py):处理文档以进行语义搜索和索引。 - 数学服务器(
mcp_server_1.py):执行数学计算。
4. 配置
- 个人资料(
config/profiles.yaml):定义代理设置,包括策略、内存配置和MCP服务器详细信息。 - 型号(
config/models.json):指定用于文本生成和嵌入的模型。 - 环境变量(
.env):存储敏感信息,如API密钥和文件路径。
工作流程
- 初始化:
- 机器人从以下位置加载MCP服务器配置 profiles.yaml. - 初始化 MultiMCP 调度器从所有配置的MCP服务器中发现工具。
- 用户交互:
- 用户通过Telegram与机器人互动。 - 机器人程序处理用户消息,并确定完成任务所需的工具。
- 任务执行:
- 代理使用感知来理解用户查询。 - 使用定义的策略计划下一步行动。 - 从相应的MCP服务器执行所需的工具。 - 检索结果并响应用户。
- 内存管理:
- 将工具输出和用户查询存储为内存项。 - 检索相关记忆以帮助解决任务。
配置
环境变量
在中设置以下变量 .env 文件:
GEMINI_API_KEY:Gemini模型的API密钥。SERVICE_ACCOUNT_PATH:Google服务帐户JSON文件的路径。DRIVE_FOLDER_ID:用于存储文件的Google Drive文件夹ID。CREDENTIALS_PATH:OAuth客户端凭据文件的路径。TOKEN_PATH:Google API令牌文件的路径。
MCP服务器配置
在中定义MCP服务器 config/profiles.yaml:
mcp_servers:
- id: gmail
type: stdio
script: gmail_server.py
cwd:
- id: gdrive
type: stdio
script: mcp_gdrive_server.py
cwd:
- id: math
type: sse
script: mcp_server_1.py
url: http://localhost:8000/sse
cwd:
- id: documents
type: stdio
script: mcp_server_2.py
cwd:
- id: websearch
type: stdio
script: mcp_server_3.py
cwd:
安装
- 克隆存储库:
git clone
cd - 使用uv同步依赖关系:
uv sync- 在中设置环境变量
.env. - 启动Telegram机器人:
uv run telegram_agent.py用法
- 使用以下命令在Telegram上启动机器人
/start命令。 - 向机器人发送查询或任务,例如:
- “找到当前的F1排名,并在谷歌表格中分享。” - “发送电子邮件至example@gmail.com主题为“会议更新”。"
贡献
欢迎投稿!请按照以下步骤操作:
- 分叉存储库。
- 为您的功能或错误修复创建一个新分支。
- 提交一个拉取请求,详细描述您的更改。
许可证
该项目根据MIT许可证获得许可。请参阅 LICENSE 文件以获取详细信息。

