From 86f0e395f31d8afda952d8b1284485a6d2061cae Mon Sep 17 00:00:00 2001 From: Asankilp Date: Mon, 16 Dec 2024 01:31:42 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E4=BD=BF=E7=94=A8=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=BD=8D=E7=BD=AE=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=B0=8F?= =?UTF-8?q?=E6=A3=89=E6=8F=92=E4=BB=B6=E5=BC=80=E5=85=B3=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 160 ++------------------ README_EN.md | 155 +------------------ docs/en/start/install.md | 141 +++++++++++++++++ docs/zh/start/install.md | 12 +- nonebot_plugin_marshoai/azure.py | 10 +- nonebot_plugin_marshoai/config.py | 3 +- nonebot_plugin_marshoai/config_example.yaml | 9 +- nonebot_plugin_marshoai/plugin/__init__.py | 4 +- resources/marsho-new.png | Bin 0 -> 74106 bytes 9 files changed, 188 insertions(+), 306 deletions(-) mode change 100755 => 100644 README.md mode change 100755 => 100644 README_EN.md mode change 100755 => 100644 docs/en/start/install.md mode change 100755 => 100644 docs/zh/start/install.md mode change 100755 => 100644 nonebot_plugin_marshoai/azure.py mode change 100755 => 100644 nonebot_plugin_marshoai/config.py mode change 100755 => 100644 nonebot_plugin_marshoai/config_example.yaml mode change 100755 => 100644 nonebot_plugin_marshoai/plugin/__init__.py create mode 100644 resources/marsho-new.png diff --git a/README.md b/README.md old mode 100755 new mode 100644 index 5f1f4876..d513eb5b --- a/README.md +++ b/README.md @@ -22,11 +22,11 @@ _✨ 使用 OpenAI 标准格式 API 的聊天机器人插件 ✨_ ## 📖 介绍 -通过调用 OpenAI 标准格式 API(例如由 Azure OpenAI 驱动,GitHub Models 提供访问的生成式 AI 推理 API) 来实现聊天的插件。 -插件内置了猫娘小棉(Marsho)的人物设定,可以进行可爱的聊天! -*谁不喜欢回复消息快又可爱的猫娘呢?* -**对 OneBot 以外的适配器与非 GitHub Models API的支持未经过完全验证。** -[Melobot 实现](https://github.com/LiteyukiStudio/marshoai-melo) +通过调用 OpenAI 标准格式 API(例如由 Azure OpenAI 驱动,GitHub Models 提供访问的生成式 AI 推理 API) 来实现聊天的插件。 +插件内置了猫娘小棉(Marsho)的人物设定,可以进行可爱的聊天! +*谁不喜欢回复消息快又可爱的猫娘呢?* +**对 OneBot 以外的适配器与非 GitHub Models API的支持未经过完全验证。** +[Melobot 实现](https://github.com/LiteyukiStudio/marshoai-melo) ## 🐱 设定 @@ -42,156 +42,20 @@ _✨ 使用 OpenAI 标准格式 API 的聊天机器人插件 ✨_ - 🍫 吃零食!肉肉好吃! - 🐾 玩!我喜欢和朋友们一起玩! -## 💿 安装 +## 😼 使用 -
-使用 nb-cli 安装 -在 nonebot2 项目的根目录下打开命令行, 输入以下指令即可安装 - - nb plugin install nonebot-plugin-marshoai - -
- -
-使用包管理器安装 -在 nonebot2 项目的插件目录下, 打开命令行, 根据你使用的包管理器, 输入相应的安装命令 - -
-pip - - pip install nonebot-plugin-marshoai - -
-
-pdm - - pdm add nonebot-plugin-marshoai - -
-
-poetry - - poetry add nonebot-plugin-marshoai - -
-
-conda - - conda install nonebot-plugin-marshoai - -
- -打开 nonebot2 项目根目录下的 `pyproject.toml` 文件, 在 `[tool.nonebot]` 部分追加写入 - - plugins = ["nonebot_plugin_marshoai"] - -
- -## 🤖 获取 token(GitHub Models) - -- 新建一个[personal access token](https://github.com/settings/tokens/new),**不需要给予任何权限**。 -- 将新建的 token 复制,添加到`.env`文件中的`marshoai_token`配置项中。 - -## 🎉 使用 - -发送`marsho`指令可以获取使用说明(若在配置中自定义了指令前缀请使用自定义的指令前缀)。 - -#### 👉 戳一戳 - -当 nonebot 连接到支持的 OneBot v11 实现端时,可以接收头像双击戳一戳消息并进行响应。详见`MARSHOAI_POKE_SUFFIX`配置项。 - -## 🛠️ 小棉工具 -小棉工具(MarshoTools)是`v0.5.0`版本的新增功能,支持加载外部函数库来为 Marsho 提供 Function Call 功能。[使用文档](./README_TOOLS.md) - -## 👍 夸赞名单 - -夸赞名单存储于插件数据目录下的`praises.json`里(该目录路径会在 Bot 启动时输出到日志),当配置项为`true` -时发起一次聊天后自动生成,包含人物名字与人物优点两个基本数据。 -存储于其中的人物会被 Marsho “认识”和“喜欢”。 -其结构类似于: - -```json -{ - "like": [ - { - "name": "Asankilp", - "advantages": "赋予了Marsho猫娘人格,使用vim与vscode为Marsho写了许多代码,使Marsho更加可爱" - }, - { - "name": "神羽(snowykami)", - "advantages": "人脉很广,经常找小伙伴们开银趴,很会写后端代码" - }, - ... - ] -} -``` - -## ⚙️ 可配置项 - -在 nonebot2 项目的`.env`文件中添加下表中的配置 - -#### 插件行为 - -| 配置项 | 类型 | 默认值 | 说明 | -| ------------------------ | ------ | ------- | ---------------- | -| MARSHOAI_USE_YAML_CONFIG | `bool` | `false` | 是否使用 YAML 配置文件格式 | - -#### Marsho 使用方式 - -| 配置项 | 类型 | 默认值 | 说明 | -| --------------------- | ---------- | ----------- | ----------------- | -| MARSHOAI_DEFAULT_NAME | `str` | `marsho` | 调用 Marsho 默认的命令前缀 | -| MARSHOAI_ALIASES | `set[str]` | `set{"小棉"}` | 调用 Marsho 的命令别名 | -| MARSHOAI_AT | `bool` | `false` | 决定是否使用at触发 | -| MARSHOAI_MAIN_COLOUR | `str` | `FFAAAA` | 主题色,部分工具和功能可用 | - -#### AI 调用 - -| 配置项 | 类型 | 默认值 | 说明 | -| -------------------------------- | ------- | --------------------------------------- | --------------------------------------------------------------------------------------------- | -| MARSHOAI_TOKEN | `str` | | 调用 AI API 所需的 token | -| MARSHOAI_DEFAULT_MODEL | `str` | `gpt-4o-mini` | Marsho 默认调用的模型 | -| MARSHOAI_PROMPT | `str` | 猫娘 Marsho 人设提示词 | Marsho 的基本系统提示词 **※部分模型(o1等)不支持系统提示词。** | -| MARSHOAI_ADDITIONAL_PROMPT | `str` | | Marsho 的扩展系统提示词 | -| MARSHOAI_POKE_SUFFIX | `str` | `揉了揉你的猫耳` | 对 Marsho 所连接的 OneBot 用户进行双击戳一戳时,构建的聊天内容。此配置项为空字符串时,戳一戳响应功能会被禁用。例如,默认值构建的聊天内容将为`*[昵称]揉了揉你的猫耳。` | -| MARSHOAI_AZURE_ENDPOINT | `str` | `https://models.inference.ai.azure.com` | OpenAI 标准格式 API 端点 | -| MARSHOAI_TEMPERATURE | `float` | `null` | 推理生成多样性(温度)参数 | -| MARSHOAI_TOP_P | `float` | `null` | 推理核采样参数 | -| MARSHOAI_MAX_TOKENS | `int` | `null` | 最大生成 token 数 | -| MARSHOAI_ADDITIONAL_IMAGE_MODELS | `list` | `[]` | 额外添加的支持图片的模型列表,例如`hunyuan-vision` | - -#### 功能开关 - -| 配置项 | 类型 | 默认值 | 说明 | -| --------------------------------- | ------ | ------ | -------------------------- | -| MARSHOAI_ENABLE_SUPPORT_IMAGE_TIP | `bool` | `true` | 启用后用户发送带图请求时若模型不支持图片,则提示用户 | -| MARSHOAI_ENABLE_NICKNAME_TIP | `bool` | `true` | 启用后用户未设置昵称时提示用户设置 | -| MARSHOAI_ENABLE_PRAISES | `bool` | `true` | 是否启用夸赞名单功能 | -| MARSHOAI_ENABLE_TOOLS | `bool` | `true` | 是否启用小棉工具 | -| MARSHOAI_LOAD_BUILTIN_TOOLS | `bool` | `true` | 是否加载内置工具包 | -| MARSHOAI_TOOLSET_DIR | `list` | `[]` | 外部工具集路径列表 | -| MARSHOAI_DISABLED_TOOLKITS | `list` | `[]` | 禁用的工具包包名列表 | -| MARSHOAI_ENABLE_RICHTEXT_PARSE | `bool` | `true` | 是否启用自动解析消息(若包含图片链接则发送图片、若包含LaTeX公式则发送公式图) | -| MARSHOAI_SINGLE_LATEX_PARSE | `bool` | `false` | 单行公式是否渲染(当消息富文本解析启用时可用)(如果单行也渲……只能说不好看) | +请查看[使用文档](https://marsho.liteyuki.icu/start/install) ## ❤ 鸣谢&版权说明 -本项目使用了以下项目的代码: +本项目使用了以下项目的代码: -- [nonebot-plugin-latex](https://github.com/EillesWan/nonebot-plugin-latex) +- [nonebot-plugin-latex](https://github.com/EillesWan/nonebot-plugin-latex) -"Marsho" logo 由 [@Asankilp](https://github.com/Asankilp) -绘制,基于 [CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) 许可下提供。 -"nonebot-plugin-marshoai" 基于 [MIT](./LICENSE-MIT) 许可下提供。 -部分指定的代码基于 [Mulan PSL v2](./LICENSE-MULAN) 许可下提供。 +"Marsho" logo 由 [@Asankilp](https://github.com/Asankilp)绘制,基于 [CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) 许可下提供。 +"nonebot-plugin-marshoai" 基于 [MIT](./LICENSE-MIT) 许可下提供。 +部分指定的代码基于 [Mulan PSL v2](./LICENSE-MULAN) 许可下提供。 ## 开发 - 请阅读[开发规范](./README_DEV.md) - -## 🕊️ TODO - -- [x] [Melobot](https://github.com/Meloland/melobot) 实现 -- [x] 对聊天发起者的认知(认出是谁在问 Marsho)(初步实现) -- [ ] 自定义 API 接入点的适配(不局限于GitHub Models) -- [ ] 上下文通过数据库持久化存储 diff --git a/README_EN.md b/README_EN.md old mode 100755 new mode 100644 index 187785da..8159af99 --- a/README_EN.md +++ b/README_EN.md @@ -46,155 +46,14 @@ Plugin internally installed the catgirl character of Marsho, is able to have a c - 🍫 Eating snacks! Meat is yummy! - 🐾 Play! I like play with friends! -## 💿 Install - -
-Install with nb-cli - -Open shell under the root directory of nonebot2, input the command below. - - nb plugin install nonebot-plugin-marshoai - -
- -
-Install with pack manager - -Open shell under the plugin directory of nonebot2, input corresponding command according to your pack manager. - -
-pip - - pip install nonebot-plugin-marshoai - -
-
-pdm - - pdm add nonebot-plugin-marshoai - -
-
-poetry - - poetry add nonebot-plugin-marshoai - -
-
-conda - - conda install nonebot-plugin-marshoai - -
- -Open the `pyproject.toml` file under nonebot2's root directory, Add to`[tool.nonebot]`. - - plugins = ["nonebot_plugin_marshoai"] - -
- -## 🤖 Get token(GitHub Models) - -- Create new [personal access token](https://github.com/settings/tokens/new),**Don't need any permissions**. -- Copy the new token, add to the `.env` file's `marshoai_token` option. - -## 🎉 Usage - -End `marsho` in order to get direction for use(If you configured the custom command, please use the configured one). - -#### 👉 Double click avatar - -When nonebot linked to OneBot v11 adapter, can recieve double click and response to it. More detail in the `MARSHOAI_POKE_SUFFIX` option. - -## 🛠️ MarshoTools - -MarshoTools is a feature added in `v0.5.0`, support loading external function library to provide Function Call for Marsho. [Documentation](./README_TOOLS_EN.md) - -## 👍 Praise list - -Praise list stored in the `praises.json` in plugin directory(This directory will putput to log when Bot start), it'll automatically generate when option is `true`, include character name and advantage two basic data. - -The character stored in it would be “know” and “like” by Marsho. - -It's structure is similar to: - -```json -{ - "like": [ - { - "name": "Asankilp", - "advantages": "赋予了Marsho猫娘人格,使用vim与vscode为Marsho写了许多代码,使Marsho更加可爱" - }, - { - "name": "神羽(snowykami)", - "advantages": "人脉很广,经常找小伙伴们开银趴,很会写后端代码" - }, - ... - ] -} -``` - -## ⚙️ Configurable options - -Add options in the `.env` file from the diagram below in nonebot2 project. - -#### plugin behaviour - -| Option | Type | Default | Description | -| ------------------------ | ------ | ------- | ---------------- | -| MARSHOAI_USE_YAML_CONFIG | `bool` | `false` | Use YAML config format | - -#### Marsho usage - -| Option | Type | Default | Description | -| --------------------- | ---------- | ----------- | ----------------- | -| MARSHOAI_DEFAULT_NAME | `str` | `marsho` | Command to call Marsho | -| MARSHOAI_ALIASES | `set[str]` | `set{"Marsho"}` | Other name(Alias) to call Marsho | -| MARSHOAI_AT | `bool` | `false` | Call by @ or not | -| MARSHOAI_MAIN_COLOUR | `str` | `FFAAAA` | Theme color, used by some tools and features | - -#### AI call - -| Option | Type | Default | Description | -| -------------------------------- | ------- | --------------------------------------- | --------------------------------------------------------------------------------------------- | -| MARSHOAI_TOKEN | `str` | | The token needed to call AI API | -| MARSHOAI_DEFAULT_MODEL | `str` | `gpt-4o-mini` | The default model of Marsho | -| MARSHOAI_PROMPT | `str` | Catgirl Marsho's character prompt | Marsho's basic system prompt **※Some models(o1 and so on) don't support it** | -| MARSHOAI_ADDITIONAL_PROMPT | `str` | | Marsho's external system prompt | -| MARSHOAI_POKE_SUFFIX | `str` | `揉了揉你的猫耳` | When double click Marsho who connected to OneBot adapter, the chat content. When it's empty string, double click function is off. Such as, the default content is `*[昵称]揉了揉你的猫耳。` | -| MARSHOAI_AZURE_ENDPOINT | `str` | `https://models.inference.ai.azure.com` | OpenAI standard API | -| MARSHOAI_TEMPERATURE | `float` | `null` | temperature parameter | -| MARSHOAI_TOP_P | `float` | `null` | Nucleus Sampling parameter | -| MARSHOAI_MAX_TOKENS | `int` | `null` | Max token number | -| MARSHOAI_ADDITIONAL_IMAGE_MODELS | `list` | `[]` | External image-support model list, such as `hunyuan-vision` | - -#### Feature Switches - -| Option | Type | Default | Description | -| --------------------------------- | ------ | ------ | -------------------------- | -| MARSHOAI_ENABLE_SUPPORT_IMAGE_TIP | `bool` | `true` | When on, if user send request with photo and model don't support that, remind the user | -| MARSHOAI_ENABLE_NICKNAME_TIP | `bool` | `true` | When on, if user haven't set username, remind user to set | -| MARSHOAI_ENABLE_PRAISES | `bool` | `true` | Turn on Praise list or not | -| MARSHOAI_ENABLE_TOOLS | `bool` | `true` | Turn on Marsho Tools or not | -| MARSHOAI_LOAD_BUILTIN_TOOLS | `bool` | `true` | Loading the built-in toolkit or not | -| MARSHOAI_TOOLSET_DIR | `list` | `[]` | List of external toolset directory | -| MARSHOAI_DISABLED_TOOLKITS | `list` | `[]` | List of disabled toolkits' name | -| MARSHOAI_ENABLE_RICHTEXT_PARSE | `bool` | `true` | Turn on auto parse rich text feature(including image, LaTeX equation) | -| MARSHOAI_SINGLE_LATEX_PARSE | `bool` | `false`| Render single-line equation or not | +## 😼 Usage +Please read [Documentation](https://marsho.liteyuki.icu/start/install) ## ❤ Thanks&Copyright -This project uses the following code from other projects: -- [nonebot-plugin-latex](https://github.com/EillesWan/nonebot-plugin-latex) +This project uses the following code from other projects: +- [nonebot-plugin-latex](https://github.com/EillesWan/nonebot-plugin-latex) -"Marsho" logo contributed by [@Asankilp](https://github.com/Asankilp), -licensed under [CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) lisense. +"Marsho" logo contributed by [@Asankilp](https://github.com/Asankilp),licensed under [CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) lisense. -"nonebot-plugin-marshoai" is licensed under [MIT](./LICENSE-MIT) license. -Some of the code is licensed under [Mulan PSL v2](./LICENSE-MULAN) license. - -## 🕊️ TODO - -- [x] [Melobot](https://github.com/Meloland/melobot) implementation -- [x] Congize chat initiator(know who are chatting with Marsho) (Initially implement) -- [ ] Optimize API (Not only GitHub Models) -- [ ] Persistent storage context by database +"nonebot-plugin-marshoai" is licensed under [MIT](./LICENSE-MIT) license. +Some of the code is licensed under [Mulan PSL v2](./LICENSE-MULAN) license. diff --git a/docs/en/start/install.md b/docs/en/start/install.md old mode 100755 new mode 100644 index e69de29b..afa352d6 --- a/docs/en/start/install.md +++ b/docs/en/start/install.md @@ -0,0 +1,141 @@ +## 💿 Install + +
+Install with nb-cli + +Open shell under the root directory of nonebot2, input the command below. + + nb plugin install nonebot-plugin-marshoai + +
+ +
+Install with pack manager + +Open shell under the plugin directory of nonebot2, input corresponding command according to your pack manager. + +
+pip + + pip install nonebot-plugin-marshoai + +
+
+pdm + + pdm add nonebot-plugin-marshoai + +
+
+poetry + + poetry add nonebot-plugin-marshoai + +
+
+conda + + conda install nonebot-plugin-marshoai + +
+ +Open the `pyproject.toml` file under nonebot2's root directory, Add to`[tool.nonebot]`. + + plugins = ["nonebot_plugin_marshoai"] + +
+ +## 🤖 Get token(GitHub Models) + +- Create new [personal access token](https://github.com/settings/tokens/new),**Don't need any permissions**. +- Copy the new token, add to the `.env` file's `marshoai_token` option. + +## 🎉 Usage + +End `marsho` in order to get direction for use(If you configured the custom command, please use the configured one). + +#### 👉 Double click avatar + +When nonebot linked to OneBot v11 adapter, can recieve double click and response to it. More detail in the `MARSHOAI_POKE_SUFFIX` option. + +## 🛠️ ~~MarshoTools~~ (Deprecated) + +MarshoTools is a feature added in `v0.5.0`, support loading external function library to provide Function Call for Marsho. + +## 🧩 Marsho Plugin +Marsho Plugin is a feature added in `v1.0.0`, replacing the old MarshoTools feature. [Documentation](https://marsho.liteyuki.icu/dev/extension) + +## 👍 Praise list + +Praise list stored in the `praises.json` in plugin directory(This directory will putput to log when Bot start), it'll automatically generate when option is `true`, include character name and advantage two basic data. + +The character stored in it would be “know” and “like” by Marsho. + +It's structure is similar to: + +```json +{ + "like": [ + { + "name": "Asankilp", + "advantages": "赋予了Marsho猫娘人格,使用vim与vscode为Marsho写了许多代码,使Marsho更加可爱" + }, + { + "name": "神羽(snowykami)", + "advantages": "人脉很广,经常找小伙伴们开银趴,很会写后端代码" + }, + ... + ] +} +``` + +## ⚙️ Configurable options + +Add options in the `.env` file from the diagram below in nonebot2 project. + +#### plugin behaviour + +| Option | Type | Default | Description | +| ------------------------ | ------ | ------- | ---------------- | +| MARSHOAI_USE_YAML_CONFIG | `bool` | `false` | Use YAML config format | +| MARSHOAI_DEVMODE | `bool` | `true` | Turn on Development Mode or not | + +#### Marsho usage + +| Option | Type | Default | Description | +| --------------------- | ---------- | ----------- | ----------------- | +| MARSHOAI_DEFAULT_NAME | `str` | `marsho` | Command to call Marsho | +| MARSHOAI_ALIASES | `set[str]` | `set{"Marsho"}` | Other name(Alias) to call Marsho | +| MARSHOAI_AT | `bool` | `false` | Call by @ or not | +| MARSHOAI_MAIN_COLOUR | `str` | `FFAAAA` | Theme color, used by some tools and features | + +#### AI call + +| Option | Type | Default | Description | +| -------------------------------- | ------- | --------------------------------------- | --------------------------------------------------------------------------------------------- | +| MARSHOAI_TOKEN | `str` | | The token needed to call AI API | +| MARSHOAI_DEFAULT_MODEL | `str` | `gpt-4o-mini` | The default model of Marsho | +| MARSHOAI_PROMPT | `str` | Catgirl Marsho's character prompt | Marsho's basic system prompt **※Some models(o1 and so on) don't support it** | +| MARSHOAI_ADDITIONAL_PROMPT | `str` | | Marsho's external system prompt | +| MARSHOAI_POKE_SUFFIX | `str` | `揉了揉你的猫耳` | When double click Marsho who connected to OneBot adapter, the chat content. When it's empty string, double click function is off. Such as, the default content is `*[昵称]揉了揉你的猫耳。` | +| MARSHOAI_AZURE_ENDPOINT | `str` | `https://models.inference.ai.azure.com` | OpenAI standard API | +| MARSHOAI_TEMPERATURE | `float` | `null` | temperature parameter | +| MARSHOAI_TOP_P | `float` | `null` | Nucleus Sampling parameter | +| MARSHOAI_MAX_TOKENS | `int` | `null` | Max token number | +| MARSHOAI_ADDITIONAL_IMAGE_MODELS | `list` | `[]` | External image-support model list, such as `hunyuan-vision` | + +#### Feature Switches + +| Option | Type | Default | Description | +| --------------------------------- | ------ | ------ | -------------------------- | +| MARSHOAI_ENABLE_SUPPORT_IMAGE_TIP | `bool` | `true` | When on, if user send request with photo and model don't support that, remind the user | +| MARSHOAI_ENABLE_NICKNAME_TIP | `bool` | `true` | When on, if user haven't set username, remind user to set | +| MARSHOAI_ENABLE_PRAISES | `bool` | `true` | Turn on Praise list or not | +| MARSHOAI_ENABLE_TOOLS | `bool` | `false` | Turn on Marsho Tools or not | +| MARSHOAI_ENABLE_PLUGINS | `bool` | `true` | Turn on Marsho Plugins or not +| MARSHOAI_PLUGIN_DIRS | `list[str]` | `[]` | List of plugins directory | +| MARSHOAI_LOAD_BUILTIN_TOOLS | `bool` | `true` | Loading the built-in toolkit or not | +| MARSHOAI_TOOLSET_DIR | `list` | `[]` | List of external toolset directory | +| MARSHOAI_DISABLED_TOOLKITS | `list` | `[]` | List of disabled toolkits' name | +| MARSHOAI_ENABLE_RICHTEXT_PARSE | `bool` | `true` | Turn on auto parse rich text feature(including image, LaTeX equation) | +| MARSHOAI_SINGLE_LATEX_PARSE | `bool` | `false`| Render single-line equation or not | diff --git a/docs/zh/start/install.md b/docs/zh/start/install.md old mode 100755 new mode 100644 index 18ad38b5..479ea5e2 --- a/docs/zh/start/install.md +++ b/docs/zh/start/install.md @@ -60,8 +60,11 @@ title: 安装 当 nonebot 连接到支持的 OneBot v11 实现端时,可以接收头像双击戳一戳消息并进行响应。详见`MARSHOAI_POKE_SUFFIX`配置项。 -## 🛠️ 小棉工具 -小棉工具(MarshoTools)是`v0.5.0`版本的新增功能,支持加载外部函数库来为 Marsho 提供 Function Call 功能。[使用文档] +## 🛠️ ~~小棉工具~~(已弃用) +小棉工具(MarshoTools)是`v0.5.0`版本的新增功能,支持加载外部函数库来为 Marsho 提供 Function Call 功能。 + +## 🧩 小棉插件 +小棉插件是`v1.0.0`的新增功能,替代旧的小棉工具功能。[使用文档](https://marsho.liteyuki.icu/dev/extension) ## 👍 夸赞名单 @@ -95,6 +98,7 @@ title: 安装 | 配置项 | 类型 | 默认值 | 说明 | | ------------------------ | ------ | ------- | ---------------- | | MARSHOAI_USE_YAML_CONFIG | `bool` | `false` | 是否使用 YAML 配置文件格式 | +| MARSHOAI_DEVMODE | `bool` | `false` | 是否启用开发者模式 | #### Marsho 使用方式 @@ -127,7 +131,9 @@ title: 安装 | MARSHOAI_ENABLE_SUPPORT_IMAGE_TIP | `bool` | `true` | 启用后用户发送带图请求时若模型不支持图片,则提示用户 | | MARSHOAI_ENABLE_NICKNAME_TIP | `bool` | `true` | 启用后用户未设置昵称时提示用户设置 | | MARSHOAI_ENABLE_PRAISES | `bool` | `true` | 是否启用夸赞名单功能 | -| MARSHOAI_ENABLE_TOOLS | `bool` | `true` | 是否启用小棉工具 | +| MARSHOAI_ENABLE_TOOLS | `bool` | `false` | 是否启用小棉工具 | +| MARSHOAI_ENABLE_PLUGINS | `bool` | `true` | 是否启用小棉插件 | +| MARSHOAI_PLUGIN_DIRS | `list[str]` | `[]` | 插件目录路径列表 | | MARSHOAI_LOAD_BUILTIN_TOOLS | `bool` | `true` | 是否加载内置工具包 | | MARSHOAI_TOOLSET_DIR | `list` | `[]` | 外部工具集路径列表 | | MARSHOAI_DISABLED_TOOLKITS | `list` | `[]` | 禁用的工具包包名列表 | diff --git a/nonebot_plugin_marshoai/azure.py b/nonebot_plugin_marshoai/azure.py old mode 100755 new mode 100644 index 6e7efecc..6c397198 --- a/nonebot_plugin_marshoai/azure.py +++ b/nonebot_plugin_marshoai/azure.py @@ -106,9 +106,13 @@ async def _preload_tools(): @driver.on_startup async def _preload_plugins(): """启动钩子加载插件""" - marshoai_plugin_dirs = config.marshoai_plugin_dirs # 外部插件目录列表 - marshoai_plugin_dirs.insert(0, Path(__file__).parent / "plugins") # 预置插件目录 - load_plugins(*marshoai_plugin_dirs) + if config.marshoai_enable_plugins: + marshoai_plugin_dirs = config.marshoai_plugin_dirs # 外部插件目录列表 + marshoai_plugin_dirs.insert(0, Path(__file__).parent / "plugins") # 预置插件目录 + load_plugins(*marshoai_plugin_dirs) + logger.info( + "如果启用小棉插件后使用的模型出现报错,请尝试将 MARSHOAI_ENABLE_PLUGINS 设为 false。" + ) @add_usermsg_cmd.handle() diff --git a/nonebot_plugin_marshoai/config.py b/nonebot_plugin_marshoai/config.py old mode 100755 new mode 100644 index c4c1239c..941569c5 --- a/nonebot_plugin_marshoai/config.py +++ b/nonebot_plugin_marshoai/config.py @@ -36,7 +36,8 @@ class ConfigModel(BaseModel): marshoai_enable_support_image_tip: bool = True marshoai_enable_praises: bool = True marshoai_enable_time_prompt: bool = True - marshoai_enable_tools: bool = True + marshoai_enable_tools: bool = False + marshoai_enable_plugins: bool = True marshoai_load_builtin_tools: bool = True marshoai_toolset_dir: list = [] marshoai_disabled_toolkits: list = [] diff --git a/nonebot_plugin_marshoai/config_example.yaml b/nonebot_plugin_marshoai/config_example.yaml old mode 100755 new mode 100644 index f72a13fb..8e544d2d --- a/nonebot_plugin_marshoai/config_example.yaml +++ b/nonebot_plugin_marshoai/config_example.yaml @@ -34,7 +34,9 @@ marshoai_enable_support_image_tip: true # 是否启用支持图片提示。 marshoai_enable_praises: true # 是否启用夸赞名单功能。 -marshoai_enable_tools: true # 是否启用工具支持。 +marshoai_enable_tools: false # 是否启用工具支持。 + +marshoai_enable_plugins: true # 是否启用插件功能。 marshoai_load_builtin_tools: true # 是否加载内置工具。 @@ -42,6 +44,10 @@ marshoai_toolset_dir: [] # 工具集路径。 marshoai_disabled_toolkits: [] # 已禁用的工具包列表。 +marshoai_plugin_dirs: [] # 插件路径。 + +marshoai_devmode: false # 是否启用开发者模式。 + marshoai_azure_endpoint: "https://models.inference.ai.azure.com" # OpenAI 标准格式 API 的端点。 # 模型参数配置 @@ -54,3 +60,4 @@ marshoai_additional_image_models: [] # 额外的图片模型列表,默认空 # 腾讯云的API密钥,未设置时为空。 marshoai_tencent_secretid: null marshoai_tencent_secretkey: null + diff --git a/nonebot_plugin_marshoai/plugin/__init__.py b/nonebot_plugin_marshoai/plugin/__init__.py old mode 100755 new mode 100644 index 1de4dd97..232f1a16 --- a/nonebot_plugin_marshoai/plugin/__init__.py +++ b/nonebot_plugin_marshoai/plugin/__init__.py @@ -1,4 +1,4 @@ -"""该功能目前正在开发中,暂时不可用,受影响的文件夹 `plugin`, `plugins` +"""该功能目前~~正在开发中~~开发基本完成,暂时~~不~~可用,受影响的文件夹 `plugin`, `plugins` """ from nonebot import logger @@ -8,4 +8,4 @@ from .load import * from .models import * from .utils import * -logger.opt(colors=True).info("MarshoAI 插件功能开发中,用户请忽略相关日志") +#logger.opt(colors=True).info("MarshoAI 插件功能开发中,用户请忽略相关日志") diff --git a/resources/marsho-new.png b/resources/marsho-new.png new file mode 100644 index 0000000000000000000000000000000000000000..34f2a7ba8599e23861565416349ea92f91a59bba GIT binary patch literal 74106 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

w3U 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

0T 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%0AZKwHpGF>#$+AU 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 literal 0 HcmV?d00001