Files
Mofox-Core/docs/installation.md
2025-03-08 00:24:11 +08:00

6.8 KiB
Raw Blame History

🔧 安装与配置指南

部署方式

如果你不知道Docker是什么建议寻找相关教程或使用手动部署

🐳 Docker部署推荐但不一定是最新

  1. 获取配置文件:
wget https://raw.githubusercontent.com/SengokuCola/MaiMBot/main/docker-compose.yml
  1. 启动服务:
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker compose up -d
  1. 修改配置后重启:
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker compose restart

📦 手动部署

(这里有一份由社区大佬编写的适用于Windows的部署教程可供参考)

  1. 环境准备 先参考图片下载Releases中的Source code(zip)并将其解压到一个文件夹里(路径不要有中文)

  2. 安装Python

要求Python 3.9+

Linux用户可在终端输入python3 --version确认Python版本Windows用户可在命令行输入python --version确认Python版本

Windows用户需要安装Python并在安装时勾选“Add Python to PATH”选项如访问速度慢这里提供Python 3.12的安装包网盘链接)

Linux由于不同发行版安装Python的方式不同请自行查阅相关教程(问AI、用搜索引擎搜一下都行)

# 创建虚拟环境(推荐)
# 在机器人的目录内打开终端/命令行,执行
python -m venv venv

# 激活虚拟环境
venv\\Scripts\\activate   # Windows
source venv/bin/activate  # Linux

# 安装依赖
pip install -r requirements.txt
  1. 配置MongoDB
  • 安装并启动MongoDB服务
    • 参考MongoDB官方文档
    • 建议使其开机自启(教程中有提及,称为“在系统重新启动后启动”)
  • 默认连接本地27017端口
  1. 配置NapCat
  • 安装并登录NapCat
  • 添加反向WSws://localhost:8080/onebot/v11/ws 该项目基于 nonebot2 框架开发,理论上也支持对接其他平台,如有需求请自行寻找教程
  1. 首次启动麦麦机器人
# 在机器人的目录内打开终端/命令行,执行
nb run

程序会创建基本配置文件,然后退出

  1. 配置文件设置 参照“配置说明”一节进行配置
  • 修改环境配置文件:.env.prod(位于机器人文件夹根目录)
  • 修改机器人配置文件:config/bot_config.toml(位于机器人文件夹根目录/config文件夹内)
  1. 启动麦麦机器人
  • 打开命令行cd到对应路径
nb run
  1. 其他组件
  • run_thingking.bat: 启动可视化推理界面(未完善)

  • knowledge.bat: 将/data/raw_info下的文本文档载入数据库

  • 直接运行 knowledge.py生成知识库

⚙️ 配置说明

环境配置 (.env.prod)

HOST=127.0.0.1
PORT=8080   # 端口号,有需求可改

# 插件配置
PLUGINS=["src2.plugins.chat"]

# 数据库配置
MONGODB_HOST=127.0.0.1
MONGODB_PORT=27017
DATABASE_NAME=MegBot

MONGODB_USERNAME = ""  # 默认空值
MONGODB_PASSWORD = ""  # 默认空值
MONGODB_AUTH_SOURCE = ""  # 默认空值

# 以上内容如看不懂,保持默认即可

# 以下为API配置,你可以在这里定义你的密钥和base_url
# 你可以选择定义其他服务商提供的KEY完全可以自定义

#key and url
# 定义你要用的api的base_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
# 你也可以自定义所需平台的base_url
# 举例:
# MODEL_NAME_BASE_URL=https://api.example.com/v1


#定义你要用的api的API-KEY
DEEP_SEEK_KEY=
CHAT_ANY_WHERE_KEY=
SILICONFLOW_KEY=
# 你也可以自定义所需平台的API-KEY
# 举例:
# MODEL_NAME_KEY=

机器人配置 (bot_config.toml)

[bot]
qq = 123
nickname = "麦麦"   # 可自定义

[personality]
prompt_personality = [
        
    ]
prompt_schedule = 

[message]
min_text_length = 2 # 与麦麦聊天时麦麦只会回答文本大于等于此数的消息
max_context_size = 15 # 麦麦获得的上文数量
emoji_chance = 0.2 # 麦麦使用表情包的概率
ban_words = [
    # "403","张三"
    ]

[emoji]
check_interval = 120 # 检查表情包的时间间隔
register_interval = 10 # 注册表情包的时间间隔

[cq_code]
enable_pic_translate = false

[response]
model_r1_probability = 0.8 # 麦麦回答时选择R1模型(即[model.llm_reasoning]指定的模型)的概率
model_v3_probability = 0.1 # 麦麦回答时选择V3模型(即[model.llm_normal]指定的模型)的概率
model_r1_distill_probability = 0.1 # 麦麦回答时选择R1蒸馏模型(即[model.llm_reasoning_minor]指定的模型)的概率

[memory]
build_memory_interval = 300 # 记忆构建间隔 单位秒
forget_memory_interval = 300 # 记忆遗忘间隔 单位秒

[others]
enable_advance_output = true # 是否启用高级输出
enable_kuuki_read = true # 是否启用读空气功能

[groups]
talk_allowed = [
    123,
    123,
]  #可以回复消息的群
talk_frequency_down = []  #降低回复频率的群
ban_user_id = []  #禁止回复消息的QQ号


#V3
#name = "deepseek-chat"
#base_url = "DEEP_SEEK_BASE_URL"
#key = "DEEP_SEEK_KEY"

#R1
#name = "deepseek-reasoner"
#base_url = "DEEP_SEEK_BASE_URL"
#key = "DEEP_SEEK_KEY"

#下面的模型若使用硅基流动则不需要更改使用ds官方则改成.env.prod自定义的宏使用自定义模型则选择定位相似的模型自己填写

[model.llm_reasoning] #R1
name = "Pro/deepseek-ai/DeepSeek-R1"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"

[model.llm_reasoning_minor] #R1蒸馏
name = "deepseek-ai/DeepSeek-R1-Distill-Qwen-32B"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"

[model.llm_normal] #V3
name = "Pro/deepseek-ai/DeepSeek-V3"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"

[model.llm_normal_minor] #V2.5
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"

# 主题提取jieba和snownlp不用apillm需要api
[topic]
topic_extract='snownlp' # 只支持jieba,snownlp,llm三种选项

[topic.llm_topic]
name = "Pro/deepseek-ai/DeepSeek-V3"
base_url = "SILICONFLOW_BASE_URL"
key = "SILICONFLOW_KEY"

⚠️ 注意事项

  • 目前部署方案仍在测试中,可能存在未知问题
  • 配置文件中的API密钥请妥善保管不要泄露如需截图描述问题请将截图中的API密钥打码(它们通常以sk-开头)
  • 建议先在测试环境中运行,确认无误后再部署到生产环境