mirror of
https://github.com/LiteyukiStudio/nonebot-plugin-marshoai.git
synced 2025-01-26 18:12:47 +08:00
✨新增是否启用新yaml配置的配置项,更新readme
This commit is contained in:
parent
994d27e481
commit
8221fa7928
58
README.md
58
README.md
@ -130,25 +130,44 @@ _✨ 使用 OpenAI 标准格式 API 的聊天机器人插件 ✨_
|
||||
|
||||
在 nonebot2 项目的`.env`文件中添加下表中的配置
|
||||
|
||||
| 配置项 | 必填 | 默认值 | 说明 |
|
||||
|:---------------------------------:|:--:|:---------------------------------------:|:---------------------------------------------------------------------------------------------:|
|
||||
| MARSHOAI_TOKEN | 是? | 无 | 调用 API 所需的访问 token |
|
||||
| MARSHOAI_DEFAULT_NAME | 否 | `marsho` | 调用 Marsho 默认的命令前缀 |
|
||||
| MARSHOAI_ALIASES | 否 | `set{"小棉"}` | 调用 Marsho 的命令别名 |
|
||||
| MARSHOAI_DEFAULT_MODEL | 否 | `gpt-4o-mini` | Marsho 默认调用的模型 |
|
||||
| MARSHOAI_PROMPT | 否 | 猫娘 Marsho 人设提示词 | Marsho 的基本系统提示词 **※部分推理模型(o1等)不支持系统提示词。** |
|
||||
| MARSHOAI_ADDITIONAL_PROMPT | 否 | 无 | Marsho 的扩展系统提示词 |
|
||||
| MARSHOAI_POKE_SUFFIX | 否 | `揉了揉你的猫耳` | 对 Marsho 所连接的 OneBot 用户进行双击戳一戳时,构建的聊天内容。此配置项为空字符串时,戳一戳响应功能会被禁用。例如,默认值构建的聊天内容将为`*[昵称]揉了揉你的猫耳`。 |
|
||||
| MARSHOAI_ENABLE_SUPPORT_IMAGE_TIP | 否 | `true` | 启用后用户发送带图请求时若模型不支持图片,则提示用户 |
|
||||
| MARSHOAI_ENABLE_NICKNAME_TIP | 否 | `true` | 启用后用户未设置昵称时提示用户设置 |
|
||||
| MARSHOAI_ENABLE_PRAISES | 否 | `true` | 是否启用夸赞名单功能 |
|
||||
| MARSHOAI_ENABLE_TOOLS | 否 | `true` | 是否启用小棉工具(MarshoTools) |
|
||||
| MARSHOAI_LOAD_BUILTIN_TOOLS | 否 | `true` | 是否加载内置工具包 |
|
||||
| MARSHOAI_AZURE_ENDPOINT | 否 | `https://models.inference.ai.azure.com` | OpenAI 标准格式 API 端点 |
|
||||
| MARSHOAI_TEMPERATURE | 否 | 无 | 进行推理时的温度参数 |
|
||||
| MARSHOAI_TOP_P | 否 | 无 | 进行推理时的核采样参数 |
|
||||
| MARSHOAI_MAX_TOKENS | 否 | 无 | 返回消息的最大 token 数 |
|
||||
| MARSHOAI_ADDITIONAL_IMAGE_MODELS | 否 | `[]` | 额外添加的支持图片的模型列表,例如`hunyuan-vision` |
|
||||
#### 插件行为
|
||||
|
||||
| 配置项 | 类型 | 默认值 | 说明 |
|
||||
| ------------------------ | ------ | ------- | ---------------- |
|
||||
| MARSHOAI_USE_YAML_CONFIG | `bool` | `false` | 是否使用 YAML 配置文件格式 |
|
||||
|
||||
#### Marsho 使用方式
|
||||
|
||||
| 配置项 | 类型 | 默认值 | 说明 |
|
||||
| --------------------- | ---------- | ----------- | ----------------- |
|
||||
| MARSHOAI_DEFAULT_NAME | `str` | `marsho` | 调用 Marsho 默认的命令前缀 |
|
||||
| MARSHOAI_ALIASES | `set[str]` | `set{"小棉"}` | 调用 Marsho 的命令别名 |
|
||||
|
||||
#### 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` | 是否加载内置工具包 |
|
||||
|
||||
|
||||
## ❤ 鸣谢&版权说明
|
||||
|
||||
@ -162,4 +181,3 @@ _✨ 使用 OpenAI 标准格式 API 的聊天机器人插件 ✨_
|
||||
- [x] 对聊天发起者的认知(认出是谁在问 Marsho)(初步实现)
|
||||
- [ ] 自定义 API 接入点的适配(不局限于GitHub Models)
|
||||
- [ ] 上下文通过数据库持久化存储
|
||||
|
||||
|
@ -1,13 +1,14 @@
|
||||
import shutil
|
||||
|
||||
from pydantic import BaseModel
|
||||
from nonebot import logger
|
||||
from nonebot import logger, get_plugin_config
|
||||
from ruamel.yaml import YAML
|
||||
import yaml as yaml_
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class ConfigModel(BaseModel):
|
||||
marshoai_use_yaml_config: bool = False
|
||||
marshoai_token: str = ""
|
||||
# marshoai_support_image_models: list = ["gpt-4o","gpt-4o-mini"]
|
||||
marshoai_default_name: str = "marsho"
|
||||
@ -52,16 +53,16 @@ destination_file = destination_folder / "config.yaml"
|
||||
|
||||
|
||||
def copy_config(source_template, destination_file):
|
||||
"""
|
||||
'''
|
||||
复制模板配置文件到config
|
||||
"""
|
||||
'''
|
||||
shutil.copy(source_template, destination_file)
|
||||
|
||||
|
||||
def check_yaml_is_changed(source_template):
|
||||
"""
|
||||
'''
|
||||
检查配置文件是否需要更新
|
||||
"""
|
||||
'''
|
||||
with open(config_file_path, 'r', encoding="utf-8") as f:
|
||||
old = yaml.load(f)
|
||||
with open(source_template, 'r', encoding="utf-8") as f:
|
||||
@ -75,9 +76,9 @@ def check_yaml_is_changed(source_template):
|
||||
|
||||
|
||||
def merge_configs(old_config, new_config):
|
||||
"""
|
||||
'''
|
||||
合并配置文件
|
||||
"""
|
||||
'''
|
||||
for key, value in new_config.items():
|
||||
if key in old_config:
|
||||
continue
|
||||
@ -86,29 +87,33 @@ def merge_configs(old_config, new_config):
|
||||
old_config[key] = value
|
||||
return old_config
|
||||
|
||||
|
||||
if not config_file_path.exists():
|
||||
logger.info("配置文件不存在,正在创建")
|
||||
config_file_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
copy_config(source_template, destination_file)
|
||||
config: ConfigModel = get_plugin_config(ConfigModel)
|
||||
if config.marshoai_use_yaml_config:
|
||||
if not config_file_path.exists():
|
||||
logger.info("配置文件不存在,正在创建")
|
||||
config_file_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
copy_config(source_template, destination_file)
|
||||
else:
|
||||
logger.info("配置文件存在,正在读取")
|
||||
|
||||
if check_yaml_is_changed(source_template):
|
||||
yaml_2 = YAML()
|
||||
logger.info("插件新的配置已更新, 正在更新")
|
||||
|
||||
with open(config_file_path, 'r', encoding="utf-8") as f:
|
||||
old_config = yaml_2.load(f)
|
||||
|
||||
with open(source_template, 'r', encoding="utf-8") as f:
|
||||
new_config = yaml_2.load(f)
|
||||
|
||||
merged_config = merge_configs(old_config, new_config)
|
||||
|
||||
with open(destination_file, 'w', encoding="utf-8") as f:
|
||||
yaml_2.dump(merged_config, f)
|
||||
|
||||
with open(config_file_path, "r", encoding="utf-8") as f:
|
||||
yaml_config = yaml_.load(f, Loader=yaml_.FullLoader)
|
||||
|
||||
config = ConfigModel(**yaml_config)
|
||||
else:
|
||||
logger.info("配置文件存在,正在读取")
|
||||
|
||||
if check_yaml_is_changed(source_template):
|
||||
logger.info("插件新的配置已更新, 正在更新")
|
||||
|
||||
with open(config_file_path, 'r', encoding="utf-8") as f:
|
||||
old_config = yaml.load(f)
|
||||
|
||||
with open(source_template, 'r', encoding="utf-8") as f:
|
||||
new_config = yaml.load(f)
|
||||
|
||||
merged_config = merge_configs(old_config, new_config)
|
||||
|
||||
with open(destination_file, 'w', encoding="utf-8") as f:
|
||||
yaml.dump(merged_config, f)
|
||||
|
||||
with open(config_file_path, "r", encoding="utf-8") as f:
|
||||
yaml_config = yaml_.load(f, Loader=yaml_.FullLoader)
|
||||
|
||||
config = ConfigModel(**yaml_config)
|
||||
logger.info("MarshoAI 支持新的 YAML 配置系统,若要使用,请将 MARSHOAI_USE_YAML_CONFIG 配置项设置为 true。")
|
@ -1,9 +1,4 @@
|
||||
marshoai_token: "" # MarshoAI的认证token,默认为空。必填
|
||||
|
||||
# 支持的图片模型列表,默认包含gpt-4o和gpt-4o-mini。
|
||||
marshoai_support_image_models:
|
||||
- gpt-4o
|
||||
- gpt-4o-mini
|
||||
marshoai_token: "" # 调用API使用的访问token,默认为空。
|
||||
|
||||
marshoai_default_name: "marsho" # 默认名称,设定为marsho。
|
||||
|
||||
@ -25,21 +20,19 @@ marshoai_prompt:
|
||||
|
||||
marshoai_additional_prompt: "" # 额外的提示内容,默认为空。
|
||||
|
||||
marshoai_poke_suffix: "揉了揉你的猫耳" # 当进行互动时附加的后缀。
|
||||
marshoai_poke_suffix: "揉了揉你的猫耳" # 当进行戳一戳时附加的后缀。
|
||||
|
||||
marshoai_enable_nickname_tip: true # 是否启用昵称提示。
|
||||
|
||||
marshoai_enable_support_image_tip: true # 是否启用支持图片提示。
|
||||
|
||||
marshoai_enable_praises: true # 是否启用夸奖功能。
|
||||
|
||||
marshoai_enable_time_prompt: true # 是否启用时间提示功能。
|
||||
marshoai_enable_praises: true # 是否启用夸赞名单功能。
|
||||
|
||||
marshoai_enable_tools: true # 是否启用工具支持。
|
||||
|
||||
marshoai_load_builtin_tools: true # 是否加载内置工具。
|
||||
|
||||
marshoai_azure_endpoint: "https://models.inference.ai.azure.com" # Azure API的地址。
|
||||
marshoai_azure_endpoint: "https://models.inference.ai.azure.com" # OpenAI 标准格式 API 的端点。
|
||||
|
||||
# 模型参数配置
|
||||
marshoai_temperature: null # 调整生成的多样性,未设置时使用默认值。
|
||||
|
Loading…
x
Reference in New Issue
Block a user