<p align="center">
<a href="https://v2.nonebot.dev/store">
<img src="https://user-images.githubusercontent.com/44545625/209862575-acdc9feb-3c76-471d-ad89-cc78927e5875.png" width="180" height="180" alt="NoneBotPluginLogo"></a>
</p>
<div align="center">
# nonebot_plugin_eop_ai
_✨ Nonebot2 一款调用eop api的AI聊天插件 ✨_
</div>
<p align="center">
<a href="https://opensource.org/licenses/MIT">
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="license">
</a>
<a href="https://v2.nonebot.dev/">
<img src="https://img.shields.io/static/v1?label=nonebot&message=v2rc1%2B&color=green" alt="nonebot2">
</a>
<img src="https://img.shields.io/static/v1?label=python+&message=3.8%2B&color=blue" alt="python">
</p>
## 开发者信息
- nikiss,个人QQ 1299577815,插件反馈QQ群 226462236,插件有问题到群里反馈响应更快哦
- <img width="100" src="https://avatars.githubusercontent.com/u/31379266"/>
## 简介
本插件需要调用一个逆向poe前端写的后端,也是我负责开发维护的,[eop-next-api仓库](https://github.com/nikissXI/eop-next-api),不带前端
<img width="100%" src="https://raw.githubusercontent.com/nikissXI/nonebot_plugins/main/nonebot_plugin_eop_ai/readme_img/1.jpg"/>
## 功能列表
> 以下未勾选功能仅表示未来可能开发的方向,不代表实际规划进度,具体开发事项可能随时变动
> 勾选: 已实现功能;未勾选: 正在开发 / 计划开发 / 待定设计
- [x] 基本的对话功能,支持文字或图片回复,如使用图片回复调用mozilla的剪切板查看回复的纯文字
- [x] 配合前端进行会话管理
- [x] 登陆失败时自动尝试重新登录
- [x] 默认bot设置
- [ ] 预设管理
- [ ] 更完善的会话管理
## 安装
使用nb-cli安装
```bash
nb plugin install nonebot_plugin_eop_ai
```
或者
直接把插件clone下来放进去plugins文件夹,依赖库自己补全
## 配置
在bot对应的.env文件修改,文档中的均是默认值。
#### 必填项
```bash
# eop后端url地址,如 https://api.eop.com
eop_ai_base_addr =
# eop登录token
eop_ai_access_token = token
```
#### 大概率用得上的选填项
```bash
# 代理地址,仅支持http代理
eop_ai_http_proxy_addr = http://127.0.0.1:7890
# 默认bot
default_botName = GPT-4o-Mini
# AI回答默认输出类型,填1/2/3其中一个数字,1=文字,2=图片,3=图片+文字(文字在网页粘贴板)
eop_ai_reply_type = 3
# 图片输出时,图片的宽度
eop_ai_img_width = 400
# 处理消息时是否提示(不嫌烦或测试的时候可以打开)
eop_ai_reply_notice = false
# 群聊是否共享会话
eop_ai_group_share = true
# 是否默认允许所有群聊使用,否则需要使用命令启用(默认 /eopai)
eop_ai_all_group_enable = true
# 群聊中,机器人的回复是否艾特提问用户,如果eop_ai_group_share为false该选项强制为true
eop_ai_reply_at_user = true
```
#### 如果要修改触发命令就填
```bash
# 群聊艾特和发bot昵称是否响应(需要先启用该群的eop ai)
eop_ai_talk_tome = true
# 如果关闭所有群聊使用,启用该群的命令
eop_ai_group_enable_cmd = /eopai
# 触发对话的命令前缀,如果eop_ai_talk_tome为true直接艾特即可
eop_ai_talk_cmd = /talk
# 私聊沉浸式对话触发命令
eop_ai_talk_p_cmd = /hi
# 重置对话,清空上下文记忆
eop_ai_reset_cmd = /reset
# 删除对话
eop_ai_delete_cmd = /delete
# AI回答输出类型切换,仅对使用命令的会话生效
eop_ai_reply_type_cmd = /reply
# 设置新会话默认bot
eop_ai_default_bot_cmd = /default
```
#### 大概率用不上的选填项
```bash
# 机器人的QQ号列表,选填
# 如果有多个bot连接,会按照填写的list,左边的机器人QQ优先级最高 1234 > 5678 > 6666,会自动切换
# 如果不填该配置则由第一个连上的bot响应,所以单bot连可以不填,写 ["all"]则所有机器人均响应
eop_ai_bot_qqnum_list = [1234, 5678, 6666]
# 插件数据文件名,默认./data/eop_ai.json
eop_ai_data = eop_ai.json
```
## 插件命令(均可修改!)
| 指令 | 说明 |
|:-----:|:----:|
| /eopai | 如果eop_ai_group_enable_cmd为false,则用该命令启用 |
| /talk | 开始对话,默认群里@机器人也可以 |
| /hi | 沉浸式对话(仅限私聊) |
| /reset | 清空上下文记忆 |
| /reply | AI回答输出类型切换 |
| /default | 设置新会话默认bot |
## 更新日志
### 2024/09/02 \[v0.3.2]
* 修复会话丢失不能重置
### 2024/08/15 \[v0.3.1]
* 修复bug
### 2024/08/13 \[v0.3.0]
* 适配最新后端
### 2024/07/29 \[v0.2.6]
* 默认模型改为GPT4o mini
### 2024/07/27 \[v0.2.5]
* 适配最新后端
### 2024/06/25 \[v0.2.3]
* 适配新的后端,新增默认bot设置
### 2023/11/21 \[v0.1.6]
* 适配后端的接口更新
### 2023/10/8 \[v0.1.5]
* 更新命令/reply用于切换输出模式
### 2023/10/7 \[v0.1.4]
* 优化转图片输出的速度
### 2023/10/6 \[v0.1.3]
* 优化md转图片的格式
### 2023/10/6 \[v0.1.2]
* 参考项目[nonebot-plugin-naturel-gpt](https://github.com/KroMiose/nonebot_plugin_naturel_gpt),增加utils.py中的gen_chat_text函数
* 优化响应器逻辑
### 2023/10/5 \[v0.1.1]
* 发布插件
Raw data
{
"_id": null,
"home_page": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_eop_ai",
"name": "nonebot_plugin_eop_ai",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": null,
"author": "nikissXI",
"author_email": "1299577815@qq.com",
"download_url": "https://files.pythonhosted.org/packages/ea/4b/2405628086fad49978377487a56f520a3839c391bdad219af4ce61477a73/nonebot_plugin_eop_ai-0.3.2.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <a href=\"https://v2.nonebot.dev/store\">\n <img src=\"https://user-images.githubusercontent.com/44545625/209862575-acdc9feb-3c76-471d-ad89-cc78927e5875.png\" width=\"180\" height=\"180\" alt=\"NoneBotPluginLogo\"></a>\n</p>\n\n<div align=\"center\">\n\n# nonebot_plugin_eop_ai\n\n_\u2728 Nonebot2 \u4e00\u6b3e\u8c03\u7528eop api\u7684AI\u804a\u5929\u63d2\u4ef6 \u2728_\n\n</div>\n<p align=\"center\">\n <a href=\"https://opensource.org/licenses/MIT\">\n <img src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"license\">\n </a>\n <a href=\"https://v2.nonebot.dev/\">\n <img src=\"https://img.shields.io/static/v1?label=nonebot&message=v2rc1%2B&color=green\" alt=\"nonebot2\">\n </a>\n <img src=\"https://img.shields.io/static/v1?label=python+&message=3.8%2B&color=blue\" alt=\"python\">\n</p>\n\n## \u5f00\u53d1\u8005\u4fe1\u606f\n- nikiss\uff0c\u4e2a\u4ebaQQ 1299577815\uff0c\u63d2\u4ef6\u53cd\u9988QQ\u7fa4 226462236\uff0c\u63d2\u4ef6\u6709\u95ee\u9898\u5230\u7fa4\u91cc\u53cd\u9988\u54cd\u5e94\u66f4\u5feb\u54e6\n- <img width=\"100\" src=\"https://avatars.githubusercontent.com/u/31379266\"/> \n\n## \u7b80\u4ecb\n\u672c\u63d2\u4ef6\u9700\u8981\u8c03\u7528\u4e00\u4e2a\u9006\u5411poe\u524d\u7aef\u5199\u7684\u540e\u7aef\uff0c\u4e5f\u662f\u6211\u8d1f\u8d23\u5f00\u53d1\u7ef4\u62a4\u7684\uff0c[eop-next-api\u4ed3\u5e93](https://github.com/nikissXI/eop-next-api)\uff0c\u4e0d\u5e26\u524d\u7aef\n\n<img width=\"100%\" src=\"https://raw.githubusercontent.com/nikissXI/nonebot_plugins/main/nonebot_plugin_eop_ai/readme_img/1.jpg\"/> \n\n## \u529f\u80fd\u5217\u8868\n\n> \u4ee5\u4e0b\u672a\u52fe\u9009\u529f\u80fd\u4ec5\u8868\u793a\u672a\u6765\u53ef\u80fd\u5f00\u53d1\u7684\u65b9\u5411\uff0c\u4e0d\u4ee3\u8868\u5b9e\u9645\u89c4\u5212\u8fdb\u5ea6\uff0c\u5177\u4f53\u5f00\u53d1\u4e8b\u9879\u53ef\u80fd\u968f\u65f6\u53d8\u52a8\n> \u52fe\u9009: \u5df2\u5b9e\u73b0\u529f\u80fd\uff1b\u672a\u52fe\u9009: \u6b63\u5728\u5f00\u53d1 / \u8ba1\u5212\u5f00\u53d1 / \u5f85\u5b9a\u8bbe\u8ba1\n\n- [x] \u57fa\u672c\u7684\u5bf9\u8bdd\u529f\u80fd\uff0c\u652f\u6301\u6587\u5b57\u6216\u56fe\u7247\u56de\u590d\uff0c\u5982\u4f7f\u7528\u56fe\u7247\u56de\u590d\u8c03\u7528mozilla\u7684\u526a\u5207\u677f\u67e5\u770b\u56de\u590d\u7684\u7eaf\u6587\u5b57\n- [x] \u914d\u5408\u524d\u7aef\u8fdb\u884c\u4f1a\u8bdd\u7ba1\u7406\n- [x] \u767b\u9646\u5931\u8d25\u65f6\u81ea\u52a8\u5c1d\u8bd5\u91cd\u65b0\u767b\u5f55\n- [x] \u9ed8\u8ba4bot\u8bbe\u7f6e\n- [ ] \u9884\u8bbe\u7ba1\u7406\n- [ ] \u66f4\u5b8c\u5584\u7684\u4f1a\u8bdd\u7ba1\u7406\n\n## \u5b89\u88c5\n\n\u4f7f\u7528nb-cli\u5b89\u88c5\n```bash\nnb plugin install nonebot_plugin_eop_ai\n```\n\n\u6216\u8005 \n\u76f4\u63a5\u628a\u63d2\u4ef6clone\u4e0b\u6765\u653e\u8fdb\u53bbplugins\u6587\u4ef6\u5939\uff0c\u4f9d\u8d56\u5e93\u81ea\u5df1\u8865\u5168 \n\n## \u914d\u7f6e\n\u5728bot\u5bf9\u5e94\u7684.env\u6587\u4ef6\u4fee\u6539\uff0c\u6587\u6863\u4e2d\u7684\u5747\u662f\u9ed8\u8ba4\u503c\u3002 \n\n#### \u5fc5\u586b\u9879\n```bash\n# eop\u540e\u7aefurl\u5730\u5740\uff0c\u5982 https://api.eop.com\neop_ai_base_addr = \n# eop\u767b\u5f55token\neop_ai_access_token = token\n```\n\n#### \u5927\u6982\u7387\u7528\u5f97\u4e0a\u7684\u9009\u586b\u9879\n```bash\n# \u4ee3\u7406\u5730\u5740\uff0c\u4ec5\u652f\u6301http\u4ee3\u7406\neop_ai_http_proxy_addr = http://127.0.0.1:7890\n# \u9ed8\u8ba4bot\ndefault_botName = GPT-4o-Mini\n# AI\u56de\u7b54\u9ed8\u8ba4\u8f93\u51fa\u7c7b\u578b\uff0c\u586b1/2/3\u5176\u4e2d\u4e00\u4e2a\u6570\u5b57\uff0c1=\u6587\u5b57\uff0c2=\u56fe\u7247\uff0c3=\u56fe\u7247+\u6587\u5b57\uff08\u6587\u5b57\u5728\u7f51\u9875\u7c98\u8d34\u677f\uff09\neop_ai_reply_type = 3\n# \u56fe\u7247\u8f93\u51fa\u65f6\uff0c\u56fe\u7247\u7684\u5bbd\u5ea6\neop_ai_img_width = 400\n# \u5904\u7406\u6d88\u606f\u65f6\u662f\u5426\u63d0\u793a\uff08\u4e0d\u5acc\u70e6\u6216\u6d4b\u8bd5\u7684\u65f6\u5019\u53ef\u4ee5\u6253\u5f00\uff09\neop_ai_reply_notice = false\n# \u7fa4\u804a\u662f\u5426\u5171\u4eab\u4f1a\u8bdd\neop_ai_group_share = true\n# \u662f\u5426\u9ed8\u8ba4\u5141\u8bb8\u6240\u6709\u7fa4\u804a\u4f7f\u7528\uff0c\u5426\u5219\u9700\u8981\u4f7f\u7528\u547d\u4ee4\u542f\u7528\uff08\u9ed8\u8ba4 /eopai\uff09\neop_ai_all_group_enable = true\n# \u7fa4\u804a\u4e2d\uff0c\u673a\u5668\u4eba\u7684\u56de\u590d\u662f\u5426\u827e\u7279\u63d0\u95ee\u7528\u6237\uff0c\u5982\u679ceop_ai_group_share\u4e3afalse\u8be5\u9009\u9879\u5f3a\u5236\u4e3atrue\neop_ai_reply_at_user = true\n```\n\n#### \u5982\u679c\u8981\u4fee\u6539\u89e6\u53d1\u547d\u4ee4\u5c31\u586b\n```bash\n# \u7fa4\u804a\u827e\u7279\u548c\u53d1bot\u6635\u79f0\u662f\u5426\u54cd\u5e94\uff08\u9700\u8981\u5148\u542f\u7528\u8be5\u7fa4\u7684eop ai\uff09\neop_ai_talk_tome = true\n# \u5982\u679c\u5173\u95ed\u6240\u6709\u7fa4\u804a\u4f7f\u7528\uff0c\u542f\u7528\u8be5\u7fa4\u7684\u547d\u4ee4\neop_ai_group_enable_cmd = /eopai\n# \u89e6\u53d1\u5bf9\u8bdd\u7684\u547d\u4ee4\u524d\u7f00\uff0c\u5982\u679ceop_ai_talk_tome\u4e3atrue\u76f4\u63a5\u827e\u7279\u5373\u53ef\neop_ai_talk_cmd = /talk\n# \u79c1\u804a\u6c89\u6d78\u5f0f\u5bf9\u8bdd\u89e6\u53d1\u547d\u4ee4\neop_ai_talk_p_cmd = /hi\n# \u91cd\u7f6e\u5bf9\u8bdd\uff0c\u6e05\u7a7a\u4e0a\u4e0b\u6587\u8bb0\u5fc6\neop_ai_reset_cmd = /reset\n# \u5220\u9664\u5bf9\u8bdd\neop_ai_delete_cmd = /delete\n# AI\u56de\u7b54\u8f93\u51fa\u7c7b\u578b\u5207\u6362\uff0c\u4ec5\u5bf9\u4f7f\u7528\u547d\u4ee4\u7684\u4f1a\u8bdd\u751f\u6548\neop_ai_reply_type_cmd = /reply\n# \u8bbe\u7f6e\u65b0\u4f1a\u8bdd\u9ed8\u8ba4bot\neop_ai_default_bot_cmd = /default\n```\n\n#### \u5927\u6982\u7387\u7528\u4e0d\u4e0a\u7684\u9009\u586b\u9879\n```bash\n# \u673a\u5668\u4eba\u7684QQ\u53f7\u5217\u8868\uff0c\u9009\u586b\n# \u5982\u679c\u6709\u591a\u4e2abot\u8fde\u63a5\uff0c\u4f1a\u6309\u7167\u586b\u5199\u7684list\uff0c\u5de6\u8fb9\u7684\u673a\u5668\u4ebaQQ\u4f18\u5148\u7ea7\u6700\u9ad8 1234 > 5678 > 6666\uff0c\u4f1a\u81ea\u52a8\u5207\u6362\n# \u5982\u679c\u4e0d\u586b\u8be5\u914d\u7f6e\u5219\u7531\u7b2c\u4e00\u4e2a\u8fde\u4e0a\u7684bot\u54cd\u5e94\uff0c\u6240\u4ee5\u5355bot\u8fde\u53ef\u4ee5\u4e0d\u586b\uff0c\u5199 [\"all\"]\u5219\u6240\u6709\u673a\u5668\u4eba\u5747\u54cd\u5e94\neop_ai_bot_qqnum_list = [1234, 5678, 6666]\n# \u63d2\u4ef6\u6570\u636e\u6587\u4ef6\u540d\uff0c\u9ed8\u8ba4./data/eop_ai.json\neop_ai_data = eop_ai.json\n```\n\n## \u63d2\u4ef6\u547d\u4ee4\uff08\u5747\u53ef\u4fee\u6539\uff01\uff09 \n| \u6307\u4ee4 | \u8bf4\u660e |\n|:-----:|:----:|\n| /eopai | \u5982\u679ceop_ai_group_enable_cmd\u4e3afalse\uff0c\u5219\u7528\u8be5\u547d\u4ee4\u542f\u7528 |\n| /talk | \u5f00\u59cb\u5bf9\u8bdd\uff0c\u9ed8\u8ba4\u7fa4\u91cc@\u673a\u5668\u4eba\u4e5f\u53ef\u4ee5 |\n| /hi | \u6c89\u6d78\u5f0f\u5bf9\u8bdd\uff08\u4ec5\u9650\u79c1\u804a\uff09 |\n| /reset | \u6e05\u7a7a\u4e0a\u4e0b\u6587\u8bb0\u5fc6 |\n| /reply | AI\u56de\u7b54\u8f93\u51fa\u7c7b\u578b\u5207\u6362 |\n| /default | \u8bbe\u7f6e\u65b0\u4f1a\u8bdd\u9ed8\u8ba4bot |\n\n\n## \u66f4\u65b0\u65e5\u5fd7\n### 2024/09/02 \\[v0.3.2]\n\n* \u4fee\u590d\u4f1a\u8bdd\u4e22\u5931\u4e0d\u80fd\u91cd\u7f6e\n\n### 2024/08/15 \\[v0.3.1]\n\n* \u4fee\u590dbug\n\n### 2024/08/13 \\[v0.3.0]\n\n* \u9002\u914d\u6700\u65b0\u540e\u7aef\n\n### 2024/07/29 \\[v0.2.6]\n\n* \u9ed8\u8ba4\u6a21\u578b\u6539\u4e3aGPT4o mini\n\n### 2024/07/27 \\[v0.2.5]\n\n* \u9002\u914d\u6700\u65b0\u540e\u7aef\n\n### 2024/06/25 \\[v0.2.3]\n\n* \u9002\u914d\u65b0\u7684\u540e\u7aef\uff0c\u65b0\u589e\u9ed8\u8ba4bot\u8bbe\u7f6e\n\n### 2023/11/21 \\[v0.1.6]\n\n* \u9002\u914d\u540e\u7aef\u7684\u63a5\u53e3\u66f4\u65b0\n\n### 2023/10/8 \\[v0.1.5]\n\n* \u66f4\u65b0\u547d\u4ee4/reply\u7528\u4e8e\u5207\u6362\u8f93\u51fa\u6a21\u5f0f\n\n### 2023/10/7 \\[v0.1.4]\n\n* \u4f18\u5316\u8f6c\u56fe\u7247\u8f93\u51fa\u7684\u901f\u5ea6\n\n### 2023/10/6 \\[v0.1.3]\n\n* \u4f18\u5316md\u8f6c\u56fe\u7247\u7684\u683c\u5f0f\n\n### 2023/10/6 \\[v0.1.2]\n\n* \u53c2\u8003\u9879\u76ee[nonebot-plugin-naturel-gpt](https://github.com/KroMiose/nonebot_plugin_naturel_gpt)\uff0c\u589e\u52a0utils.py\u4e2d\u7684gen_chat_text\u51fd\u6570\n* \u4f18\u5316\u54cd\u5e94\u5668\u903b\u8f91\n\n### 2023/10/5 \\[v0.1.1]\n\n* \u53d1\u5e03\u63d2\u4ef6\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Nonebot2 \u4e00\u6b3e\u8c03\u7528eop api\u7684AI\u804a\u5929\u63d2\u4ef6",
"version": "0.3.2",
"project_urls": {
"Documentation": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_eop_ai#README.md",
"Homepage": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_eop_ai",
"Repository": "https://github.com/nikissXI/nonebot_plugins/tree/main/nonebot_plugin_eop_ai"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0182ca53c074f6ba2c8a0173c073b9e88516c26342c3c6a7f047ff2260957dca",
"md5": "ed55ec219f17d0f892cef0fc9be8a66e",
"sha256": "2033c37c454f78f59732b22826e5c9e1b57bcf14585163207b7892ddbb3519b7"
},
"downloads": -1,
"filename": "nonebot_plugin_eop_ai-0.3.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ed55ec219f17d0f892cef0fc9be8a66e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14011,
"upload_time": "2024-09-02T05:45:13",
"upload_time_iso_8601": "2024-09-02T05:45:13.755915Z",
"url": "https://files.pythonhosted.org/packages/01/82/ca53c074f6ba2c8a0173c073b9e88516c26342c3c6a7f047ff2260957dca/nonebot_plugin_eop_ai-0.3.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ea4b2405628086fad49978377487a56f520a3839c391bdad219af4ce61477a73",
"md5": "24f0d5607a647d616028bb6963b7a4b4",
"sha256": "ab905b45dcdfe991ce8bfc2b6685342458bc48a194f077dda5022c542990b86d"
},
"downloads": -1,
"filename": "nonebot_plugin_eop_ai-0.3.2.tar.gz",
"has_sig": false,
"md5_digest": "24f0d5607a647d616028bb6963b7a4b4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 12129,
"upload_time": "2024-09-02T05:45:14",
"upload_time_iso_8601": "2024-09-02T05:45:14.943359Z",
"url": "https://files.pythonhosted.org/packages/ea/4b/2405628086fad49978377487a56f520a3839c391bdad219af4ce61477a73/nonebot_plugin_eop_ai-0.3.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-02 05:45:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nikissXI",
"github_project": "nonebot_plugins",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "nonebot_plugin_eop_ai"
}