一个基于新版OpenAI SDK的智能聊天插件,为NcatBot提供强大的AI对话功能。
- 🤖 智能对话:支持GPT-3.5-turbo和GPT-4模型
- 💬 群聊私聊:同时支持群聊和私聊环境
- ⚙️ 多配置文件:支持自定义多个对话预设
- 🔄 会话管理:支持重置和切换对话配置
- 🎯 精确控制:支持@机器人触发和用户名前缀
- 📝 命令系统:完整的命令控制界面
- 🧠 智能会话管理:自动控制会话长度,保护最近对话
- ⚡ 内存优化:动态修剪超长会话,提升性能
- Python 3.8+
- NcatBot 框架
- OpenAI API Key
将插件源码放置到你的 plugins
目录下:
# 克隆插件到plugins目录
git clone https://github.com/Yang-qwq/openai_chat_plugin.git plugins/openai_chat_plugin
cd /path/to/ncatbot/
git submodule add https://github.com/Yang-qwq/openai_chat_plugin.git plugins/openai_chat_plugin
在NcatBot启动后,依次执行以下配置命令:
# 设置OpenAI API Key(强烈建议私聊发送)
/cfg OpenAIChatPlugin.api_key sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 设置OpenAI API Base URL
/cfg OpenAIChatPlugin.base_url https://api.openai.com/v1
# 设置使用的模型
/cfg OpenAIChatPlugin.model gpt-3.5-turbo
# 设置是否必须@机器人才能触发对话
/cfg OpenAIChatPlugin.must_at_bot true
# 设置是否在消息前添加用户名前缀
/cfg OpenAIChatPlugin.insert_username_as_prefix false
# 标记配置完成
/cfg OpenAIChatPlugin.is_configured true
将以下内容添加到 config.yaml
中:
plugins_config:
openai_chat_plugin:
presents:
default: # 默认配置(不可删除)
display_name: "默认助手"
conversations:
- role: "system"
content: "You are a helpful assistant."
# 自定义配置示例
programmer:
display_name: "程序员助手"
conversations:
- role: "system"
content: "You are a helpful programming assistant. You help users with coding questions and provide clear, concise explanations."
translator:
display_name: "翻译助手"
conversations:
- role: "system"
content: "You are a professional translator. You help users translate text between different languages accurately and naturally."
- 群聊:在群聊中@机器人即可开始对话
- 私聊:直接发送消息即可开始对话
# 为当前环境设置配置文件
/chat set-present programmer
# 为指定群组设置配置文件
/chat set-present programmer group:1919810
# 为指定用户设置配置文件
/chat set-present translator user:114514
# 重置当前环境会话
/chat reset
# 重置指定群组会话
/chat reset group:1919810
# 重置指定用户会话
/chat reset user:114514
# 显示帮助信息
/chat help
配置项 | 类型 | 默认值 | 说明 |
---|---|---|---|
api_key |
string | - | OpenAI API密钥 |
model |
string | gpt-3.5-turbo | 使用的AI模型 |
base_url |
string | https://api.openai.com/v1 | API基础URL |
must_at_bot |
boolean | true | 群聊中是否必须@机器人 |
insert_username_as_prefix |
boolean | false | 是否添加用户名前缀 |
max_conversations |
integer | 21 | 每个会话的最大消息数 |
is_configured |
boolean | false | 插件是否已配置 |
插件支持创建多个对话预设,每个预设可以有不同的系统提示词:
presents:
default:
display_name: "默认助手"
conversations:
- role: "system"
content: "You are a helpful assistant."
creative:
display_name: "创意助手"
conversations:
- role: "system"
content: "You are a creative assistant who helps users brainstorm ideas and think outside the box."
- 群聊会话独立存储
- 私聊会话独立存储
- 支持会话重置和配置切换
插件具备智能的会话长度控制功能:
- 自动修剪:当会话长度超过
max_conversations
限制时,自动删除最早的非system消息 - 保护最近对话:优先保留最近的对话内容,删除最早的历史消息
- 配置自适应:支持动态调整最大消息数,插件会自动清理超长会话
- 双重检查:在添加新消息前后都进行长度检查,确保会话始终符合限制
- 主动清理:插件加载时会自动检查并清理所有超长会话
工作原理:
- 插件启动时检查所有现有会话
- 删除最早的非system消息(保留预设配置)
- 持续删除直到会话长度符合限制
- 记录详细的修剪日志便于调试
-
插件未响应
- 检查
is_configured
是否设置为true
- 确认API Key是否正确
- 检查网络连接
- 检查
-
群聊中@机器人无响应
- 确认
must_at_bot
设置 - 检查机器人QQ号是否正确
- 确认
-
配置文件不存在错误
- 检查
config.yaml
中的presents
配置 - 确认配置文件名称拼写正确
- 检查
-
会话长度异常
- 检查
max_conversations
配置值是否合理 - 查看日志确认自动修剪功能是否正常工作
- 确认预设配置中的system消息数量
- 检查
插件会输出详细的调试日志,可以通过日志查看运行状态:
# 查看插件日志
tail -f logs/ncatbot.log | grep openai_chat_plugin
- ✅ 智能会话管理:新增自动会话长度控制功能
- ✅ 配置自适应:支持动态调整最大消息数限制
- ✅ 内存优化:自动删除最早的非system消息,保护最近对话
- ✅ 双重保护机制:在添加消息前后都进行长度检查
- ✅ 主动清理功能:插件加载时自动清理超长会话
- ✅ 递归修剪算法:确保会话长度始终符合配置要求
- ✅ 详细日志记录:记录所有修剪操作便于调试
- ✅ 改进命令处理系统
- ✅ 增加权限控制功能
- ✅ 修复命令处理逻辑错误
- ✅ 添加异常处理机制
- ✅ 完善帮助命令功能
- ✅ 改进代码结构和可读性
- ✅ 基础对话功能
- ✅ 多配置文件支持
- ✅ 命令控制系统
欢迎提交Issue和Pull Request来改进这个插件!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 开启 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- NcatBot - 优秀的机器人框架
⭐ 如果这个插件对你有帮助,请给个Star支持一下!