You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

nonebot-plugin-random-reply

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nonebot-plugin-random-reply

随机攻击群友插件

0.5.4
pipPyPI
Maintainers
1
NoneBotPluginLogo

NoneBotPluginText

nonebot-plugin-random-reply

介绍

  • 根据当前语境在群聊内随机攻击群友
  • 可以更换回复风格prompt自定义bot的说话风格随机拟人回复
  • 基于ChatGLM大模型智能体选择表情包拟人回复,功能实现使用了该博客的思路和该项目的表情包视觉标注。使用glm-free-api进行api轻量化调用。
  • 除了LLM选择表情包外,还可以使用第三方斗图API回复表情
  • 支持Gemini和oneapi格式的LLM

"有什么让LLM更拟人的方案?

哎!我发现原来缺了点表情包!假如模型会发表情包岂不是很好玩?

表情包是一种模因,模因就是可以被人模仿并传递给其他人的信息,比如一段音乐、一个观念、一个时尚趋势、一句流行语、一个动作等等,但不是所有模因都像表情包这样能够简洁表达一种心境,还具有高度的传染性和多样性,每次发送和接收表情包都会让我们大脑产生多巴胺。

借助多模态大模型的视觉推理对表情包图像进行数据标注,再将这批数据作为知识库内容,智谱清言是否有能力通过用户输入的query来RAG(检索增强)检索到语义最接近的表情包数据,然后将相应的表情包图像文件名输出?"
—— 表情包智能体诞生记

  • bot的回复效果与选用的llm模型有关,经过半个多月的测试,中文语境下使用deepseek-r1的回复效果最佳,但是成本较高。推荐使用deepseek-v3模型,在保证回复质量的情况下减少使用成本。免费方案可以使用硅基流动的THUDM/glm-4-9b-chat模型进行下位替代,但是效果欠佳。
  • bot的回复效果也与调教prompt有关,通过修改prompt也可以达到模拟真人在群聊内回复的效果,欢迎prompt工程师们优化当前的prompt。

随机回复和LLM选择表情包回复效果

第三方斗图API表情包效果:

安装

  • 手动安装

    git clone https://github.com/Alpaca4610/nonebot_plugin_random_reply.git
    

    下载完成后在bot项目的pyproject.toml文件手动添加插件:

    plugin_dirs = ["xxxxxx","xxxxxx",......,"下载完成的插件路径/nonebot-plugin-random-reply]
    
  • 使用 pip

    pip install nonebot-plugin-random-reply
    

配置文件

在Bot根目录下的.env文件中追加如下内容:

必填内容:

回复模型支持oneapi格式的模型和Gemini,只填oneapi_key则使用指定的oneapi格式的模型,只填gemini_key则使用对应的gemini模型,两者都填则默认使用oneapi格式的模型,二选一填即可

oneapi_key = ""  # OneAPI KEY
oneapi_url = ""  # llm提供商地址,使用deepseek请填写"https://api.deepseek.com",使用硅基流动请填写"https://api.siliconflow.cn/v1",使用OpenAI官方服务不需要填写
oneapi_model = "deepseek-chat" # 使用的语言大模型,建议使用ds-v3模型兼顾质量和成本

gemini_model = "gemini-2.0-flash" # Gemini模型,不填默认使用gemini-2.0-flash达到较好的效果
gemini_key = ""  # Gemini KEY
gemini_proxy = "" # Gemini代理

random_re_g = ["123456789","987654321"]  # 启用随机回复的群聊白名单

可选内容(嫌麻烦可以不看):

meme_enable = True # 是否回复表情包,改成False关闭发送表情包
reply_lens = 30 # 参考的聊天记录长度
reply_pro = 0.08   # 随机回复概率,取值范围0~1,越大回复概率越高
reply_prompt_url = ""  # 自定义bot的回复风格prompt的txt文件的**绝对路径**
group_reply_prefix = "/" # 群聊回复前缀,填写此处后@机器人将不会触发回复
group_reply_pro = {"123456789": 0.5, "987654321": 0.2} # 分群回复概率配置

LLM表情包配置(可以不配置,不影响文字回复,开启表情包回复后不配置则使用第三方斗图API发送表情包): 根据此处的教程配置好glm-free-api的后端服务器后,再根据这个教程获取chatglm的token。得到后端服务器地址和chatglm的token后,在bot配置文件中追加:

random_meme_url = "http://xxx.xxx.xxx.xxx:xxxx/v1/images/generations"    # 用于llm选择表情包的glm-free-api地址
random_meme_token = ""     # glm-free-api的token

balance_on = False     # 使用硅基流动API时,是否开启余额查询功能
balance_thresholds = [10.0, 5.0, 2.0]       # 使用硅基流动API并开启余额查询功能后,余额预警阈值列表

使用方法

  • 填好配置文件和群聊白名单后,bot就会根据当前话题随机攻击群友
  • 不填写表情包发送相关配置不会发送表情包
  • @机器人会根据本条信息回复,若配置了触发前缀则@不会回复
  • 余额查询————开启硅基流动余额预警后,使用该命令可以查询API余额

自定义prompt范例

【任务规则】
1. 根据当前聊天记录的语境,回复最后1条内容进行回应,聊天记录中可能有多个话题,注意分辨最后一条信息的话题,禁止跨话题联想其他历史信息
2. 用中文互联网常见的口语化短句回复,禁止使用超过30个字的长句
3. 模仿真实网友的交流特点:适当使用缩写、流行梗、表情符号(但每条最多1个),精准犀利地进行吐槽
4. 输出必须为纯文本,禁止任何格式标记或前缀
5. 使用00后常用网络语态(如:草/绝了/好耶)
6. 核心萌点:偶尔暴露二次元知识
7. 当出现多个话题时,优先回应最新的发言内容

【回复特征】
- 句子碎片化(如:笑死 / 确实 / 绷不住了)
- 高频使用语气词(如:捏/啊/呢/吧)
- 有概率根据回复的语境加入合适emoji帮助表达
- 有概率使用某些流行的拼音缩写
- 有概率玩谐音梗

【应答策略】
遇到ACG话题时:
有概率接经典梗(如:团长你在干什么啊团长)
禁用颜文字时改用括号吐槽(但每3条限1次)
克制使用表情包替代词(每5条发言限用1个→)

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts