搭建一个QQ角色扮演聊天机器人——基于NapCat+LangBot(Windows系统)

DeepSeek V3出了之后就打算自己搞个QQ角色扮演机器人(API太便宜了)。其实部署难度不大,主要是找对合适的仓库。在尝试过几个不同的角色扮演项目库后,最终LZ确定了NapCat+LangBot的方案——这套方案比较适合windows系统,操作简便,部署容易。

一、准备一个QQ机器人账号

强烈不推荐用大号当机器人,有被封风险。

建议先注册一个小号,然后加大号好友,之后用大号调试机器人对话。

二、安装NapCat

NapCat是现代化的基于NTQQ的Bot协议端实现,通俗点讲就是用来自动收发QQ消息的。以前也有类似go-cqhttpmirai之类的协议,但是被QQ封的差不多了,不推荐使用。

NapCat的安装与使用很简单,步骤如下:

1.打开Release界面:Releases · NapNeko/NapCatQQ,下载Windows免安装QQ一键包

2.解压,文件如下:

3.修改napcat.quick.bat(用记事本打开),然后.\NapCatWinBootMain.exe后面的数字改成你的小号QQ号。

4.运行napcat.quick.bat:如果你之前在电脑上登录过小号,那么运行后会自动登录;如果快速登录失败,则需要用手机QQ扫描二维码登录。

5.打开webui:复制图中第二个webui(第一个也可以,第二个更好看一些)链接到浏览器或者直接ctrl+单击链接打开。

以上步骤完成后则说明NapCat安装成功,可以使用。

NapCat使用文档:NapCatQQ | 现代化的基于 NTQQ 的 Bot 协议端实现

三、安装Langbot

Langbot有多种部署方式,这里就介绍手动部署,如需Docker部署请参考文档:Docker部署(仅推荐在Linux上使用) | LangBot 文档

  1. 打开Release界面,下载langbot-xxx-all.zip(不要下载源码)。
  2. 创建虚拟环境
conda create -n "环境名" python=3.10.14
conda activate "环境名"

安装依赖(cd到Langbot文件夹里)

pip install -r requirements.txt

运行主程序,生成配置文件

python main.py

运行成功后即可生成配置文件。按ctrl+c退出程序,后续再去修改配置。

注意,以后都需要在该虚拟环境下启动langbot!

四、注册大模型API平台账号

这里以DeepSeek为例。先去DeepSeek官网注册账号,然后进入api平台:DeepSeek 开放平台

在API keys这里创建API key,复制key保存,后续会用到。

五、修改NapCat&LangBot的配置文件

打开langbot文件夹下的data/config/provider.json,在keys属性下找到deepseek,填入之前创建的API key;在model属性下把名称改为deepseek-chat。

打开langbot文件夹下的data/config/platform.json,在platform-adapters属性下找到”adapter”: “aiocqhttp”的部分,然后把enable设置为true,记住host和端口号,并设置access-token。

打开langbot文件夹下的data/config/system.json,在admin-sessions增加“person_你的qq号”,从而设置机器人的管理员。

打开langbot文件夹下的data/config/pipeline.json文件夹,推荐把access-control-mode设置为whitelist(白名单模式),然后在whitelist处增加想要让机器人对话的群聊和个人账号。群聊的格式为:group_qq群号。个人账号的格式:person_qq号。

设置完毕后,运行langbot。(python main.py)

按照第二部分的内容,在NapCat的文件夹下运行napcat.quick.bat并打开webui。选择网络配置-新建-Websocket客户端。名称随意,URL和token要与langbot设置的host+端口号以及access-token保持一致

例如,host为127.0.0.1(或0.0.0.0),端口号为8080,那么填写的URL就应该为:ws://127.0.0.1:8080/ws

之后,启动客户端,如果配置正确的话就可以使用了。

注意,此时只是实现了QQ+大模型的聊天功能,还不完全具备角色扮演功能。

六、安装Langbot插件

启动Langbot后,打开langbot webui的本地地址,点击左侧的插件界面。

之后点击安装,输入角色扮演插件的github地址:ElvisChenML/Waifu: QChatGPT 插件,用于创建真实感聊天机器人,探索真实的聊天体验。

然后安装。

安装完毕后,在data/plugins/waifu/config文件夹下,修改waifu.yaml参数——

# 通用设置
character: "default" # off:不使用角色预设;请填入water/cards中的 “角色卡名称.yaml” 的 角色卡名称,使用默认值“default”时会使用模板config/default_*.yaml创建cards/default_*.yaml。
summarization_mode: false # 是否开启长期记忆,不开启则超出short_term_memory_size直接截断。
story_mode: false # 是否开启剧情模式(旁白、状态栏),仅私聊模式生效。
thinking_mode: true # 是否开启思维链。
personate_mode: false # 是否启用拟人化:打字时间、分段回复。
jail_break_mode: "off" # off/before/after/end/all;是否启用破甲,off:关闭破甲,before:系统提示前加入破甲提示,after:系统提示后加入破甲提示,end:上下文末尾加入破甲提示;all:全部启用;破甲内容请修改:jail_break_before.txt、jail_break_after.txt、jail_break_end.txt。
​
# 思考模块
display_thinking: false # 是否显示内心活动。
analyze_max_conversations: 9 # 用于生成分析的最大对话数量。
max_thinking_words: 30 # 最大思考字数,此配置不是硬性限制,该配置体现于提示语中。
​
# 记忆模块
short_term_memory_size: 40 # 短期记忆,完整的对话记录长度。
memory_batch_size: 20 # 长期记忆,短期记忆达到上限后,将memory_batch_size条发言转换成长期记忆。
retrieve_top_n: 3 # 长期记忆,每次提取retrieve_top_n条相关的长期记忆。
summary_max_tags: 50 # 长期记忆,每段长期记忆的最大标签数量(高频词、类型名称)。
​
# 群聊设置
response_min_conversations: 1 # 群聊触发回复的最小对话数量。
response_rate: 1 # 群聊触达到最小对话数量后回复的机率,为1时所有消息都响应。
group_response_delay: 0 # 群聊消息合并等待时间。
blacklist: [] # 屏蔽列表,将自动过滤来自列表中QQ号的消息;以数字列表形式输入:[QQ号, QQ号, QQ号, ...]。
repeat_trigger: 2 # 0为关闭复读;群聊出现重复发言时触发复读的最小次数(不含原发言);触发回复后,检测到重复出现的对话时参与复读。
​# 拟人化设置
bracket_rate: [0.1, 0.1] # 回复末尾加括号的机率,第一个对应加()的机率,第二个对应加(的机率。
​
# 私聊剧情模式
display_value: false # 是否每次回复后显示数值;若关闭,请通过命令[态度]查看。
max_narrat_words: 30 # 最大旁白字数,此配置不是硬性限制,该配置体现于提示语中。
narrat_max_conversations: 8 # 用于生成旁白的最大对话数量。
value_game_max_conversations: 5 # 判定数值变化时输入的最大对话数量。
intervals: [] # 列表,自动触发旁白推进剧情的时间间隔,单位秒,例如:[300,600,1800,3600]:第一次5分钟、第二次10分钟、第三次30分钟、第四次一个小时,然后停止计时器。
person_response_delay: 0 # 私聊消息合并等待时间。
continued_rate: 0 # 自动触发回复后继续发言的机率。
continued_max_count: 2 # 私聊最大延续发言次数。

之后在data/plugins/waifu/cards下创建xxx(角色名).yaml,模板可参考如下格式:

之后,在waifu.yaml文件夹里,把character设置为和cards下你创建的xxx.yaml同名。

# system prompt 系统提示相关配置(必填项)
user_name: 张三 # 如何称呼你
assistant_name: 芙兰 # 角色名字
language: 简体中文 # 对话的语言
Profile: # 个人信息
  - 简介:例如芙兰朵露的人物设定
​
# 以下为人设补充(非必填项)
Skills: # 技能
  - 你说话温柔可爱,不用强势的词,让人感到舒服。
  - 当用户提到的事件在{Memories}中有记录时,回复时你要综合与该事件相关的内容进行回复。
Background: # 背景
  - 你和用户透过QQ聊天。
Rules: # 行动规则
  - 介绍自己的时候,只说名字,不要带上身份等信息。
  - 你和用户只能透过QQ聊天。
  - 你和用户不在一个场景。
Prologue: # 开场场景
  - 每天,张三都会去公司上班,他总是带着一身疲惫的样子。今天,他像往常一样,从公司下班。
​
# 以下为剧情模式相关配置(非必填项)
# manner 配置value_game不同数值区间的行为,初始值为“0”
max_manner_change: 10 # 数值最大变化量
value_descriptions: # description 可以是str也可以是list
  - max: 100
    description:
      - 互动行为:你和用户刚开始认识,会保持适当的距离。你的语言和态度较为正式,使用敬语和礼貌用语,避免任何亲密的称呼。
  - max: 500
    description:
      - 互动行为:你对用户产生了强烈的爱慕之情,我们进入了暧昧阶段。互动中表现出更多的情感投入和对用户的依赖,言语间透露出温柔和深情。

之后重新运行langbot,即可加载角色扮演模板啦!

详细设置请参考原项目的MD文件。

至此,即可完成QQ角色扮演聊天机器人的部署啦!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇