开箱即用的IM机器人开发体验,支持Agent、RAG、MCP等多种LLM应用功能
LangBot是一个开源的大语言模型原生即时通信机器人开发平台,旨在提供开箱即用的IM机器人开发体验。它具有Agent、RAG、MCP等多种LLM应用功能,适配全球主流即时通信平台,并提供丰富的API接口,支持自定义开发。
LangBot基于Python开发,支持3.10至3.13版本,采用事件驱动架构,集成了即时通信平台的API和多种大语言模型,支持插件扩展和Web管理面板,内置访问控制、限速和敏感词过滤等安全机制。
无缝集成到多种主流即时通信平台,如QQ、微信(包括企业微信和个人微信)、飞书、Discord等。
支持接入多种主流的大语言模型(LLM),如OpenAI的ChatGPT、DeepSeek、Claude、Gemini、Ollama等。
支持文本、语音、图片等多种输入输出形式,能够进行多轮对话和工具调用。
原生支持访问控制、限速、敏感词过滤等机制,保障机器人运行的稳定性和安全性。
LangBot采用事件驱动架构,基于Python开发,具有高度模块化和可扩展性。其核心架构包括以下几个部分:
LangBot基于事件驱动架构设计,当特定事件发生时(如接收到消息、用户操作等),系统会触发相应的处理逻辑。这种架构使得LangBot能够高效地处理多个平台的消息和事件。
LangBot通过集成各个即时通信平台提供的API接口,实现与用户的交互。这一层负责处理不同平台的协议差异,为上层提供统一的接口。
LangBot支持多种大语言模型,通过统一的接口与不同的LLM进行交互。这使得用户可以根据需求选择合适的模型进行对话任务。
LangBot提供了强大的插件系统,支持事件监听器和内容函数两种插件类型。插件系统基于事件驱动和组件扩展机制,适配Anthropic MCP协议。
LangBot提供了Web管理面板,用户可以通过浏览器管理LangBot实例,无需手动编写配置文件,大大降低了使用门槛。
# 事件监听器插件示例
from langbot import Event, EventType
@bot.on(EventType.MESSAGE)
async def on_message(event: Event):
# 处理消息事件
message = event.message
if message.content.startswith("/hello"):
await message.reply("你好!我是LangBot机器人。")
# 克隆仓库
git clone https://github.com/langbot-app/LangBot
cd LangBot
# 启动服务
docker compose up -d
启动后访问 http://localhost:5300 即可开始使用。
LangBot已上架宝塔面板,若您已安装宝塔面板,可以根据官方文档使用一键部署功能。
可以直接使用发行版运行,详细步骤请参考官方文档的手动部署部分。
插件是LangBot的扩展模块,其中包含事件监听器和内容函数两种可执行内容。事件监听器由主程序运行中的事件驱动,而内容函数由GPT生成的内容驱动。这两种驱动方式都统一包装在插件类中。
事件监听器插件监听LangBot运行期间的各种事件,LangBot在事件发生时,携带事件相关信息调用插件注册的监听器。插件可以通过注册监听器以在指定情况下被触发。
内容函数不同于通过事件触发插件,而是在对话期间,当对话内容符合内容函数的描述时,由GPT指定要调用的函数,并由LangBot进行调用。这是基于GPT的Function Calling能力实现的。
# 内容函数插件示例
from langbot import Function, FunctionParameter
@bot.function(
name="get_weather",
description="获取指定城市的天气信息",
parameters=[
FunctionParameter(
name="city",
description="城市名称",
required=True,
type="string"
)
]
)
async def get_weather(city: str):
# 获取天气信息的逻辑
weather_data = await fetch_weather_data(city)
return f"{city}的天气:{weather_data['weather']},温度:{weather_data['temperature']}℃"
LangBot拥有活跃的开发者社区,欢迎贡献代码、提交插件或提出改进建议。