LLM驱动的Telegram机器人

一个基于Spring Boot的Telegram机器人,通过Spring AI整合LLM(如Anthropic的Claude)并支持模型上下文协议(MCP),实现智能聊天和外部工具调用功能。适用于开发智能聊天机器人、自动化客服和工具集成场景。

  • by navneetprabhakar
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 navneetprabhakar/telegram-bot

使用说明

电报机器人(LLM+MCP)

Spring Boot Telegram机器人由LLM通过Spring AI提供支持,具有模型上下文协议(MCP)客户端支持,因此助手可以调用外部工具。

概述

该机器人通过长轮询监听Telegram更新,通过Spring AI将用户消息转发给Anthropic(Claude)聊天模型,并在聊天中回复。它维护每次会话的内存,强制每个用户的速率限制,并作为客户端连接到一个或多个MCP服务器-将其工具暴露给模型,以便它能够满足需要外部操作的请求(例如,查询交易API)。

特征

  • 电报集成 --使用Telegram长轮询接收和响应消息
  • LLM回复 --聊天由Anthropic(克劳德)通过Spring AI提供支持 ChatClient
  • MCP客户端 --通过可流式HTTP连接到MCP服务器,并将其工具注册为模型的可调用工具
  • 每个聊天记忆 --每次聊天都保留对话历史记录,可配置最大消息数和基于TTL的驱逐
  • 速率限制 --每用户请求限制(Bucket4j)
  • 消息分块和Markdown --长回复被分成电报大小的块,使用Markdown格式和纯文本回退
  • 机器人命令 — /start, /clear (重置对话历史记录),以及 /tools (列出可用的MCP工具)

技术栈

  • Java 21
  • 弹簧靴3.5.10
  • Spring AI 1.1.2(人类聊天模型+MCP客户端启动器)
  • 电报机器人7.11.0(长轮询+客户端)
  • Bucket4j(速率限制)
  • 咖啡因(聊天记忆TTL驱逐)
  • 龙目
  • Gradle(包括包装)

入门指南

先决条件

  • Java 21
  • Telegram机器人代币(来自 @植物学家)
  • 人类API密钥
  • (可选)要连接的正在运行的MCP服务器

构建

./gradlew build

跑

./gradlew bootRun

应用程序在端口上启动 8083 默认情况下,开始轮询Telegram。

配置

配置存在于 src/main/resources/application.yml 并从环境变量中读取。设置以下内容(使用您自己的值):

export TELEGRAM_BOT_TOKEN=<your-telegram-bot-token>
export TELEGRAM_BOT_USERNAME=<your-bot-username>
export ANTHROPIC_API_KEY=<your-anthropic-api-key>
export MCP_SERVER_URL=<your-mcp-server-url>   # e.g. http://localhost:8082/

关键配置属性:

属性 描述
spring.ai.anthropic.api-key 无烟煤API键(ANTHROPIC_API_KEY)
spring.ai.anthropic.chat.options.model 克劳德型号id
spring.ai.mcp.client.streamable-http.connections.*.url MCP服务器URL(MCP_SERVER_URL)
telegram.bot.token Telegram机器人令牌(TELEGRAM_BOT_TOKEN)
telegram.bot.username Telegram机器人用户名(TELEGRAM_BOT_USERNAME)
chat.context.max-messages 每次聊天保留的最大消息数
chat.context.ttl-minutes 对话TTL(分钟)
rate-limit.requests-per-minute 每用户请求限制
server.port HTTP端口(默认 8083)

项目结构

src/main/java/com/navneet/telegrambot/
├── TelegramBotApplication.java
├── config/   # LLM/ChatClient, chat memory, rate limit, and Telegram bot configuration
├── handler/  # Telegram update handler (commands, rate limiting, dispatch)
├── service/  # LlmService — chat, history, and tool integration
├── dto/      # ChatMessage model
└── util/     # Telegram response formatting helpers

免责声明

这个项目是供教育和个人使用的。将API密钥和机器人程序令牌置于源代码管理之外。