MaimBot部署与接入QQ

115次阅读
没有评论

共计 4407 个字符,预计需要花费 12 分钟才能阅读完成。

该教程基于0.5.11-alpha版,现代码已有较大改动,部分内容请以最新版本为准

项目介绍

🍔麦麦是一个基于大语言模型的智能QQ群聊机器人

  • 基于 nonebot2 框架开发
  • LLM 提供对话能力
  • MongoDB 提供数据持久化支持
  • NapCat 作为QQ协议端支持

项目地址

部署与接入

点网页右侧小蓝条可进行导航

请先准备

  • 一台联网的设备
  • QQ小号(QQ框架的使用可能导致qq被风控,严重(小概率)可能会导致账号封禁,强烈不推荐使用大号)
  • 一个或多个可用的大模型API
  • 一个AI助手,网上随便搜一家打开来用都行,可以帮你解决一些不懂的问题

获取一个大模型API

这里以硅基流动为例
点击这个链接注册账号
然后点侧栏的API 密钥
MaimBot部署与接入QQ
点右上角的新建 API 密钥,在弹出的窗口中点新建密钥
之后再把密钥复制下来备用

Windows

请参考这篇专栏以及官方文档,如遇到问题,可看一下常见问题

以下截图来源MaiMBOT 8aka WiKi
MaimBot部署与接入QQ

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)

  • 安装与启动:Debian参考官方文档,Ubuntu参考官方文档
  • 建议设置开机自启,官方教程有,称为在系统 重新启动后启动
  • MaimBot默认连接本地27017端口

进行初始化

打开终端在项目目录下操作

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!

常见问题

正在汇总及编写,之后会上线...

正文完
 0
一言一句话
-「
评论(没有评论)