Nonebot2 猫娘AI插件
Go to file
2024-11-27 13:38:11 +08:00
.github/workflows 更新PyPI发布工作流,添加对发布事件的支持 2024-11-05 21:03:49 +08:00
nonebot_plugin_marshoai 新增加载外部工具集的配置项,修复依赖 2024-11-27 13:38:11 +08:00
resources catface svg 2024-10-26 00:20:33 +08:00
.gitignore 新增marshoai-bangumi工具包 2024-11-24 14:48:49 +08:00
LICENSE Create LICENSE 2024-10-02 00:13:02 +08:00
pyproject.toml 新增加载外部工具集的配置项,修复依赖 2024-11-27 13:38:11 +08:00
README_EN.md ✍️更新readme_en 2024-11-26 18:01:30 +08:00
README_TOOLS_EN.md Update README_TOOLS_EN.md 2024-11-26 22:37:36 +08:00
README_TOOLS.md Create README_TOOLS.md 2024-11-23 21:14:32 +08:00
README.md 新增加载外部工具集的配置项,修复依赖 2024-11-27 13:38:11 +08:00

NoneBotPluginLogo

nonebot-plugin-marshoai

A chat bot plugin which use OpenAI standard API

license pypi python

📖 Indroduction

A plugin made by call OpenAI standard API(Such as GitHub Models API)

Plugin internally installed the catgirl character of Marsho, is able to have a cute conversation!

Who don't like a cute catgirl with fast answer speed

Support for adapters other than OneBot and non-Github Models APIs is not fully verified.

Melobot implementation

🐱 Character setting

Basic information

  • Name : Marsho
  • Birthday : September 6th

Hobbies

  • 🌞 Melt in sunshine
  • 🤱 Coquetry~ who don't like that~
  • 🍫 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 tokenDon'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

👍 Praise list

Praise list stored in the praises.json in plugin directoryThis 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:

{
  "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

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 tool pack or not

❤ Thanks&Copyright

"Marsho" logo contributed by @Asankilp, licensed under CC BY-NC-SA 4.0 lisense.

"nonebot-plugin-marshoai" is licensed under MIT license.

🕊️ TODO

  • Melobot implementation
  • Congize chat initiator(know who are chatting with Marsho) (Initially implement)
  • Optimize API (Not only GitHub Models
  • Persistent storage context by database