Skip to content

简单好用的AI聊天插件,支持多API,支持发送表情包,艾特,戳一戳等

License

Notifications You must be signed in to change notification settings

captain-wangrun-cn/nonebot-plugin-aitalk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NoneBotPluginLogo

NoneBotPluginText

nonebot-plugin-aitalk

✨ 简单好用的AI聊天插件 ✨

license pypi python

📖 介绍

简单好用的AI聊天插件,支持多API,支持让AI理解图片,发送表情包,合成语音,艾特,戳一戳等;可配置关键词允许AI主动发言

Important

写的比较史,欢迎提pr或issue!

🆕 特色

AI可以发的

  • 表情包
  • 语音(非预设语录,AI想说什么就生成什么)
  • 戳一戳
  • 艾特
  • 群内禁言

可以发给AI的 (AI可以理解的)

  • 图片/表情包 (需模型支持)

💿 安装

使用 nb-cli 安装 在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装
nb plugin install nonebot-plugin-aitalk
使用包管理器安装 在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令
pip
pip install nonebot-plugin-aitalk

打开 nonebot2 项目根目录下的 pyproject.toml 文件, 在 [tool.nonebot] 部分追加写入

plugins = ["nonebot_plugin_aitalk"]

⚙️ 配置

在 nonebot2 项目的.env文件中添加下表中的必填配置

必填项

配置项 类型 必填 默认值 说明
aitalk_api_list list [ ] API列表,支持多个API,格式请往下看
aitalk_available_memes list [ ] AI可以发送的表情包,格式请往下
aitalk_api_list(api列表)格式
[
{
    "name": "向用户展示的模型名称",
    "api_key": "你的api key",
    "model_name": "请求api用的模型名称",
    "api_url": "api接口地址",
    "image_input": 是否支持图片输入,适用于Qwen2.5-vl等多模态模型,默认为false
    "send_thinking": 当有思维链时是否发送,默认为false
    "description": "模型描述,用于展示给用户(非必填)"
},
{
    "name": "向用户展示的模型名称2",
    "api_key": "你的api key2",
    "model_name": "请求api用的模型名称2",
    "api_url": "api接口地址2"
}
]
aitalk_available_memes(AI可以发送的表情包)格式
[
{
    "url": "图片地址,支持链接或本地路径。⚠️⚠️注意!如果是windows系统的本地路径,请将路径中的\换成/,可以看下面的配置示例⚠️⚠️",
    "desc": "图片描述,告诉AI这张表情包是什么内容,用于什么场景等等"
},
{
    "url": "图片地址2",
    "desc": "图片描述2"
}
]

选填项

提示词

配置项 类型 必填 默认值 说明
aitalk_default_prompt str "你的回答应该尽量简洁、幽默、可以使用一些语气词、颜文字。你应该拒绝回答任何政治相关的问题。" 默认提示词
aitalk_disable_busy_prompts bool False 是否关闭诸如“不要着急哦!”或“你的操作太频繁了哦!”之类的提示信息
aitalk_default_prompt_file str "" 默认提示词文件路径,与提示词二选一,优先使用文件。请注意将windows系统路径中的\替换成\
aitalk_group_prompts_dir str "./aitalk_config/group_prompts" 分群提示词文件路径,在该路径下存放"群号.txt"文件,(例如: ./aitalk_config/group_prompts/12345.txt)。请注意将windows系统路径中的\替换成\

语音合成

配置项 类型 必填 默认值 说明
aitalk_tts_enabled bool false 是否开启语音合成
aitalk_tts_config bool false 语音合成配置,详细请看下方
aitalk_tts_config(语音合成配置)格式
{
    "api_url": "API地址,若默认地址无法访问可以自己搭建一个反向代理",
    "api_key": "API密钥",
    "reference_id": "音色id"
}
  • 前往FishAudio注册登录,并充值(建议先一美元)
  • 创建一个API key并填入配置项api_key
  • 点击上面的发现,寻找你想要的音色(或者有能力的自己合成),点进去
  • 复制图片中地址的红圈部分,该部分就是id,填入配置即可id

消息相关

配置项 类型 必填 默认值 说明
aitalk_reply_when_meme bool true 当只有表情包时,是否回复消息
aitalk_reply bool true 是否回复消息
aitalk_message_send_delay_min float 0.2 发送多条消息时,每条之间的最小延迟(秒),设为0则不延迟
aitalk_message_send_delay_max float 1.2 发送多条消息时,每条之间的最大延迟(秒),设为0则不延迟
aitalk_active_reply_context_timeout int 300 机器人主动回复后,上下文的有效时间(秒)
aitalk_active_reply_max_unrelated_followups int 3 在主动回复上下文中,AI连续判断N次与追问无关后,关闭本次主动回复会话 (0表示不启用此功能)(秒)
aitalk_group_active_reply_configs Dict {} 分群独立主动回复配置。键为群号字符串,值为该群的特定配置,详见下方配置示例
aitalk_active_reply_enabled bool False 是否启用主动回复功能

其他

配置项 类型 必填 默认值 说明
aitalk_command_start str "" 对话触发前缀,例如“/对话”,类似on_command,为空时直接艾特即可触发
aitalk_completion_config list [ ] 生成配置,格式请往下看
aitalk_max_split_length int 5 最大分割长度,将会在prompt中告诉ai,回复的消息数量不要大于这个值,可能不起作用
aitalk_max_context_length int 20 最长上下文消息数量,超过这个数量时,将会逐个抛弃最早的一条消息。这个数值包括设定消息
aitalk_save_user_config bool true 是否保存用户配置,关闭nonebot时将会保存用户所选模型,对话内容等,启动时读取
aitalk_default_available bool true 是否默认允许群聊使用,为false时需要手动使用指令开启
aitalk_default_available_private bool true 是否默认允许私聊使用,为false时需要手动使用指令开启
aitalk_chat_cd int 5 聊天cd,单位秒
aitalk_active_reply_keywords list[str] [] 主动回复的触发关键字列表, 例如 '["问题", "请问", "大佬"]'
aitalk_active_reply_probability float 0.3 满足关键字后,触发主动回复的概率 (0.0 到 1.0)
aitalk_active_reply_no_keyword_probability float 0.05 未满足关键字时,触发主动回复的概率 (0.0 到 1.0),建议设置较低的值
aitalk_completion_config(生成配置)格式
{
    "max_token": 1024,
    "temperature": 0.7
    "top_p": 0.9
}

⚙️ 配置示例

env配置示例
aitalk_api_list = '
[
{
    "name": "deepseekr1",
    "api_key": "sk-1145141919810",
    "model_name": "deepseek-ai/DeepSeek-R1",
    "api_url": "https://api.siliconflow.cn/v1",
    "send_thinking": true
},
{
    "name": "gemma-27b",
    "api_key": "sk-1145141919810",
    "model_name": "google/gemma-2-27b-it",
    "api_url": "https://api.siliconflow.cn/v1"
}
]
'
aitalk_available_memes = '
[
{
    "url": "D:/bots/imgs/1.png",
    "desc": "很抱歉伤害到你"
}
{
    "url": "D:/bots/imgs/3.png",
    "desc": "啊哈哈...(感到尴尬)"
}
]
'

aitalk_default_prompt_file = "D:\\prompt\\日富美.txt"
aitalk_group_prompts_dir = "./aitalk_config/group_prompts"

aitalk_tts_enabled = true
aitalk_tts_config = '
{
    "api_url": "https://api.fish.audio",
    "api_key": "114514919810",
    "reference_id": "fee77b5adcb840178e9596514d713a3b"
}

aitalk_message_send_delay_min = 0.3
aitalk_message_send_delay_max = 1.2

aitalk_active_reply_enabled = true
aitalk_active_reply_keywords = '["问题","请问","大佬","咋弄","咋搞","怎么","解压密码"]'
aitalk_active_reply_probability = 1.0
aitalk_active_reply_no_keyword_probability = 0.05
aitalk_group_active_reply_configs = '
{
    "123456": {
        "keywords": ["临时触发词temp"],
        "probability": 1.0,
        "no_keyword_probability": 0.05
    },
    "654321": {
        "keywords": ["问题","请问","大佬","咋弄","咋搞","怎么"],
        "probability": 1.0,
        "no_keyword_probability": 0.05
    }
}'

aitalk_disable_busy_prompts = Ture

多群自定义提示词参考配置

🎉 使用

指令表

指令 权限 需要@ 范围 说明
@机器人 群聊 群聊 艾特机器人即可聊天
模型选择 群聊 群聊 选择模型
ai对话 开启 管理员+ 群聊 开启本群ai对话
ai对话 关闭 管理员+ 群聊 关闭本群ai对话
清空聊天记录 群聊 群聊 清空对话记录

效果图

她不肯说qwq

🍟参考

nonebot-plugin-llmchat 参考了部分代码以及prompt

贡献者

📃 更新日志

3.10.28(2025.05.21)

  • 🐛修复“无需回复”BUGPR#16
  • 🆕允许关闭提示PR#16
  • 🐛修复某些情况下QQ图片因SSL无法下载的问题
之前更新

3.9.26(2025.05.12)

  • 🆕更新多群配置主动触发关键词
  • 🔧增加对AI返回的JSON字符串的解析的鲁棒性
  • PR#15

3.8.25(2025.05.11)

  • 🆕支持读取引用消息中的文本
  • 🆕增加配置,允许AI在回复多条消息时增加随机延迟
  • 🆕增加配置,允许在检测到关键词时询问AI,由AI自主决定是否需要主动发言回复用户。
  • 🆕增加独立的JSON修复功能,用于在主聊天AI返回的JSON格式错误后,尝试使用独立对话AI自动修复该JSON格式。
  • 🔧更新README.md中的配置项
  • PR#14

3.4.24(2025.05.08)

  • 🐛修复戳一戳失败的问题PR#13

3.5.23(2025.05.07)

  • 🆕图片输入支持引用带有图片的消息PR#12
  • 🆕支持多图输入PR#12
  • 🔧添加了一些请求时的异常处理
  • 🐛修复README中配置不完全

3.4.22(2025.05.07)

  • 🆕新增语音合成功能
  • 🔧优化README

2.4.21(2025.05.07)

  • 🆕新增分群不同提示词功能
  • 🐛其他中量代码优化[PR#11]
  • (#11)

2.3.20(2025.04.01)

  • 🐛尝试修复思维链问题(#10)(#10)
  • 🆕添加了模型描述,选择模型时发送给用户

2.3.19(2025.03.11)

  • 🐛修复Q群管家检测BUG

2.3.18(2025.03.07)

  • 🐛修复思维链输出

2.3.17(2025.03.07)

  • 🐛修复超出最长上下文数量时的BUG
  • 🆕增加禁言用户的功能PR#8

2.2.16(2025.03.06)

  • 🐛修复私聊开关BUG

2.2.15(2025.03.05)

  • 🆕支持输出思维链(不推荐开启,思维可能错乱)
  • 🔧优化prompt
  • 🐛再次修复读取“是否回复”配置项的BUG,并测试通过PR#5

2.1.14(2025.03.04)

  • 🐛修复生成失败后队列未移除BUG

2.1.13(2025.03.04)

  • 🐛修复路径BUG和配置读取BUGPR#4

2.1.12(2025.03.04)

  • 🆕支持让AI理解图片(图片输入)
  • 🐛优化代码
  • 🆕更改群聊聊天,支持管理员设置群内模型#1
  • 🐛修复连续对话问题#2

1.0.10(2025.03.02)

  • 🐛修复了设置输入状态的问题

1.0.9(2025.02.28)

  • 🐛修复了私聊聊天的一些问题

1.0.8(2025.02.28)

  • 🆕添加了私聊聊天支持

1.0.7(2025.02.25)

  • 🐛更改data.py

1.0.6(2025.02.23)

  • 😡排除Q群管家

1.0.5(2025.02.23)

  • 🐛修复了表情包链接问题

1.0.4(2025.02.23)

  • 🐛修复一些问题,更改README

1.0.3(2025.02.23)

  • ⬇️修复依赖问题

1.0.2(2025.02.23)

  • 🐛修复表情包本地路径问题

1.0.1(2025.02.22)

  • 📝更新README

1.0.0(2025.02.22)

  • 🎉发布

About

简单好用的AI聊天插件,支持多API,支持发送表情包,艾特,戳一戳等

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages