共计 4407 个字符,预计需要花费 12 分钟才能阅读完成。
该教程基于0.5.11-alpha版,现代码已有较大改动,部分内容请以最新版本为准
项目介绍
🍔麦麦是一个基于大语言模型的智能QQ群聊机器人
- 基于 nonebot2 框架开发
- LLM 提供对话能力
- MongoDB 提供数据持久化支持
- NapCat 作为QQ协议端支持
项目地址
部署与接入
点网页右侧小蓝条可进行导航
请先准备
- 一台联网的设备
- QQ小号(QQ框架的使用可能导致qq被风控,严重(小概率)可能会导致账号封禁,强烈不推荐使用大号)
- 一个或多个可用的大模型API
- 一个AI助手,网上随便搜一家打开来用都行,可以帮你解决一些不懂的问题
获取一个大模型API
这里以硅基流动为例
点击这个链接注册账号
然后点侧栏的API 密钥
点右上角的新建 API 密钥
,在弹出的窗口中点新建密钥
之后再把密钥复制下来备用
Windows
以下截图来源MaiMBOT 8aka WiKi
Linux
这里仅以Debian系(如Ubuntu、Mint等)为例
确认Python版本
打开终端,输入
python --version
# 或
python3 --version
如果你觉得每次都输python3太麻烦,你可以选择安装一个python-is-python3
软件包,它可以让命令中的python
等同于python3
,安装命令为 sudo apt install python-is-python3
(注:此步非必须,没有此需求请直接往下看)
如果版本低于3.9,请更新Python版本。
# Ubuntu/Debian
sudo apt update
sudo apt install python3.9
# 如执行了这一步,建议在执行时将python3指向python3.9
# 更新替代方案,设置 python3.9 为默认的 python3 版本:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1
sudo update-alternatives --config python3
创建虚拟环境&安装依赖
方法1:使用venv(推荐)
python3 -m venv maimbot
source maimbot/bin/activate # 激活环境
方法2:使用conda(需先安装Miniconda)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create -n maimbot python=3.9
conda activate maimbot
通过以上方法创建并进入虚拟环境后,再执行以下命令
安装依赖(任选一种环境)
pip install -r requirements.txt
数据库配置(MongoDB)
进行初始化
打开终端在项目目录下操作
nb run
# 或
python3 bot.py
运行后等待其自动退出,再进行下一步
配置Napcat
参考NapCat官方文档安装
使用你准备好的QQ号登录,添加反向WS地址:ws://localhost:8080/onebot/v11/ws
(在它的webui中被称为Websoket客户端
)
配置文件修改
(这段Win/Linux通用)
修改.env.prod
这是一个位于机器人根目录的环境配置文件
你可以在template.env
文件中找到默认的内容(不要修改这个文件,我们要修改的是.env.prod
这个文件)
可能的内容如下
HOST=127.0.0.1 # 配置监听的 IP / 主机名(无特殊情况保持默认)
PORT=8080 # # 配置监听的端口(无特殊情况保持默认)
# 如果你修改了以上两项,请不要忘了更改在Napcat里配置的反向WS地址
# 插件配置
PLUGINS=["src2.plugins.chat"]
# 默认配置(无特殊情况保持默认)
MONGODB_HOST=127.0.0.1 # 如果工作在Docker下,请改成 MONGODB_HOST=mongodb
MONGODB_PORT=27017
DATABASE_NAME=MegBot
MONGODB_USERNAME = "" # 默认空值(无特殊情况保持默认)
MONGODB_PASSWORD = "" # 默认空值(无特殊情况保持默认)
MONGODB_AUTH_SOURCE = "" # 默认空值(无特殊情况保持默认)
#key and url
CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1/
DEEP_SEEK_BASE_URL=https://api.deepseek.com/v1
#定义你要用的api的base_url
DEEP_SEEK_KEY=
CHAT_ANY_WHERE_KEY=
SILICONFLOW_KEY=
在.env.prod中定义API凭证:
# API凭证配置
SILICONFLOW_KEY=your_key # 硅基流动API密钥(如果你参照前文获取了一个密钥,就可以将它填在这里)
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1/ # 硅基流动API地址
DEEP_SEEK_KEY=your_key # DeepSeek API密钥
DEEP_SEEK_BASE_URL=https://api.deepseek.com/v1 # DeepSeek API地址
CHAT_ANY_WHERE_KEY=your_key # ChatAnyWhere API密钥
CHAT_ANY_WHERE_BASE_URL=https://api.chatanywhere.tech/v1 # ChatAnyWhere API地址
如果你需要增加一个提供商,只要再定义一个地址,并填入密钥即可
修改bot_config.toml
文件内容如下
[bot]
qq = "机器人QQ号" # 必填
nickname = "麦麦" # 机器人昵称
[personality]
prompt_personality = [
"曾经是一个学习地质的女大学生,现在学习心理学和脑科学,你会刷贴吧",
"是一个女大学生,你有黑色头发,你会刷小红书"
]
prompt_schedule = "一个曾经学习地质,现在学习心理学和脑科学的女大学生,喜欢刷qq,贴吧,知乎和小红书"
# personality区的内容可更改,prompt_personality采取概率选择:有三分之二的概率选择第一人格,有三分之一的概率选择第二人格
[message]
min_text_length = 2 # 最小回复长度
max_context_size = 15 # 上下文记忆条数
emoji_chance = 0.2 # 表情使用概率
ban_words = [] # 禁用词列表
[emoji]
auto_save = true # 自动保存表情
enable_check = false # 启用表情审核
check_prompt = "符合公序良俗"
[groups]
talk_allowed = [] # 允许对话的群号
talk_frequency_down = [] # 降低回复频率的群号
ban_user_id = [] # 禁止回复的用户QQ号
[others]
enable_advance_output = true # 启用详细日志
enable_kuuki_read = true # 启用场景理解
# 模型配置
[model.llm_reasoning] # 推理模型
name = "Pro/deepseek-ai/DeepSeek-R1"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
[model.llm_reasoning_minor] # 轻量推理模型
name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
[model.llm_normal] # 对话模型
name = "Pro/deepseek-ai/DeepSeek-V3"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
[model.llm_normal_minor] # 备用对话模型
name = "deepseek-ai/DeepSeek-V2.5"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
[model.vlm] # 图像识别模型
name = "deepseek-ai/deepseek-vl2"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
[model.embedding] # 文本向量模型
name = "BAAI/bge-m3"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
[topic.llm_topic] # 对话主题总结模型
name = "Pro/deepseek-ai/DeepSeek-V3"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"
在bot_config.toml中引用API凭证:
[model.llm_reasoning]
name = "Pro/deepseek-ai/DeepSeek-R1"
base_url = "SILICONFLOW_BASE_URL" # 引用.env.prod中定义的地址
key = "SILICONFLOW_KEY" # 引用.env.prod中定义的密钥
如需切换到其他API服务,只需修改引用:
[model.llm_reasoning]
name = "Pro/deepseek-ai/DeepSeek-R1"
base_url = "DEEP_SEEK_BASE_URL" # 切换为DeepSeek服务
key = "DEEP_SEEK_KEY" # 使用DeepSeek密钥
更改并保存以上两个文件
启动麦麦机器人
久等了,我们已经完成了所有部署操作
打开终端在项目目录下操作
nb run
# 或
python3 bot.py
并启动Napcat
Have Fun!
常见问题
正在汇总及编写,之后会上线...
正文完