diff --git a/404.html b/404.html index 0bf5020..c57c5ee 100644 --- a/404.html +++ b/404.html @@ -17,7 +17,7 @@
- + \ No newline at end of file diff --git a/assets/dev_api_marsho.md.DEHEMRnq.js b/assets/dev_api_marsho.md.DKFXBEgt.js similarity index 98% rename from assets/dev_api_marsho.md.DEHEMRnq.js rename to assets/dev_api_marsho.md.DKFXBEgt.js index 63232bf..c10c0ad 100644 --- a/assets/dev_api_marsho.md.DEHEMRnq.js +++ b/assets/dev_api_marsho.md.DKFXBEgt.js @@ -181,7 +181,7 @@ import{_ as i,c as a,ae as n,o as h}from"./chunks/framework.BzDBnRMZ.js";const g user_nickname = nicknames.get(user_id, '') try: if config.marshoai_poke_suffix != '': - response = await make_chat_openai(client=client, model_name=model_name, msg=[get_prompt(), UserMessage(content=f'*{user_nickname}{config.marshoai_poke_suffix}')]) + response = await make_chat_openai(client=client, model_name=model_name, msg=[get_prompt() if model_name.lower() not in NO_SYSPROMPT_MODELS else None, UserMessage(content=f'*{user_nickname}{config.marshoai_poke_suffix}')]) choice = response.choices[0] if choice.finish_reason == CompletionsFinishReason.STOPPED: await UniMessage(' ' + str(choice.message.content)).send(at_sender=True) diff --git a/assets/dev_api_marsho.md.DEHEMRnq.lean.js b/assets/dev_api_marsho.md.DKFXBEgt.lean.js similarity index 100% rename from assets/dev_api_marsho.md.DEHEMRnq.lean.js rename to assets/dev_api_marsho.md.DKFXBEgt.lean.js diff --git a/assets/dev_api_util.md.BPz0f3NG.js b/assets/dev_api_util.md.BUv0BLvD.js similarity index 97% rename from assets/dev_api_util.md.BPz0f3NG.js rename to assets/dev_api_util.md.BUv0BLvD.js index 6dd39e3..19a6e85 100644 --- a/assets/dev_api_util.md.BPz0f3NG.js +++ b/assets/dev_api_util.md.BUv0BLvD.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g=JSON.parse('{"title":"util","description":"","frontmatter":{"title":"util","order":100},"headers":[],"relativePath":"dev/api/util.md","filePath":"zh/dev/api/util.md","lastUpdated":1734175019000}'),h={name:"dev/api/util.md"};function k(l,s,p,e,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`

模块 nonebot_plugin_marshoai.util

var nickname_json

var praises_json

var loaded_target_list


async func get_image_raw_and_type(url: str, timeout: int = 10) -> Optional[tuple[bytes, str]]

说明: 获取图片的二进制数据

参数:

源代码在GitHub上查看
python
async def get_image_raw_and_type(url: str, timeout: int=10) -> Optional[tuple[bytes, str]]:
+import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g=JSON.parse('{"title":"util","description":"","frontmatter":{"title":"util","order":100},"headers":[],"relativePath":"dev/api/util.md","filePath":"zh/dev/api/util.md","lastUpdated":1734175019000}'),h={name:"dev/api/util.md"};function k(l,s,p,e,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`

模块 nonebot_plugin_marshoai.util

var nickname_json

  • 说明: 记录昵称

  • 默认值: None

var praises_json

  • 说明: 记录夸赞名单

  • 默认值: None

var loaded_target_list

  • 说明: 记录已恢复备份的上下文的列表

  • 默认值: []


async func get_image_raw_and_type(url: str, timeout: int = 10) -> Optional[tuple[bytes, str]]

说明: 获取图片的二进制数据

参数:

  • url: str 图片链接
  • timeout: int 超时时间 秒
源代码在GitHub上查看
python
async def get_image_raw_and_type(url: str, timeout: int=10) -> Optional[tuple[bytes, str]]:
     async with httpx.AsyncClient() as client:
         response = await client.get(url, headers=_chromium_headers, timeout=timeout)
         if response.status_code == 200:
@@ -7,15 +7,15 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
                 content_type = mimetypes.guess_type(url)[0]
             return (response.content, str(content_type))
         else:
-            return None

async func get_image_b64(url: str, timeout: int = 10) -> Optional[str]

说明: 获取图片的base64编码

参数:

  • url: 图片链接
  • timeout: 超时时间 秒
源代码在GitHub上查看
python
async def get_image_b64(url: str, timeout: int=10) -> Optional[str]:
+            return None

async func get_image_b64(url: str, timeout: int = 10) -> Optional[str]

说明: 获取图片的base64编码

参数:

  • url: 图片链接
  • timeout: 超时时间 秒
源代码在GitHub上查看
python
async def get_image_b64(url: str, timeout: int=10) -> Optional[str]:
     if (data_type := (await get_image_raw_and_type(url, timeout))):
         base64_image = base64.b64encode(data_type[0]).decode('utf-8')
         data_url = 'data:{};base64,{}'.format(data_type[1], base64_image)
         return data_url
     else:
-        return None

async func make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)

说明: 调用ai获取回复

参数:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
源代码在GitHub上查看
python
async def make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list]=None):
-    return await client.complete(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p)

async func make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)

说明: 使用 Openai SDK 调用ai获取回复

参数:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
源代码在GitHub上查看
python
async def make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list]=None):
-    return await client.chat.completions.create(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p, timeout=config.marshoai_timeout)

func get_praises()

源代码在GitHub上查看
python
def get_praises():
+        return None

async func make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)

说明: 调用ai获取回复

参数:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
源代码在GitHub上查看
python
async def make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list]=None):
+    return await client.complete(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p)

async func make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)

说明: 使用 Openai SDK 调用ai获取回复

参数:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
源代码在GitHub上查看
python
async def make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list]=None):
+    return await client.chat.completions.create(messages=msg, model=model_name, tools=tools or NOT_GIVEN, temperature=config.marshoai_temperature or NOT_GIVEN, max_tokens=config.marshoai_max_tokens or NOT_GIVEN, top_p=config.marshoai_top_p or NOT_GIVEN, timeout=config.marshoai_timeout)

func get_praises()

源代码在GitHub上查看
python
def get_praises():
     global praises_json
     if praises_json is None:
         praises_file = store.get_plugin_data_file('praises.json')
@@ -25,7 +25,7 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
         with open(praises_file, 'r', encoding='utf-8') as f:
             data = json.load(f)
         praises_json = data
-    return praises_json

async func refresh_praises_json()

源代码在GitHub上查看
python
async def refresh_praises_json():
+    return praises_json

async func refresh_praises_json()

源代码在GitHub上查看
python
async def refresh_praises_json():
     global praises_json
     praises_file = store.get_plugin_data_file('praises.json')
     if not praises_file.exists():
@@ -33,21 +33,21 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
             json.dump(_praises_init_data, f, ensure_ascii=False, indent=4)
     async with aiofiles.open(praises_file, 'r', encoding='utf-8') as f:
         data = json.loads(await f.read())
-    praises_json = data

func build_praises()

源代码在GitHub上查看
python
def build_praises():
+    praises_json = data

func build_praises()

源代码在GitHub上查看
python
def build_praises():
     praises = get_praises()
     result = ['你喜欢以下几个人物,他们有各自的优点:']
     for item in praises['like']:
         result.append(f"名字:{item['name']},优点:{item['advantages']}")
-    return '\\n'.join(result)

async func save_context_to_json(name: str, context: Any, path: str)

源代码在GitHub上查看
python
async def save_context_to_json(name: str, context: Any, path: str):
+    return '\\n'.join(result)

async func save_context_to_json(name: str, context: Any, path: str)

源代码在GitHub上查看
python
async def save_context_to_json(name: str, context: Any, path: str):
     (context_dir := (store.get_plugin_data_dir() / path)).mkdir(parents=True, exist_ok=True)
     with open(context_dir / f'{name}.json', 'w', encoding='utf-8') as json_file:
-        json.dump(context, json_file, ensure_ascii=False, indent=4)

async func load_context_from_json(name: str, path: str) -> list

说明: 从指定路径加载历史记录

源代码在GitHub上查看
python
async def load_context_from_json(name: str, path: str) -> list:
+        json.dump(context, json_file, ensure_ascii=False, indent=4)

async func load_context_from_json(name: str, path: str) -> list

说明: 从指定路径加载历史记录

源代码在GitHub上查看
python
async def load_context_from_json(name: str, path: str) -> list:
     (context_dir := (store.get_plugin_data_dir() / path)).mkdir(parents=True, exist_ok=True)
     if (file_path := (context_dir / f'{name}.json')).exists():
         async with aiofiles.open(file_path, 'r', encoding='utf-8') as json_file:
             return json.loads(await json_file.read())
     else:
-        return []

async func get_nicknames()

说明: 获取nickname_json, 优先来源于全局变量

源代码在GitHub上查看
python
async def get_nicknames():
+        return []

async func get_nicknames()

说明: 获取nickname_json, 优先来源于全局变量

源代码在GitHub上查看
python
async def get_nicknames():
     global nickname_json
     if nickname_json is None:
         filename = store.get_plugin_data_file('nickname.json')
@@ -56,7 +56,7 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
                 nickname_json = json.loads(await f.read())
         except Exception:
             nickname_json = {}
-    return nickname_json

async func set_nickname(user_id: str, name: str)

源代码在GitHub上查看
python
async def set_nickname(user_id: str, name: str):
+    return nickname_json

async func set_nickname(user_id: str, name: str)

源代码在GitHub上查看
python
async def set_nickname(user_id: str, name: str):
     global nickname_json
     filename = store.get_plugin_data_file('nickname.json')
     if not filename.exists():
@@ -69,13 +69,13 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
         del data[user_id]
     with open(filename, 'w', encoding='utf-8') as f:
         json.dump(data, f, ensure_ascii=False, indent=4)
-    nickname_json = data

async func refresh_nickname_json()

说明: 强制刷新nickname_json, 刷新全局变量

源代码在GitHub上查看
python
async def refresh_nickname_json():
+    nickname_json = data

async func refresh_nickname_json()

说明: 强制刷新nickname_json, 刷新全局变量

源代码在GitHub上查看
python
async def refresh_nickname_json():
     global nickname_json
     try:
         async with aiofiles.open(store.get_plugin_data_file('nickname.json'), 'r', encoding='utf-8') as f:
             nickname_json = json.loads(await f.read())
     except Exception:
-        logger.error('刷新 nickname_json 表错误:无法载入 nickname.json 文件')

func get_prompt()

说明: 获取系统提示词

源代码在GitHub上查看
python
def get_prompt():
+        logger.error('刷新 nickname_json 表错误:无法载入 nickname.json 文件')

func get_prompt()

说明: 获取系统提示词

源代码在GitHub上查看
python
def get_prompt():
     prompts = ''
     prompts += config.marshoai_additional_prompt
     if config.marshoai_enable_praises:
@@ -85,12 +85,12 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
         prompts += _time_prompt.format(date_time=(current_time := DateTime.now()).strftime('%Y年%m月%d日 %H:%M:%S'), weekday_name=_weekdays[current_time.weekday()], lunar_date=current_time.to_lunar().date_hanzify('{干支年}{生肖}{月份}{日期}日'))
     marsho_prompt = config.marshoai_prompt
     spell = SystemMessage(content=marsho_prompt + prompts).as_dict()
-    return spell

func suggest_solution(errinfo: str) -> str

源代码在GitHub上查看
python
def suggest_solution(errinfo: str) -> str:
+    return spell

func suggest_solution(errinfo: str) -> str

源代码在GitHub上查看
python
def suggest_solution(errinfo: str) -> str:
     suggestions = {'content_filter': '消息已被内容过滤器过滤。请调整聊天内容后重试。', 'RateLimitReached': '模型达到调用速率限制。请稍等一段时间或联系Bot管理员。', 'tokens_limit_reached': '请求token达到上限。请重置上下文。', 'content_length_limit': '请求体过大。请重置上下文。', 'unauthorized': '访问token无效。请联系Bot管理员。', 'invalid type: parameter messages.content is of type array but should be of type string.': '聊天请求体包含此模型不支持的数据类型。请重置上下文。', 'At most 1 image(s) may be provided in one request.': '此模型只能在上下文中包含1张图片。如果此前的聊天已经发送过图片,请重置上下文。'}
     for key, suggestion in suggestions.items():
         if key in errinfo:
             return f'\\n{suggestion}'
-    return ''

async func get_backup_context(target_id: str, target_private: bool) -> list

说明: 获取历史上下文

源代码在GitHub上查看
python
async def get_backup_context(target_id: str, target_private: bool) -> list:
+    return ''

async func get_backup_context(target_id: str, target_private: bool) -> list

说明: 获取历史上下文

源代码在GitHub上查看
python
async def get_backup_context(target_id: str, target_private: bool) -> list:
     global loaded_target_list
     if target_private:
         target_uid = f'private_{target_id}'
@@ -99,12 +99,12 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
     if target_uid not in loaded_target_list:
         loaded_target_list.append(target_uid)
         return await load_context_from_json(f'back_up_context_{target_uid}', 'contexts/backup')
-    return []

var latex_convert

  • 说明: 开启一个转换实例

  • 默认值: ConvertLatex()


@get_driver().on_bot_connect

async func load_latex_convert()

源代码在GitHub上查看
python
@get_driver().on_bot_connect
+    return []

var latex_convert

  • 说明: 开启一个转换实例

  • 默认值: ConvertLatex()


@get_driver().on_bot_connect

async func load_latex_convert()

源代码在GitHub上查看
python
@get_driver().on_bot_connect
 async def load_latex_convert():
-    await latex_convert.load_channel(None)

async func get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])

源代码在GitHub上查看
python
async def get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]]):
+    await latex_convert.load_channel(None)

async func get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])

源代码在GitHub上查看
python
async def get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]]):
     for torep, rep in code_blank_uuid_map:
         msg = msg.replace(torep, rep)
-    return msg

async func parse_richtext(msg: str) -> UniMessage

说明: 人工智能给出的回答一般不会包含 HTML 嵌入其中,但是包含图片或者 LaTeX 公式、代码块,都很正常。 这个函数会把这些都以图片形式嵌入消息体。

源代码在GitHub上查看
python
async def parse_richtext(msg: str) -> UniMessage:
+    return msg

async func parse_richtext(msg: str) -> UniMessage

说明: 人工智能给出的回答一般不会包含 HTML 嵌入其中,但是包含图片或者 LaTeX 公式、代码块,都很正常。 这个函数会把这些都以图片形式嵌入消息体。

源代码在GitHub上查看
python
async def parse_richtext(msg: str) -> UniMessage:
     if not IMG_LATEX_PATTERN.search(msg):
         return UniMessage(msg)
     result_msg = UniMessage()
diff --git a/assets/dev_api_util.md.BPz0f3NG.lean.js b/assets/dev_api_util.md.BUv0BLvD.lean.js
similarity index 100%
rename from assets/dev_api_util.md.BPz0f3NG.lean.js
rename to assets/dev_api_util.md.BUv0BLvD.lean.js
diff --git a/assets/en_dev_api_marsho.md.Ca8NCLt_.js b/assets/en_dev_api_marsho.md.BZA0yy7W.js
similarity index 98%
rename from assets/en_dev_api_marsho.md.Ca8NCLt_.js
rename to assets/en_dev_api_marsho.md.BZA0yy7W.js
index b972319..5d7d489 100644
--- a/assets/en_dev_api_marsho.md.Ca8NCLt_.js
+++ b/assets/en_dev_api_marsho.md.BZA0yy7W.js
@@ -181,7 +181,7 @@ import{_ as i,c as a,ae as n,o as h}from"./chunks/framework.BzDBnRMZ.js";const g
     user_nickname = nicknames.get(user_id, '')
     try:
         if config.marshoai_poke_suffix != '':
-            response = await make_chat_openai(client=client, model_name=model_name, msg=[get_prompt(), UserMessage(content=f'*{user_nickname}{config.marshoai_poke_suffix}')])
+            response = await make_chat_openai(client=client, model_name=model_name, msg=[get_prompt() if model_name.lower() not in NO_SYSPROMPT_MODELS else None, UserMessage(content=f'*{user_nickname}{config.marshoai_poke_suffix}')])
             choice = response.choices[0]
             if choice.finish_reason == CompletionsFinishReason.STOPPED:
                 await UniMessage(' ' + str(choice.message.content)).send(at_sender=True)
diff --git a/assets/en_dev_api_marsho.md.Ca8NCLt_.lean.js b/assets/en_dev_api_marsho.md.BZA0yy7W.lean.js
similarity index 100%
rename from assets/en_dev_api_marsho.md.Ca8NCLt_.lean.js
rename to assets/en_dev_api_marsho.md.BZA0yy7W.lean.js
diff --git a/assets/en_dev_api_util.md.DZ2bLrc-.js b/assets/en_dev_api_util.md.BfLNUJEL.js
similarity index 97%
rename from assets/en_dev_api_util.md.DZ2bLrc-.js
rename to assets/en_dev_api_util.md.BfLNUJEL.js
index 5c16444..07837f3 100644
--- a/assets/en_dev_api_util.md.DZ2bLrc-.js
+++ b/assets/en_dev_api_util.md.BfLNUJEL.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g=JSON.parse('{"title":"util","description":"","frontmatter":{"title":"util","order":100},"headers":[],"relativePath":"en/dev/api/util.md","filePath":"en/dev/api/util.md","lastUpdated":1734175019000}'),h={name:"en/dev/api/util.md"};function k(l,s,p,e,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`

Module nonebot_plugin_marshoai.util

var nickname_json

  • Description: 记录昵称

  • Default: None

var praises_json

  • Description: 记录夸赞名单

  • Default: None

var loaded_target_list

  • Description: 记录已恢复备份的上下文的列表

  • Default: []


async func get_image_raw_and_type(url: str, timeout: int = 10) -> Optional[tuple[bytes, str]]

Description: 获取图片的二进制数据

Arguments:

  • url: str 图片链接
  • timeout: int 超时时间 秒
Source code or View on GitHub
python
async def get_image_raw_and_type(url: str, timeout: int=10) -> Optional[tuple[bytes, str]]:
+import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g=JSON.parse('{"title":"util","description":"","frontmatter":{"title":"util","order":100},"headers":[],"relativePath":"en/dev/api/util.md","filePath":"en/dev/api/util.md","lastUpdated":1734175019000}'),h={name:"en/dev/api/util.md"};function k(l,s,p,e,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`

Module nonebot_plugin_marshoai.util

var nickname_json

  • Description: 记录昵称

  • Default: None

var praises_json

  • Description: 记录夸赞名单

  • Default: None

var loaded_target_list

  • Description: 记录已恢复备份的上下文的列表

  • Default: []


async func get_image_raw_and_type(url: str, timeout: int = 10) -> Optional[tuple[bytes, str]]

Description: 获取图片的二进制数据

Arguments:

  • url: str 图片链接
  • timeout: int 超时时间 秒
Source code or View on GitHub
python
async def get_image_raw_and_type(url: str, timeout: int=10) -> Optional[tuple[bytes, str]]:
     async with httpx.AsyncClient() as client:
         response = await client.get(url, headers=_chromium_headers, timeout=timeout)
         if response.status_code == 200:
@@ -7,15 +7,15 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
                 content_type = mimetypes.guess_type(url)[0]
             return (response.content, str(content_type))
         else:
-            return None

async func get_image_b64(url: str, timeout: int = 10) -> Optional[str]

Description: 获取图片的base64编码

Arguments:

  • url: 图片链接
  • timeout: 超时时间 秒
Source code or View on GitHub
python
async def get_image_b64(url: str, timeout: int=10) -> Optional[str]:
+            return None

async func get_image_b64(url: str, timeout: int = 10) -> Optional[str]

Description: 获取图片的base64编码

Arguments:

  • url: 图片链接
  • timeout: 超时时间 秒
Source code or View on GitHub
python
async def get_image_b64(url: str, timeout: int=10) -> Optional[str]:
     if (data_type := (await get_image_raw_and_type(url, timeout))):
         base64_image = base64.b64encode(data_type[0]).decode('utf-8')
         data_url = 'data:{};base64,{}'.format(data_type[1], base64_image)
         return data_url
     else:
-        return None

async func make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)

Description: 调用ai获取回复

Arguments:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
Source code or View on GitHub
python
async def make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list]=None):
-    return await client.complete(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p)

async func make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)

Description: 使用 Openai SDK 调用ai获取回复

Arguments:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
Source code or View on GitHub
python
async def make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list]=None):
-    return await client.chat.completions.create(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p, timeout=config.marshoai_timeout)

func get_praises()

Source code or View on GitHub
python
def get_praises():
+        return None

async func make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)

Description: 调用ai获取回复

Arguments:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
Source code or View on GitHub
python
async def make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list]=None):
+    return await client.complete(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p)

async func make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)

Description: 使用 Openai SDK 调用ai获取回复

Arguments:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
Source code or View on GitHub
python
async def make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list]=None):
+    return await client.chat.completions.create(messages=msg, model=model_name, tools=tools or NOT_GIVEN, temperature=config.marshoai_temperature or NOT_GIVEN, max_tokens=config.marshoai_max_tokens or NOT_GIVEN, top_p=config.marshoai_top_p or NOT_GIVEN, timeout=config.marshoai_timeout)

func get_praises()

Source code or View on GitHub
python
def get_praises():
     global praises_json
     if praises_json is None:
         praises_file = store.get_plugin_data_file('praises.json')
@@ -25,7 +25,7 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
         with open(praises_file, 'r', encoding='utf-8') as f:
             data = json.load(f)
         praises_json = data
-    return praises_json

async func refresh_praises_json()

Source code or View on GitHub
python
async def refresh_praises_json():
+    return praises_json

async func refresh_praises_json()

Source code or View on GitHub
python
async def refresh_praises_json():
     global praises_json
     praises_file = store.get_plugin_data_file('praises.json')
     if not praises_file.exists():
@@ -33,21 +33,21 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
             json.dump(_praises_init_data, f, ensure_ascii=False, indent=4)
     async with aiofiles.open(praises_file, 'r', encoding='utf-8') as f:
         data = json.loads(await f.read())
-    praises_json = data

func build_praises()

Source code or View on GitHub
python
def build_praises():
+    praises_json = data

func build_praises()

Source code or View on GitHub
python
def build_praises():
     praises = get_praises()
     result = ['你喜欢以下几个人物,他们有各自的优点:']
     for item in praises['like']:
         result.append(f"名字:{item['name']},优点:{item['advantages']}")
-    return '\\n'.join(result)

async func save_context_to_json(name: str, context: Any, path: str)

Source code or View on GitHub
python
async def save_context_to_json(name: str, context: Any, path: str):
+    return '\\n'.join(result)

async func save_context_to_json(name: str, context: Any, path: str)

Source code or View on GitHub
python
async def save_context_to_json(name: str, context: Any, path: str):
     (context_dir := (store.get_plugin_data_dir() / path)).mkdir(parents=True, exist_ok=True)
     with open(context_dir / f'{name}.json', 'w', encoding='utf-8') as json_file:
-        json.dump(context, json_file, ensure_ascii=False, indent=4)

async func load_context_from_json(name: str, path: str) -> list

Description: 从指定路径加载历史记录

Source code or View on GitHub
python
async def load_context_from_json(name: str, path: str) -> list:
+        json.dump(context, json_file, ensure_ascii=False, indent=4)

async func load_context_from_json(name: str, path: str) -> list

Description: 从指定路径加载历史记录

Source code or View on GitHub
python
async def load_context_from_json(name: str, path: str) -> list:
     (context_dir := (store.get_plugin_data_dir() / path)).mkdir(parents=True, exist_ok=True)
     if (file_path := (context_dir / f'{name}.json')).exists():
         async with aiofiles.open(file_path, 'r', encoding='utf-8') as json_file:
             return json.loads(await json_file.read())
     else:
-        return []

async func get_nicknames()

Description: 获取nickname_json, 优先来源于全局变量

Source code or View on GitHub
python
async def get_nicknames():
+        return []

async func get_nicknames()

Description: 获取nickname_json, 优先来源于全局变量

Source code or View on GitHub
python
async def get_nicknames():
     global nickname_json
     if nickname_json is None:
         filename = store.get_plugin_data_file('nickname.json')
@@ -56,7 +56,7 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
                 nickname_json = json.loads(await f.read())
         except Exception:
             nickname_json = {}
-    return nickname_json

async func set_nickname(user_id: str, name: str)

Source code or View on GitHub
python
async def set_nickname(user_id: str, name: str):
+    return nickname_json

async func set_nickname(user_id: str, name: str)

Source code or View on GitHub
python
async def set_nickname(user_id: str, name: str):
     global nickname_json
     filename = store.get_plugin_data_file('nickname.json')
     if not filename.exists():
@@ -69,13 +69,13 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
         del data[user_id]
     with open(filename, 'w', encoding='utf-8') as f:
         json.dump(data, f, ensure_ascii=False, indent=4)
-    nickname_json = data

async func refresh_nickname_json()

Description: 强制刷新nickname_json, 刷新全局变量

Source code or View on GitHub
python
async def refresh_nickname_json():
+    nickname_json = data

async func refresh_nickname_json()

Description: 强制刷新nickname_json, 刷新全局变量

Source code or View on GitHub
python
async def refresh_nickname_json():
     global nickname_json
     try:
         async with aiofiles.open(store.get_plugin_data_file('nickname.json'), 'r', encoding='utf-8') as f:
             nickname_json = json.loads(await f.read())
     except Exception:
-        logger.error('刷新 nickname_json 表错误:无法载入 nickname.json 文件')

func get_prompt()

Description: 获取系统提示词

Source code or View on GitHub
python
def get_prompt():
+        logger.error('刷新 nickname_json 表错误:无法载入 nickname.json 文件')

func get_prompt()

Description: 获取系统提示词

Source code or View on GitHub
python
def get_prompt():
     prompts = ''
     prompts += config.marshoai_additional_prompt
     if config.marshoai_enable_praises:
@@ -85,12 +85,12 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
         prompts += _time_prompt.format(date_time=(current_time := DateTime.now()).strftime('%Y年%m月%d日 %H:%M:%S'), weekday_name=_weekdays[current_time.weekday()], lunar_date=current_time.to_lunar().date_hanzify('{干支年}{生肖}{月份}{日期}日'))
     marsho_prompt = config.marshoai_prompt
     spell = SystemMessage(content=marsho_prompt + prompts).as_dict()
-    return spell

func suggest_solution(errinfo: str) -> str

Source code or View on GitHub
python
def suggest_solution(errinfo: str) -> str:
+    return spell

func suggest_solution(errinfo: str) -> str

Source code or View on GitHub
python
def suggest_solution(errinfo: str) -> str:
     suggestions = {'content_filter': '消息已被内容过滤器过滤。请调整聊天内容后重试。', 'RateLimitReached': '模型达到调用速率限制。请稍等一段时间或联系Bot管理员。', 'tokens_limit_reached': '请求token达到上限。请重置上下文。', 'content_length_limit': '请求体过大。请重置上下文。', 'unauthorized': '访问token无效。请联系Bot管理员。', 'invalid type: parameter messages.content is of type array but should be of type string.': '聊天请求体包含此模型不支持的数据类型。请重置上下文。', 'At most 1 image(s) may be provided in one request.': '此模型只能在上下文中包含1张图片。如果此前的聊天已经发送过图片,请重置上下文。'}
     for key, suggestion in suggestions.items():
         if key in errinfo:
             return f'\\n{suggestion}'
-    return ''

async func get_backup_context(target_id: str, target_private: bool) -> list

Description: 获取历史上下文

Source code or View on GitHub
python
async def get_backup_context(target_id: str, target_private: bool) -> list:
+    return ''

async func get_backup_context(target_id: str, target_private: bool) -> list

Description: 获取历史上下文

Source code or View on GitHub
python
async def get_backup_context(target_id: str, target_private: bool) -> list:
     global loaded_target_list
     if target_private:
         target_uid = f'private_{target_id}'
@@ -99,12 +99,12 @@ import{_ as i,c as a,ae as n,o as t}from"./chunks/framework.BzDBnRMZ.js";const g
     if target_uid not in loaded_target_list:
         loaded_target_list.append(target_uid)
         return await load_context_from_json(f'back_up_context_{target_uid}', 'contexts/backup')
-    return []

var latex_convert

  • Description: 开启一个转换实例

  • Default: ConvertLatex()


@get_driver().on_bot_connect

async func load_latex_convert()

Source code or View on GitHub
python
@get_driver().on_bot_connect
+    return []

var latex_convert

  • Description: 开启一个转换实例

  • Default: ConvertLatex()


@get_driver().on_bot_connect

async func load_latex_convert()

Source code or View on GitHub
python
@get_driver().on_bot_connect
 async def load_latex_convert():
-    await latex_convert.load_channel(None)

async func get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])

Source code or View on GitHub
python
async def get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]]):
+    await latex_convert.load_channel(None)

async func get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])

Source code or View on GitHub
python
async def get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]]):
     for torep, rep in code_blank_uuid_map:
         msg = msg.replace(torep, rep)
-    return msg

async func parse_richtext(msg: str) -> UniMessage

Description: 人工智能给出的回答一般不会包含 HTML 嵌入其中,但是包含图片或者 LaTeX 公式、代码块,都很正常。 这个函数会把这些都以图片形式嵌入消息体。

Source code or View on GitHub
python
async def parse_richtext(msg: str) -> UniMessage:
+    return msg

async func parse_richtext(msg: str) -> UniMessage

Description: 人工智能给出的回答一般不会包含 HTML 嵌入其中,但是包含图片或者 LaTeX 公式、代码块,都很正常。 这个函数会把这些都以图片形式嵌入消息体。

Source code or View on GitHub
python
async def parse_richtext(msg: str) -> UniMessage:
     if not IMG_LATEX_PATTERN.search(msg):
         return UniMessage(msg)
     result_msg = UniMessage()
diff --git a/assets/en_dev_api_util.md.DZ2bLrc-.lean.js b/assets/en_dev_api_util.md.BfLNUJEL.lean.js
similarity index 100%
rename from assets/en_dev_api_util.md.DZ2bLrc-.lean.js
rename to assets/en_dev_api_util.md.BfLNUJEL.lean.js
diff --git a/dev/api/azure.html b/dev/api/azure.html
index 9ac7916..3faa4be 100644
--- a/dev/api/azure.html
+++ b/dev/api/azure.html
@@ -180,7 +180,7 @@
         await UniMessage(str(e) + suggest_solution(str(e))).send()
         traceback.print_exc()
         return

var text

  • 说明: type: ignore

  • 默认值: event.get_message()

- + \ No newline at end of file diff --git a/dev/api/azure_onebot.html b/dev/api/azure_onebot.html index b87d69d..3a196d7 100644 --- a/dev/api/azure_onebot.html +++ b/dev/api/azure_onebot.html @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/dev/api/config.html b/dev/api/config.html index 52f1995..06d8be8 100644 --- a/dev/api/config.html +++ b/dev/api/config.html @@ -38,7 +38,7 @@ logger.info(f'新增配置项: {key} = {value}') old_config[key] = value return old_config
- + \ No newline at end of file diff --git a/dev/api/constants.html b/dev/api/constants.html index 4cb1c66..992f25f 100644 --- a/dev/api/constants.html +++ b/dev/api/constants.html @@ -20,7 +20,7 @@
- + \ No newline at end of file diff --git a/dev/api/deal_latex.html b/dev/api/deal_latex.html index 578d252..0eee2dc 100644 --- a/dev/api/deal_latex.html +++ b/dev/api/deal_latex.html @@ -114,7 +114,7 @@ results = await asyncio.gather(*(channel_test_wrapper(channel) for channel in channel_list)) best_channel = min(results, key=lambda x: x[0])[1] return best_channel()

attr channel: ConvertChannel = NO_DEFAULT

- + \ No newline at end of file diff --git a/dev/api/dev.html b/dev/api/dev.html index 7f82192..f4945ea 100644 --- a/dev/api/dev.html +++ b/dev/api/dev.html @@ -64,7 +64,7 @@ else: logger.debug('未找到变动插件') return

var dir_list

- + \ No newline at end of file diff --git a/dev/api/hooks.html b/dev/api/hooks.html index d12ab90..b289f7a 100644 --- a/dev/api/hooks.html +++ b/dev/api/hooks.html @@ -30,7 +30,7 @@ target_uid = 'group_' + target_id await save_context_to_json(f'back_up_context_{target_uid}', contexts_data, 'contexts/backup') logger.info(f'已保存会话 {target_id} 的上下文备份,将在下次对话时恢复~')

var marshoai_plugin_dirs

- + \ No newline at end of file diff --git a/dev/api/hunyuan.html b/dev/api/hunyuan.html index a477b13..40c3117 100644 --- a/dev/api/hunyuan.html +++ b/dev/api/hunyuan.html @@ -29,7 +29,7 @@ await UniMessage.image(url=url).send() except Exception as e: traceback.print_exc() - + \ No newline at end of file diff --git a/dev/api/index.html b/dev/api/index.html index bdc310a..1a5d917 100644 --- a/dev/api/index.html +++ b/dev/api/index.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/instances.html b/dev/api/instances.html index 3050f80..d66edf7 100644 --- a/dev/api/instances.html +++ b/dev/api/instances.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai.instances

var target_list

  • 说明: 记录需保存历史上下文的列表

  • 类型: list[list]

  • 默认值: []

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/marsho.html b/dev/api/marsho.html index aec094e..9bdf1f9 100644 --- a/dev/api/marsho.html +++ b/dev/api/marsho.html @@ -13,7 +13,7 @@ - + @@ -202,7 +202,7 @@ user_nickname = nicknames.get(user_id, '') try: if config.marshoai_poke_suffix != '': - response = await make_chat_openai(client=client, model_name=model_name, msg=[get_prompt(), UserMessage(content=f'*{user_nickname}{config.marshoai_poke_suffix}')]) + response = await make_chat_openai(client=client, model_name=model_name, msg=[get_prompt() if model_name.lower() not in NO_SYSPROMPT_MODELS else None, UserMessage(content=f'*{user_nickname}{config.marshoai_poke_suffix}')]) choice = response.choices[0] if choice.finish_reason == CompletionsFinishReason.STOPPED: await UniMessage(' ' + str(choice.message.content)).send(at_sender=True) @@ -210,7 +210,7 @@ await UniMessage(str(e) + suggest_solution(str(e))).send() traceback.print_exc() return

var text

var request_msg

- + \ No newline at end of file diff --git a/dev/api/marsho_onebot.html b/dev/api/marsho_onebot.html index 7b9df2c..8e6bcd6 100644 --- a/dev/api/marsho_onebot.html +++ b/dev/api/marsho_onebot.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai.marsho_onebot

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/metadata.html b/dev/api/metadata.html index acc9b61..8f7cd78 100644 --- a/dev/api/metadata.html +++ b/dev/api/metadata.html @@ -20,7 +20,7 @@
Skip to content

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/models.html b/dev/api/models.html index 6b26bb5..446bc6e 100644 --- a/dev/api/models.html +++ b/dev/api/models.html @@ -65,7 +65,7 @@ if not self.tools_list or not config.marshoai_enable_tools: return None return self.tools_list - + \ No newline at end of file diff --git a/dev/api/observer.html b/dev/api/observer.html index 451f9fa..a8d321a 100644 --- a/dev/api/observer.html +++ b/dev/api/observer.html @@ -55,7 +55,7 @@ observer.schedule(code_modified_handler, directory, recursive=recursive) return func return decorator - + \ No newline at end of file diff --git a/dev/api/plugin/func_call/caller.html b/dev/api/plugin/func_call/caller.html index ae1b427..7bbb21f 100644 --- a/dev/api/plugin/func_call/caller.html +++ b/dev/api/plugin/func_call/caller.html @@ -128,7 +128,7 @@ caller = Caller(name=name, description=description, func_type=func_type, no_module_name=no_module_name) return caller

func get_function_calls() -> dict[str, Caller]

说明: 获取所有已注册的function call函数

返回: dict[str, Caller]: 所有已注册的function call函数

源代码在GitHub上查看
python
def get_function_calls() -> dict[str, Caller]:
     return _caller_data
- + \ No newline at end of file diff --git a/dev/api/plugin/func_call/index.html b/dev/api/plugin/func_call/index.html index dc3feb0..4b0b3ad 100644 --- a/dev/api/plugin/func_call/index.html +++ b/dev/api/plugin/func_call/index.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugin.func_call

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/plugin/func_call/models.html b/dev/api/plugin/func_call/models.html index a95b2a1..77fca5f 100644 --- a/dev/api/plugin/func_call/models.html +++ b/dev/api/plugin/func_call/models.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugin.func_call.models

class SessionContext(BaseModel)

attr bot: Bot = NO_DEFAULT

attr event: Event = NO_DEFAULT

attr matcher: Matcher = NO_DEFAULT

attr state: T_State = NO_DEFAULT

attr caller: Any = None

class SessionContextDepends(BaseModel)

attr bot: str | None = None

attr event: str | None = None

attr matcher: str | None = None

attr state: str | None = None

attr caller: str | None = None

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/plugin/func_call/params.html b/dev/api/plugin/func_call/params.html index c94ae07..5d9138e 100644 --- a/dev/api/plugin/func_call/params.html +++ b/dev/api/plugin/func_call/params.html @@ -23,7 +23,7 @@ return {'type': self.type_, 'description': self.description, **{k: v for k, v in self.properties.items() if v is not None}}

attr type_: str = NO_DEFAULT

attr description: str = NO_DEFAULT

attr default: Any = None

attr properties: dict[str, Any] = {}

attr required: bool = False

class String(Parameter)

attr type_: str = ParamTypes.STRING

attr properties: dict[str, Any] = Field(default_factory=dict)

attr enum: list[str] | None = None

class Integer(Parameter)

attr type_: str = ParamTypes.INTEGER

attr properties: dict[str, Any] = Field(default_factory=lambda: {'minimum': 0, 'maximum': 100})

attr minimum: int | None = None

attr maximum: int | None = None

class Array(Parameter)

attr type_: str = ParamTypes.ARRAY

attr properties: dict[str, Any] = Field(default_factory=lambda: {'items': {'type': 'string'}})

attr items: str = Field('string', description='数组元素类型')

class FunctionCall(BaseModel)


func hash self => int

源代码在GitHub上查看
python
def __hash__(self) -> int:
     return hash(self.name)

func data(self) -> dict[str, Any]

说明: 生成函数描述信息

返回: dict[str, Any]: 函数描述信息 字典

源代码在GitHub上查看
python
def data(self) -> dict[str, Any]:
     return {'type': 'function', 'function': {'name': self.name, 'description': self.description, 'parameters': {'type': 'object', 'properties': {k: v.data() for k, v in self.arguments.items()}}, 'required': [k for k, v in self.arguments.items() if v.default is None], **self.kwargs}}

attr name: str = NO_DEFAULT

attr description: str = NO_DEFAULT

attr arguments: dict[str, Parameter] = NO_DEFAULT

attr function: FUNCTION_CALL_FUNC = NO_DEFAULT

attr kwargs: dict[str, Any] = {}

- + \ No newline at end of file diff --git a/dev/api/plugin/func_call/utils.html b/dev/api/plugin/func_call/utils.html index a5c865d..7b0cbbe 100644 --- a/dev/api/plugin/func_call/utils.html +++ b/dev/api/plugin/func_call/utils.html @@ -39,7 +39,7 @@ return False func_ = getattr(call, '__call__', None) return inspect.iscoroutinefunction(func_) - + \ No newline at end of file diff --git a/dev/api/plugin/index.html b/dev/api/plugin/index.html index 59ccf24..14ef573 100644 --- a/dev/api/plugin/index.html +++ b/dev/api/plugin/index.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugin

该功能目前正在开发中开发基本完成,暂时可用,受影响的文件夹 plugin, plugins

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/plugin/load.html b/dev/api/plugin/load.html index bbc6e21..4ddd818 100644 --- a/dev/api/plugin/load.html +++ b/dev/api/plugin/load.html @@ -69,7 +69,7 @@ logger.opt(colors=True).error(f'重新加载插件失败 "<r>{plugin.name}</r>"') traceback.print_exc() return None

var module

var module_name

var module_name

- + \ No newline at end of file diff --git a/dev/api/plugin/models.html b/dev/api/plugin/models.html index 100d30c..73ca878 100644 --- a/dev/api/plugin/models.html +++ b/dev/api/plugin/models.html @@ -22,7 +22,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugin.models

class PluginMetadata(BaseModel)

attr name: str = NO_DEFAULT

attr description: str = ''

attr usage: str = ''

attr author: str = ''

attr homepage: str = ''

attr extra: dict[str, Any] = {}

class Plugin(BaseModel)


func hash self => int

源代码在GitHub上查看
python
def __hash__(self) -> int:
     return hash(self.name)

func self == other: Any => bool

源代码在GitHub上查看
python
def __eq__(self, other: Any) -> bool:
     return self.name == other.name

attr name: str = NO_DEFAULT

attr module: ModuleType = NO_DEFAULT

attr module_name: str = NO_DEFAULT

attr module_path: str | None = NO_DEFAULT

attr metadata: PluginMetadata | None = None

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/plugin/register.html b/dev/api/plugin/register.html index fcb38ae..b0304a8 100644 --- a/dev/api/plugin/register.html +++ b/dev/api/plugin/register.html @@ -29,7 +29,7 @@ name = func.__name__ description = func.__doc__ logger.info(f'注册函数: {name} {description}') - + \ No newline at end of file diff --git a/dev/api/plugin/typing.html b/dev/api/plugin/typing.html index 55628d8..04c9589 100644 --- a/dev/api/plugin/typing.html +++ b/dev/api/plugin/typing.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugin.typing

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/plugin/utils.html b/dev/api/plugin/utils.html index bec2fbf..b6423df 100644 --- a/dev/api/plugin/utils.html +++ b/dev/api/plugin/utils.html @@ -26,7 +26,7 @@ else: return '.'.join(rel_path.parts[:-1] + (rel_path.stem,))

func parse_function_docsring()

源代码在GitHub上查看
python
def parse_function_docsring():
     pass
- + \ No newline at end of file diff --git a/dev/api/plugins/builtin_tools/chat.html b/dev/api/plugins/builtin_tools/chat.html index 78f67fc..ebde6a3 100644 --- a/dev/api/plugins/builtin_tools/chat.html +++ b/dev/api/plugins/builtin_tools/chat.html @@ -43,7 +43,7 @@ return '发送完成' except Exception as e: return '发送失败: ' + str(e) - + \ No newline at end of file diff --git a/dev/api/plugins/builtin_tools/file_io.html b/dev/api/plugins/builtin_tools/file_io.html index fe614f2..babb706 100644 --- a/dev/api/plugins/builtin_tools/file_io.html +++ b/dev/api/plugins/builtin_tools/file_io.html @@ -33,7 +33,7 @@ return '写入成功' except Exception as e: return '写入出错: ' + str(e) - + \ No newline at end of file diff --git a/dev/api/plugins/builtin_tools/index.html b/dev/api/plugins/builtin_tools/index.html index 8787ad1..7346a87 100644 --- a/dev/api/plugins/builtin_tools/index.html +++ b/dev/api/plugins/builtin_tools/index.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugins.builtin_tools

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/plugins/builtin_tools/liteyuki.html b/dev/api/plugins/builtin_tools/liteyuki.html index 06cc925..373db20 100644 --- a/dev/api/plugins/builtin_tools/liteyuki.html +++ b/dev/api/plugins/builtin_tools/liteyuki.html @@ -29,7 +29,7 @@ response = await client.get('https://api.liteyuki.icu/online') online = response.json().get('online') return f'注册节点数: {register}\n在线节点数: {online}' - + \ No newline at end of file diff --git a/dev/api/plugins/builtin_tools/manager.html b/dev/api/plugins/builtin_tools/manager.html index bc9494c..a63e14a 100644 --- a/dev/api/plugins/builtin_tools/manager.html +++ b/dev/api/plugins/builtin_tools/manager.html @@ -28,7 +28,7 @@ else: reply += f'名称: {p.name},描述: 暂无\n' return reply - + \ No newline at end of file diff --git a/dev/api/plugins/builtin_tools/network.html b/dev/api/plugins/builtin_tools/network.html index a1a7266..5c5c54c 100644 --- a/dev/api/plugins/builtin_tools/network.html +++ b/dev/api/plugins/builtin_tools/network.html @@ -40,7 +40,7 @@ logger.error(f'marsho builtin: 获取网页内容失败: {e}') return '获取网页内容失败:' + str(e) return '未能获取到有效的网页内容' - + \ No newline at end of file diff --git a/dev/api/plugins/builtin_tools/utils.html b/dev/api/plugins/builtin_tools/utils.html index b989d1c..cd3f707 100644 --- a/dev/api/plugins/builtin_tools/utils.html +++ b/dev/api/plugins/builtin_tools/utils.html @@ -22,7 +22,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugins.builtin_tools.utils


async func make_html_summary(html_content: str, language: str = 'english', length: int = 3) -> str

说明: 使用html内容生成摘要

参数:

  • html_content (str): html内容
  • language (str, optional): 语言. Defaults to "english".
  • length (int, optional): 摘要长度. Defaults to 3.

返回: str: 摘要

源代码在GitHub上查看
python
async def make_html_summary(html_content: str, language: str='english', length: int=3) -> str:
     loop = asyncio.get_event_loop()
     return await loop.run_in_executor(executor, _make_summary, html_content, language, length)

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/plugins/marshoai_bangumi/index.html b/dev/api/plugins/marshoai_bangumi/index.html index 62ee92d..e6b1cb0 100644 --- a/dev/api/plugins/marshoai_bangumi/index.html +++ b/dev/api/plugins/marshoai_bangumi/index.html @@ -47,7 +47,7 @@ except Exception as e: traceback.print_exc() return '' - + \ No newline at end of file diff --git a/dev/api/plugins/marshoai_basic/index.html b/dev/api/plugins/marshoai_basic/index.html index e6aa1a4..3f19f01 100644 --- a/dev/api/plugins/marshoai_basic/index.html +++ b/dev/api/plugins/marshoai_basic/index.html @@ -30,7 +30,7 @@ current_lunar_date = DateTime.now().to_lunar().date_hanzify()[5:] time_prompt = f'现在的时间是{current_time}{current_weekday_name},农历{current_lunar_date}。' return time_prompt - + \ No newline at end of file diff --git a/dev/api/plugins/twisuki_megakits/index.html b/dev/api/plugins/twisuki_megakits/index.html index 7fde5ca..99350b8 100644 --- a/dev/api/plugins/twisuki_megakits/index.html +++ b/dev/api/plugins/twisuki_megakits/index.html @@ -28,7 +28,7 @@ return str(await mk_nya_code.nya_encrypt(msg))

@on_function_call(description='将猫语翻译回人类语言').params(msg=String(description='被翻译语句'))

async func nya_decrypt(msg: str) -> str

说明: 将猫语翻译回人类语言

源代码在GitHub上查看
python
@on_function_call(description='将猫语翻译回人类语言').params(msg=String(description='被翻译语句'))
 async def nya_decrypt(msg: str) -> str:
     return str(await mk_nya_code.nya_decrypt(msg))
- + \ No newline at end of file diff --git a/dev/api/plugins/twisuki_megakits/mk_morse_code.html b/dev/api/plugins/twisuki_megakits/mk_morse_code.html index ed4059b..a12bbf8 100644 --- a/dev/api/plugins/twisuki_megakits/mk_morse_code.html +++ b/dev/api/plugins/twisuki_megakits/mk_morse_code.html @@ -38,7 +38,7 @@ else: result += '?' return result - + \ No newline at end of file diff --git a/dev/api/plugins/twisuki_megakits/mk_nya_code.html b/dev/api/plugins/twisuki_megakits/mk_nya_code.html index e3a1d47..bdd5749 100644 --- a/dev/api/plugins/twisuki_megakits/mk_nya_code.html +++ b/dev/api/plugins/twisuki_megakits/mk_nya_code.html @@ -55,7 +55,7 @@ except Exception: return '翻译失败' return result

var char

var char

var char

var char

var char

- + \ No newline at end of file diff --git a/dev/api/plugins/twisuki_petcat/index.html b/dev/api/plugins/twisuki_petcat/index.html index 54b5518..44694f3 100644 --- a/dev/api/plugins/twisuki_petcat/index.html +++ b/dev/api/plugins/twisuki_petcat/index.html @@ -36,7 +36,7 @@ return pc_info.print_type_list()

@on_function_call(description='可选技能').params()

async func help_cat_skill() -> str

源代码在GitHub上查看
python
@on_function_call(description='可选技能').params()
 async def help_cat_skill() -> str:
     return pc_info.print_skill_list()
- + \ No newline at end of file diff --git a/dev/api/plugins/twisuki_petcat/pc_cat.html b/dev/api/plugins/twisuki_petcat/pc_cat.html index 68c93f6..ee0c9c9 100644 --- a/dev/api/plugins/twisuki_petcat/pc_cat.html +++ b/dev/api/plugins/twisuki_petcat/pc_cat.html @@ -126,7 +126,7 @@ data['energy'] = min(data['energy'] + 16, 0) token = dict_to_token(data) return f'''你抱猫休息了一阵子, 猫猫的活力值提升到了{value_output(data['energy'])}\n新token : "{token}"\n请妥善保存token, 这是猫猫的唯一标识符!''' - + \ No newline at end of file diff --git a/dev/api/plugins/twisuki_petcat/pc_info.html b/dev/api/plugins/twisuki_petcat/pc_info.html index 7661cff..02f8757 100644 --- a/dev/api/plugins/twisuki_petcat/pc_info.html +++ b/dev/api/plugins/twisuki_petcat/pc_info.html @@ -42,7 +42,7 @@ logger.info(data['skill']) return result[:-2]

func help_cat_new() -> str

源代码在GitHub上查看
python
def help_cat_new() -> str:
     return f'新建一只猫猫, 首先选择猫猫的种类, 获取初始化token;然后用这个token, 选择名字和一个技能进行初始化;初始化结束才表示猫猫正式创建成功.\ntoken为猫的唯一标识符, 每次交互都需要传入token\n种类可选 : {print_type_list()}\n技能可选 : {print_skill_list()}'
- + \ No newline at end of file diff --git a/dev/api/plugins/twisuki_petcat/pc_shop.html b/dev/api/plugins/twisuki_petcat/pc_shop.html index 0017b90..834c445 100644 --- a/dev/api/plugins/twisuki_petcat/pc_shop.html +++ b/dev/api/plugins/twisuki_petcat/pc_shop.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugins.twisuki_petcat.pc_shop

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/plugins/twisuki_petcat/pc_token.html b/dev/api/plugins/twisuki_petcat/pc_token.html index 4ae4496..345bf7b 100644 --- a/dev/api/plugins/twisuki_petcat/pc_token.html +++ b/dev/api/plugins/twisuki_petcat/pc_token.html @@ -120,7 +120,7 @@ token = base64.b64encode(token_byte).decode() logger.success(f'编码完成, token为\n{token}') return token - + \ No newline at end of file diff --git a/dev/api/plugins_test/marshoai_basic/index.html b/dev/api/plugins_test/marshoai_basic/index.html index 712c134..c72235c 100644 --- a/dev/api/plugins_test/marshoai_basic/index.html +++ b/dev/api/plugins_test/marshoai_basic/index.html @@ -28,7 +28,7 @@ current_lunar_date = DateTime.now().to_lunar().date_hanzify()[5:] time_prompt = f'现在的时间是 {current_time}{current_weekday_name},农历 {current_lunar_date}。' return time_prompt - + \ No newline at end of file diff --git a/dev/api/plugins_test/marshoai_memory/command.html b/dev/api/plugins_test/marshoai_memory/command.html index 08b5698..5f4cabd 100644 --- a/dev/api/plugins_test/marshoai_memory/command.html +++ b/dev/api/plugins_test/marshoai_memory/command.html @@ -38,7 +38,7 @@ json.dump(memory_data, f, ensure_ascii=False, indent=4) await matcher.finish('记忆已重置~') await matcher.finish('没有找到该用户的记忆~') - + \ No newline at end of file diff --git a/dev/api/plugins_test/marshoai_memory/config.html b/dev/api/plugins_test/marshoai_memory/config.html index 0624baf..7d38010 100644 --- a/dev/api/plugins_test/marshoai_memory/config.html +++ b/dev/api/plugins_test/marshoai_memory/config.html @@ -20,7 +20,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugins_test.marshoai_memory.config

class ConfigModel(BaseModel)

attr marshoai_plugin_memory_scheduler: bool = True

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/plugins_test/marshoai_memory/index.html b/dev/api/plugins_test/marshoai_memory/index.html index ef2249b..62b5689 100644 --- a/dev/api/plugins_test/marshoai_memory/index.html +++ b/dev/api/plugins_test/marshoai_memory/index.html @@ -49,7 +49,7 @@ logger.error(f'整理关于{i}的记忆时出错:{res}') with open(memory_path, 'w', encoding='utf-8') as f: json.dump(memory_data, f, ensure_ascii=False, indent=4)

var memory

- + \ No newline at end of file diff --git a/dev/api/plugins_test/random_number_generator.html b/dev/api/plugins_test/random_number_generator.html index b0ff1db..5ca2698 100644 --- a/dev/api/plugins_test/random_number_generator.html +++ b/dev/api/plugins_test/random_number_generator.html @@ -25,7 +25,7 @@ return f"生成的随机数为: {', '.join(map(str, random_numbers))}"

@on_function_call(description='重载测试')

func test_reload()

源代码在GitHub上查看
python
@on_function_call(description='重载测试')
 def test_reload():
     return 1
- + \ No newline at end of file diff --git a/dev/api/plugins_test/snowykami_testplugin/index.html b/dev/api/plugins_test/snowykami_testplugin/index.html index d9b0ce9..5f8ccab 100644 --- a/dev/api/plugins_test/snowykami_testplugin/index.html +++ b/dev/api/plugins_test/snowykami_testplugin/index.html @@ -43,7 +43,7 @@ except Exception as e: return '运行出错: ' + str(e) return '运行成功: ' + str(r) - + \ No newline at end of file diff --git a/dev/api/plugins_test/weather_demo.html b/dev/api/plugins_test/weather_demo.html index 161faf6..e030939 100644 --- a/dev/api/plugins_test/weather_demo.html +++ b/dev/api/plugins_test/weather_demo.html @@ -22,7 +22,7 @@
Skip to content

模块 nonebot_plugin_marshoai.plugins_test.weather_demo


@on_function_call(description='可以用于查询天气').params(location=String(description='地点'))

async func weather(location: str) -> str

源代码在GitHub上查看
python
@on_function_call(description='可以用于查询天气').params(location=String(description='地点'))
 async def weather(location: str) -> str:
     return f'{location}的天气是晴天, 温度是25°C'

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/tools/marshoai_bangumi/index.html b/dev/api/tools/marshoai_bangumi/index.html index fbd01e4..c796987 100644 --- a/dev/api/tools/marshoai_bangumi/index.html +++ b/dev/api/tools/marshoai_bangumi/index.html @@ -40,7 +40,7 @@ except Exception as e: traceback.print_exc() return '' - + \ No newline at end of file diff --git a/dev/api/tools/marshoai_basic/index.html b/dev/api/tools/marshoai_basic/index.html index 3d2554d..6e6d3e6 100644 --- a/dev/api/tools/marshoai_basic/index.html +++ b/dev/api/tools/marshoai_basic/index.html @@ -25,7 +25,7 @@ return str(ver)

async func get_current_time()

源代码在GitHub上查看
python
async def get_current_time():
     current_time = DateTime.now()
     return time_prompt.format(date_time=current_time.strftime('%Y年%m月%d日 %H:%M:%S'), weekday_name=weekdays[current_time.weekday()], lunar_date=current_time.to_lunar().date_hanzify('{干支年}{生肖}{月份}{日期}日'))
- + \ No newline at end of file diff --git a/dev/api/tools/marshoai_megakits/index.html b/dev/api/tools/marshoai_megakits/index.html index c8c59e6..82d4121 100644 --- a/dev/api/tools/marshoai_megakits/index.html +++ b/dev/api/tools/marshoai_megakits/index.html @@ -28,7 +28,7 @@ return str(await mk_morse_code.morse_decrypt(msg))

async func nya_encode(msg: str)

源代码在GitHub上查看
python
async def nya_encode(msg: str):
     return str(await mk_nya_code.nya_encode(msg))

async func nya_decode(msg: str)

源代码在GitHub上查看
python
async def nya_decode(msg: str):
     return str(await mk_nya_code.nya_decode(msg))
- + \ No newline at end of file diff --git a/dev/api/tools/marshoai_megakits/mk_common.html b/dev/api/tools/marshoai_megakits/mk_common.html index f81b895..23e49f9 100644 --- a/dev/api/tools/marshoai_megakits/mk_common.html +++ b/dev/api/tools/marshoai_megakits/mk_common.html @@ -37,7 +37,7 @@ return str(a % b) case _: return '未知运算符' - + \ No newline at end of file diff --git a/dev/api/tools/marshoai_megakits/mk_info.html b/dev/api/tools/marshoai_megakits/mk_info.html index 7b25f2d..a6c305c 100644 --- a/dev/api/tools/marshoai_megakits/mk_info.html +++ b/dev/api/tools/marshoai_megakits/mk_info.html @@ -22,7 +22,7 @@
Skip to content

模块 nonebot_plugin_marshoai.tools.marshoai_megakits.mk_info


async func twisuki()

源代码在GitHub上查看
python
async def twisuki():
     return 'Twiuski(苏阳)是megakits插件作者, Github : "https://github.com/Twisuki"'

async func megakits()

源代码在GitHub上查看
python
async def megakits():
     return 'MegaKits插件是一个功能混杂的MarshoAI插件, 由Twisuki(Github : "https://github.com/Twisuki")开发, 插件仓库 : "https://github.com/LiteyukiStudio/marsho-toolsets/tree/main/Twisuki/marshoai-megakits"'

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/tools/marshoai_megakits/mk_morse_code.html b/dev/api/tools/marshoai_megakits/mk_morse_code.html index b8748ec..fc23c72 100644 --- a/dev/api/tools/marshoai_megakits/mk_morse_code.html +++ b/dev/api/tools/marshoai_megakits/mk_morse_code.html @@ -37,7 +37,7 @@ else: result += '?' return result - + \ No newline at end of file diff --git a/dev/api/tools/marshoai_megakits/mk_nya_code.html b/dev/api/tools/marshoai_megakits/mk_nya_code.html index c6ae98e..09a9504 100644 --- a/dev/api/tools/marshoai_megakits/mk_nya_code.html +++ b/dev/api/tools/marshoai_megakits/mk_nya_code.html @@ -51,7 +51,7 @@ except Exception: return '翻译失败' return result - + \ No newline at end of file diff --git a/dev/api/tools/marshoai_memory/index.html b/dev/api/tools/marshoai_memory/index.html index c31b3f5..856da08 100644 --- a/dev/api/tools/marshoai_memory/index.html +++ b/dev/api/tools/marshoai_memory/index.html @@ -38,7 +38,7 @@ memory_data = json.load(f) for i in memory_data: ... - + \ No newline at end of file diff --git a/dev/api/tools/marshoai_meogirl/index.html b/dev/api/tools/marshoai_meogirl/index.html index 22f9937..cd6de32 100644 --- a/dev/api/tools/marshoai_meogirl/index.html +++ b/dev/api/tools/marshoai_meogirl/index.html @@ -23,7 +23,7 @@ return mg_info.meogirl()

async func search(msg: str, num: int = 3)

源代码在GitHub上查看
python
async def search(msg: str, num: int=3):
     return str(await mg_search.search(msg, num))

async func introduce(msg: str)

源代码在GitHub上查看
python
async def introduce(msg: str):
     return str(await mg_introduce.introduce(msg))
- + \ No newline at end of file diff --git a/dev/api/tools/marshoai_meogirl/mg_info.html b/dev/api/tools/marshoai_meogirl/mg_info.html index 9d107a3..2bf5e50 100644 --- a/dev/api/tools/marshoai_meogirl/mg_info.html +++ b/dev/api/tools/marshoai_meogirl/mg_info.html @@ -21,7 +21,7 @@
Skip to content

模块 nonebot_plugin_marshoai.tools.marshoai_meogirl.mg_info


func meogirl()

源代码在GitHub上查看
python
def meogirl():
     return 'Meogirl指的是"萌娘百科"(https://zh.moegirl.org.cn/ , 简称"萌百"), 是一个"万物皆可萌的百科全书!"; 同时, MarshoTools也配有"Meogirl"插件, 可调用萌百的api'

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/tools/marshoai_meogirl/mg_introduce.html b/dev/api/tools/marshoai_meogirl/mg_introduce.html index 6294c7e..008bc94 100644 --- a/dev/api/tools/marshoai_meogirl/mg_introduce.html +++ b/dev/api/tools/marshoai_meogirl/mg_introduce.html @@ -61,7 +61,7 @@ else: logger.error(f'网络错误, 状态码 : {response.status_code}') return f'网络错误, 状态码 : {response.status_code}'

var keyword

- + \ No newline at end of file diff --git a/dev/api/tools/marshoai_meogirl/mg_search.html b/dev/api/tools/marshoai_meogirl/mg_search.html index 7fa77a4..bd64be1 100644 --- a/dev/api/tools/marshoai_meogirl/mg_search.html +++ b/dev/api/tools/marshoai_meogirl/mg_search.html @@ -58,7 +58,7 @@ else: logger.error(f'网络错误, 状态码 : {response.status_code}') return f'网络错误, 状态码 : {response.status_code}'

var soup

- + \ No newline at end of file diff --git a/dev/api/tools_wip/marshoai_memory/index.html b/dev/api/tools_wip/marshoai_memory/index.html index fffa12c..f34f79c 100644 --- a/dev/api/tools_wip/marshoai_memory/index.html +++ b/dev/api/tools_wip/marshoai_memory/index.html @@ -21,7 +21,7 @@
Skip to content

模块 nonebot_plugin_marshoai.tools_wip.marshoai_memory


async func write_memory(memory: str)

源代码在GitHub上查看
python
async def write_memory(memory: str):
     return ''

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/util.html b/dev/api/util.html index 7bc5f59..e755b99 100644 --- a/dev/api/util.html +++ b/dev/api/util.html @@ -13,13 +13,13 @@ - + -
Skip to content

模块 nonebot_plugin_marshoai.util

var nickname_json

  • 说明: 记录昵称

  • 默认值: None

var praises_json

  • 说明: 记录夸赞名单

  • 默认值: None

var loaded_target_list

  • 说明: 记录已恢复备份的上下文的列表

  • 默认值: []


async func get_image_raw_and_type(url: str, timeout: int = 10) -> Optional[tuple[bytes, str]]

说明: 获取图片的二进制数据

参数:

  • url: str 图片链接
  • timeout: int 超时时间 秒
源代码在GitHub上查看
python
async def get_image_raw_and_type(url: str, timeout: int=10) -> Optional[tuple[bytes, str]]:
+    
Skip to content

模块 nonebot_plugin_marshoai.util

var nickname_json

  • 说明: 记录昵称

  • 默认值: None

var praises_json

  • 说明: 记录夸赞名单

  • 默认值: None

var loaded_target_list

  • 说明: 记录已恢复备份的上下文的列表

  • 默认值: []


async func get_image_raw_and_type(url: str, timeout: int = 10) -> Optional[tuple[bytes, str]]

说明: 获取图片的二进制数据

参数:

  • url: str 图片链接
  • timeout: int 超时时间 秒
源代码在GitHub上查看
python
async def get_image_raw_and_type(url: str, timeout: int=10) -> Optional[tuple[bytes, str]]:
     async with httpx.AsyncClient() as client:
         response = await client.get(url, headers=_chromium_headers, timeout=timeout)
         if response.status_code == 200:
@@ -28,15 +28,15 @@
                 content_type = mimetypes.guess_type(url)[0]
             return (response.content, str(content_type))
         else:
-            return None

async func get_image_b64(url: str, timeout: int = 10) -> Optional[str]

说明: 获取图片的base64编码

参数:

  • url: 图片链接
  • timeout: 超时时间 秒
源代码在GitHub上查看
python
async def get_image_b64(url: str, timeout: int=10) -> Optional[str]:
+            return None

async func get_image_b64(url: str, timeout: int = 10) -> Optional[str]

说明: 获取图片的base64编码

参数:

  • url: 图片链接
  • timeout: 超时时间 秒
源代码在GitHub上查看
python
async def get_image_b64(url: str, timeout: int=10) -> Optional[str]:
     if (data_type := (await get_image_raw_and_type(url, timeout))):
         base64_image = base64.b64encode(data_type[0]).decode('utf-8')
         data_url = 'data:{};base64,{}'.format(data_type[1], base64_image)
         return data_url
     else:
-        return None

async func make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)

说明: 调用ai获取回复

参数:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
源代码在GitHub上查看
python
async def make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list]=None):
-    return await client.complete(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p)

async func make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)

说明: 使用 Openai SDK 调用ai获取回复

参数:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
源代码在GitHub上查看
python
async def make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list]=None):
-    return await client.chat.completions.create(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p, timeout=config.marshoai_timeout)

func get_praises()

源代码在GitHub上查看
python
def get_praises():
+        return None

async func make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)

说明: 调用ai获取回复

参数:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
源代码在GitHub上查看
python
async def make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list]=None):
+    return await client.complete(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p)

async func make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)

说明: 使用 Openai SDK 调用ai获取回复

参数:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
源代码在GitHub上查看
python
async def make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list]=None):
+    return await client.chat.completions.create(messages=msg, model=model_name, tools=tools or NOT_GIVEN, temperature=config.marshoai_temperature or NOT_GIVEN, max_tokens=config.marshoai_max_tokens or NOT_GIVEN, top_p=config.marshoai_top_p or NOT_GIVEN, timeout=config.marshoai_timeout)

func get_praises()

源代码在GitHub上查看
python
def get_praises():
     global praises_json
     if praises_json is None:
         praises_file = store.get_plugin_data_file('praises.json')
@@ -46,7 +46,7 @@
         with open(praises_file, 'r', encoding='utf-8') as f:
             data = json.load(f)
         praises_json = data
-    return praises_json

async func refresh_praises_json()

源代码在GitHub上查看
python
async def refresh_praises_json():
+    return praises_json

async func refresh_praises_json()

源代码在GitHub上查看
python
async def refresh_praises_json():
     global praises_json
     praises_file = store.get_plugin_data_file('praises.json')
     if not praises_file.exists():
@@ -54,21 +54,21 @@
             json.dump(_praises_init_data, f, ensure_ascii=False, indent=4)
     async with aiofiles.open(praises_file, 'r', encoding='utf-8') as f:
         data = json.loads(await f.read())
-    praises_json = data

func build_praises()

源代码在GitHub上查看
python
def build_praises():
+    praises_json = data

func build_praises()

源代码在GitHub上查看
python
def build_praises():
     praises = get_praises()
     result = ['你喜欢以下几个人物,他们有各自的优点:']
     for item in praises['like']:
         result.append(f"名字:{item['name']},优点:{item['advantages']}")
-    return '\n'.join(result)

async func save_context_to_json(name: str, context: Any, path: str)

源代码在GitHub上查看
python
async def save_context_to_json(name: str, context: Any, path: str):
+    return '\n'.join(result)

async func save_context_to_json(name: str, context: Any, path: str)

源代码在GitHub上查看
python
async def save_context_to_json(name: str, context: Any, path: str):
     (context_dir := (store.get_plugin_data_dir() / path)).mkdir(parents=True, exist_ok=True)
     with open(context_dir / f'{name}.json', 'w', encoding='utf-8') as json_file:
-        json.dump(context, json_file, ensure_ascii=False, indent=4)

async func load_context_from_json(name: str, path: str) -> list

说明: 从指定路径加载历史记录

源代码在GitHub上查看
python
async def load_context_from_json(name: str, path: str) -> list:
+        json.dump(context, json_file, ensure_ascii=False, indent=4)

async func load_context_from_json(name: str, path: str) -> list

说明: 从指定路径加载历史记录

源代码在GitHub上查看
python
async def load_context_from_json(name: str, path: str) -> list:
     (context_dir := (store.get_plugin_data_dir() / path)).mkdir(parents=True, exist_ok=True)
     if (file_path := (context_dir / f'{name}.json')).exists():
         async with aiofiles.open(file_path, 'r', encoding='utf-8') as json_file:
             return json.loads(await json_file.read())
     else:
-        return []

async func get_nicknames()

说明: 获取nickname_json, 优先来源于全局变量

源代码在GitHub上查看
python
async def get_nicknames():
+        return []

async func get_nicknames()

说明: 获取nickname_json, 优先来源于全局变量

源代码在GitHub上查看
python
async def get_nicknames():
     global nickname_json
     if nickname_json is None:
         filename = store.get_plugin_data_file('nickname.json')
@@ -77,7 +77,7 @@
                 nickname_json = json.loads(await f.read())
         except Exception:
             nickname_json = {}
-    return nickname_json

async func set_nickname(user_id: str, name: str)

源代码在GitHub上查看
python
async def set_nickname(user_id: str, name: str):
+    return nickname_json

async func set_nickname(user_id: str, name: str)

源代码在GitHub上查看
python
async def set_nickname(user_id: str, name: str):
     global nickname_json
     filename = store.get_plugin_data_file('nickname.json')
     if not filename.exists():
@@ -90,13 +90,13 @@
         del data[user_id]
     with open(filename, 'w', encoding='utf-8') as f:
         json.dump(data, f, ensure_ascii=False, indent=4)
-    nickname_json = data

async func refresh_nickname_json()

说明: 强制刷新nickname_json, 刷新全局变量

源代码在GitHub上查看
python
async def refresh_nickname_json():
+    nickname_json = data

async func refresh_nickname_json()

说明: 强制刷新nickname_json, 刷新全局变量

源代码在GitHub上查看
python
async def refresh_nickname_json():
     global nickname_json
     try:
         async with aiofiles.open(store.get_plugin_data_file('nickname.json'), 'r', encoding='utf-8') as f:
             nickname_json = json.loads(await f.read())
     except Exception:
-        logger.error('刷新 nickname_json 表错误:无法载入 nickname.json 文件')

func get_prompt()

说明: 获取系统提示词

源代码在GitHub上查看
python
def get_prompt():
+        logger.error('刷新 nickname_json 表错误:无法载入 nickname.json 文件')

func get_prompt()

说明: 获取系统提示词

源代码在GitHub上查看
python
def get_prompt():
     prompts = ''
     prompts += config.marshoai_additional_prompt
     if config.marshoai_enable_praises:
@@ -106,12 +106,12 @@
         prompts += _time_prompt.format(date_time=(current_time := DateTime.now()).strftime('%Y年%m月%d日 %H:%M:%S'), weekday_name=_weekdays[current_time.weekday()], lunar_date=current_time.to_lunar().date_hanzify('{干支年}{生肖}{月份}{日期}日'))
     marsho_prompt = config.marshoai_prompt
     spell = SystemMessage(content=marsho_prompt + prompts).as_dict()
-    return spell

func suggest_solution(errinfo: str) -> str

源代码在GitHub上查看
python
def suggest_solution(errinfo: str) -> str:
+    return spell

func suggest_solution(errinfo: str) -> str

源代码在GitHub上查看
python
def suggest_solution(errinfo: str) -> str:
     suggestions = {'content_filter': '消息已被内容过滤器过滤。请调整聊天内容后重试。', 'RateLimitReached': '模型达到调用速率限制。请稍等一段时间或联系Bot管理员。', 'tokens_limit_reached': '请求token达到上限。请重置上下文。', 'content_length_limit': '请求体过大。请重置上下文。', 'unauthorized': '访问token无效。请联系Bot管理员。', 'invalid type: parameter messages.content is of type array but should be of type string.': '聊天请求体包含此模型不支持的数据类型。请重置上下文。', 'At most 1 image(s) may be provided in one request.': '此模型只能在上下文中包含1张图片。如果此前的聊天已经发送过图片,请重置上下文。'}
     for key, suggestion in suggestions.items():
         if key in errinfo:
             return f'\n{suggestion}'
-    return ''

async func get_backup_context(target_id: str, target_private: bool) -> list

说明: 获取历史上下文

源代码在GitHub上查看
python
async def get_backup_context(target_id: str, target_private: bool) -> list:
+    return ''

async func get_backup_context(target_id: str, target_private: bool) -> list

说明: 获取历史上下文

源代码在GitHub上查看
python
async def get_backup_context(target_id: str, target_private: bool) -> list:
     global loaded_target_list
     if target_private:
         target_uid = f'private_{target_id}'
@@ -120,12 +120,12 @@
     if target_uid not in loaded_target_list:
         loaded_target_list.append(target_uid)
         return await load_context_from_json(f'back_up_context_{target_uid}', 'contexts/backup')
-    return []

var latex_convert

  • 说明: 开启一个转换实例

  • 默认值: ConvertLatex()


@get_driver().on_bot_connect

async func load_latex_convert()

源代码在GitHub上查看
python
@get_driver().on_bot_connect
+    return []

var latex_convert

  • 说明: 开启一个转换实例

  • 默认值: ConvertLatex()


@get_driver().on_bot_connect

async func load_latex_convert()

源代码在GitHub上查看
python
@get_driver().on_bot_connect
 async def load_latex_convert():
-    await latex_convert.load_channel(None)

async func get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])

源代码在GitHub上查看
python
async def get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]]):
+    await latex_convert.load_channel(None)

async func get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])

源代码在GitHub上查看
python
async def get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]]):
     for torep, rep in code_blank_uuid_map:
         msg = msg.replace(torep, rep)
-    return msg

async func parse_richtext(msg: str) -> UniMessage

说明: 人工智能给出的回答一般不会包含 HTML 嵌入其中,但是包含图片或者 LaTeX 公式、代码块,都很正常。 这个函数会把这些都以图片形式嵌入消息体。

源代码在GitHub上查看
python
async def parse_richtext(msg: str) -> UniMessage:
+    return msg

async func parse_richtext(msg: str) -> UniMessage

说明: 人工智能给出的回答一般不会包含 HTML 嵌入其中,但是包含图片或者 LaTeX 公式、代码块,都很正常。 这个函数会把这些都以图片形式嵌入消息体。

源代码在GitHub上查看
python
async def parse_richtext(msg: str) -> UniMessage:
     if not IMG_LATEX_PATTERN.search(msg):
         return UniMessage(msg)
     result_msg = UniMessage()
@@ -160,7 +160,7 @@
             result_msg.append(TextMsg(tag_found + '(未知内容解析失败)'))
     result_msg.append(TextMsg(await get_uuid_back2codeblock(msg[last_tag_index:], code_blank_uuid_map)))
     return result_msg

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/api/util_hunyuan.html b/dev/api/util_hunyuan.html index 4780c83..bc78730 100644 --- a/dev/api/util_hunyuan.html +++ b/dev/api/util_hunyuan.html @@ -31,7 +31,7 @@ req.from_json_string(json.dumps(params)) resp = client.TextToImageLite(req) return resp.to_json_string()

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/extension.html b/dev/extension.html index 3e6d768..c2b3efc 100644 --- a/dev/extension.html +++ b/dev/extension.html @@ -48,7 +48,7 @@ @on_function_call(description="获取机器人信息") async def get_bot_info(b: Bot) -> str: return f"机器人ID: {b.self_id}"

兼容性

插件可以编写NoneBot或者轻雪插件的内容,可作为NoneBot插件或者轻雪插件单独发布

不过,所编写功能仅会在对应的实例上加载对应的功能,如果通过marshoai加载混合插件,那么插件中NoneBot的功能将会依附于marshoai插件, 若通过NoneBot加载包含marshoai功能的NoneBot插件,那么marshoai功能将会依附于NoneBot插件。

我们建议:若插件中包含了NoneBot功能,仍然使用marshoai进行加载,这样更符合逻辑。若你想发布为NoneBot插件,请注意require("nonebot_plugin_marshoai"),这是老生常谈了。

TIP

本质上都是动态导入和注册声明加载,运行时把这些东西塞到一起

插件热重载

插件热重载是一个实验性功能,可以在不重启机器人的情况下更新插件

WARNING

框架无法完全消除之前插件带来的副作用,当开发测试中效果不符合预期时请重启机器人实例

为了更好地让热重载功能正常工作,尽可能使用函数式的编程风格,以减少副作用的影响

MARSHOAI_DEVMODE环境变量设置为true,然后在配置的插件目录MARSHOAI_PLUGIN_DIRS下开发插件,当插件发生变化时,机器人会自动变动的插件。

AIGC 自举

WARNING

该功能为实验性功能,请注意甄别AI的行为,不要让AI执行危险的操作。

function call为AI赋能,实现了文件io操作,AI可以调用function call来读取文档然后给自己编写代码,实现自举。

其他

- + \ No newline at end of file diff --git a/dev/index.html b/dev/index.html index 21d0ae2..bbffebe 100644 --- a/dev/index.html +++ b/dev/index.html @@ -20,7 +20,7 @@
Skip to content

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/dev/project.html b/dev/project.html index d94904c..183e8be 100644 --- a/dev/project.html +++ b/dev/project.html @@ -25,7 +25,7 @@ pip install pdm # 安装依赖管理 pdm install # 安装依赖 pre-commit install # 安装 pre-commit 钩子

代码规范

主仓库需要遵循以下代码规范

可以在编辑器中安装相应的插件进行辅助

其他

感谢以下的贡献者们:

Contributors
- + \ No newline at end of file diff --git a/en/dev/api/azure.html b/en/dev/api/azure.html index 348e6f4..f390662 100644 --- a/en/dev/api/azure.html +++ b/en/dev/api/azure.html @@ -180,7 +180,7 @@ await UniMessage(str(e) + suggest_solution(str(e))).send() traceback.print_exc() return

var text

- + \ No newline at end of file diff --git a/en/dev/api/azure_onebot.html b/en/dev/api/azure_onebot.html index de1e886..7f17ddc 100644 --- a/en/dev/api/azure_onebot.html +++ b/en/dev/api/azure_onebot.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.azure_onebot

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/config.html b/en/dev/api/config.html index 91c0d35..bf8cd5f 100644 --- a/en/dev/api/config.html +++ b/en/dev/api/config.html @@ -38,7 +38,7 @@ logger.info(f'新增配置项: {key} = {value}') old_config[key] = value return old_config - + \ No newline at end of file diff --git a/en/dev/api/constants.html b/en/dev/api/constants.html index 68c4665..5cb0225 100644 --- a/en/dev/api/constants.html +++ b/en/dev/api/constants.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.constants

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/deal_latex.html b/en/dev/api/deal_latex.html index 9c8ef75..cbe1df4 100644 --- a/en/dev/api/deal_latex.html +++ b/en/dev/api/deal_latex.html @@ -114,7 +114,7 @@ results = await asyncio.gather(*(channel_test_wrapper(channel) for channel in channel_list)) best_channel = min(results, key=lambda x: x[0])[1] return best_channel()

attr channel: ConvertChannel = NO_DEFAULT

- + \ No newline at end of file diff --git a/en/dev/api/dev.html b/en/dev/api/dev.html index e0eae0e..6929ab4 100644 --- a/en/dev/api/dev.html +++ b/en/dev/api/dev.html @@ -64,7 +64,7 @@ else: logger.debug('未找到变动插件') return

var dir_list

- + \ No newline at end of file diff --git a/en/dev/api/hooks.html b/en/dev/api/hooks.html index b392615..87dba4d 100644 --- a/en/dev/api/hooks.html +++ b/en/dev/api/hooks.html @@ -30,7 +30,7 @@ target_uid = 'group_' + target_id await save_context_to_json(f'back_up_context_{target_uid}', contexts_data, 'contexts/backup') logger.info(f'已保存会话 {target_id} 的上下文备份,将在下次对话时恢复~')

var marshoai_plugin_dirs

- + \ No newline at end of file diff --git a/en/dev/api/hunyuan.html b/en/dev/api/hunyuan.html index 8932a00..c077126 100644 --- a/en/dev/api/hunyuan.html +++ b/en/dev/api/hunyuan.html @@ -29,7 +29,7 @@ await UniMessage.image(url=url).send() except Exception as e: traceback.print_exc() - + \ No newline at end of file diff --git a/en/dev/api/index.html b/en/dev/api/index.html index c774804..9f8583d 100644 --- a/en/dev/api/index.html +++ b/en/dev/api/index.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/instances.html b/en/dev/api/instances.html index a5e6ecf..259955c 100644 --- a/en/dev/api/instances.html +++ b/en/dev/api/instances.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.instances

var target_list

  • Description: 记录需保存历史上下文的列表

  • Type: list[list]

  • Default: []

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/marsho.html b/en/dev/api/marsho.html index 73fc286..5993667 100644 --- a/en/dev/api/marsho.html +++ b/en/dev/api/marsho.html @@ -13,7 +13,7 @@ - + @@ -202,7 +202,7 @@ user_nickname = nicknames.get(user_id, '') try: if config.marshoai_poke_suffix != '': - response = await make_chat_openai(client=client, model_name=model_name, msg=[get_prompt(), UserMessage(content=f'*{user_nickname}{config.marshoai_poke_suffix}')]) + response = await make_chat_openai(client=client, model_name=model_name, msg=[get_prompt() if model_name.lower() not in NO_SYSPROMPT_MODELS else None, UserMessage(content=f'*{user_nickname}{config.marshoai_poke_suffix}')]) choice = response.choices[0] if choice.finish_reason == CompletionsFinishReason.STOPPED: await UniMessage(' ' + str(choice.message.content)).send(at_sender=True) @@ -210,7 +210,7 @@ await UniMessage(str(e) + suggest_solution(str(e))).send() traceback.print_exc() return

var text

var request_msg

- + \ No newline at end of file diff --git a/en/dev/api/marsho_onebot.html b/en/dev/api/marsho_onebot.html index f94ff63..49d3f70 100644 --- a/en/dev/api/marsho_onebot.html +++ b/en/dev/api/marsho_onebot.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.marsho_onebot

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/metadata.html b/en/dev/api/metadata.html index 6c18bb5..27a287e 100644 --- a/en/dev/api/metadata.html +++ b/en/dev/api/metadata.html @@ -20,7 +20,7 @@
Skip to content

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/models.html b/en/dev/api/models.html index e3ba149..14a8bfd 100644 --- a/en/dev/api/models.html +++ b/en/dev/api/models.html @@ -65,7 +65,7 @@ if not self.tools_list or not config.marshoai_enable_tools: return None return self.tools_list - + \ No newline at end of file diff --git a/en/dev/api/observer.html b/en/dev/api/observer.html index 021184c..6a524b8 100644 --- a/en/dev/api/observer.html +++ b/en/dev/api/observer.html @@ -55,7 +55,7 @@ observer.schedule(code_modified_handler, directory, recursive=recursive) return func return decorator - + \ No newline at end of file diff --git a/en/dev/api/plugin/func_call/caller.html b/en/dev/api/plugin/func_call/caller.html index 6c5361c..efac750 100644 --- a/en/dev/api/plugin/func_call/caller.html +++ b/en/dev/api/plugin/func_call/caller.html @@ -128,7 +128,7 @@ caller = Caller(name=name, description=description, func_type=func_type, no_module_name=no_module_name) return caller

func get_function_calls() -> dict[str, Caller]

Description: 获取所有已注册的function call函数

Return: dict[str, Caller]: 所有已注册的function call函数

Source code or View on GitHub
python
def get_function_calls() -> dict[str, Caller]:
     return _caller_data
- + \ No newline at end of file diff --git a/en/dev/api/plugin/func_call/index.html b/en/dev/api/plugin/func_call/index.html index 17aad80..32fbaec 100644 --- a/en/dev/api/plugin/func_call/index.html +++ b/en/dev/api/plugin/func_call/index.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugin.func_call

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/plugin/func_call/models.html b/en/dev/api/plugin/func_call/models.html index 4f4f336..e9b613f 100644 --- a/en/dev/api/plugin/func_call/models.html +++ b/en/dev/api/plugin/func_call/models.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugin.func_call.models

class SessionContext(BaseModel)

attr bot: Bot = NO_DEFAULT

attr event: Event = NO_DEFAULT

attr matcher: Matcher = NO_DEFAULT

attr state: T_State = NO_DEFAULT

attr caller: Any = None

class SessionContextDepends(BaseModel)

attr bot: str | None = None

attr event: str | None = None

attr matcher: str | None = None

attr state: str | None = None

attr caller: str | None = None

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/plugin/func_call/params.html b/en/dev/api/plugin/func_call/params.html index d406fdf..2a9f983 100644 --- a/en/dev/api/plugin/func_call/params.html +++ b/en/dev/api/plugin/func_call/params.html @@ -23,7 +23,7 @@ return {'type': self.type_, 'description': self.description, **{k: v for k, v in self.properties.items() if v is not None}}

attr type_: str = NO_DEFAULT

attr description: str = NO_DEFAULT

attr default: Any = None

attr properties: dict[str, Any] = {}

attr required: bool = False

class String(Parameter)

attr type_: str = ParamTypes.STRING

attr properties: dict[str, Any] = Field(default_factory=dict)

attr enum: list[str] | None = None

class Integer(Parameter)

attr type_: str = ParamTypes.INTEGER

attr properties: dict[str, Any] = Field(default_factory=lambda: {'minimum': 0, 'maximum': 100})

attr minimum: int | None = None

attr maximum: int | None = None

class Array(Parameter)

attr type_: str = ParamTypes.ARRAY

attr properties: dict[str, Any] = Field(default_factory=lambda: {'items': {'type': 'string'}})

attr items: str = Field('string', description='数组元素类型')

class FunctionCall(BaseModel)


func hash self => int

Source code or View on GitHub
python
def __hash__(self) -> int:
     return hash(self.name)

func data(self) -> dict[str, Any]

Description: 生成函数描述信息

Return: dict[str, Any]: 函数描述信息 字典

Source code or View on GitHub
python
def data(self) -> dict[str, Any]:
     return {'type': 'function', 'function': {'name': self.name, 'description': self.description, 'parameters': {'type': 'object', 'properties': {k: v.data() for k, v in self.arguments.items()}}, 'required': [k for k, v in self.arguments.items() if v.default is None], **self.kwargs}}

attr name: str = NO_DEFAULT

attr description: str = NO_DEFAULT

attr arguments: dict[str, Parameter] = NO_DEFAULT

attr function: FUNCTION_CALL_FUNC = NO_DEFAULT

attr kwargs: dict[str, Any] = {}

- + \ No newline at end of file diff --git a/en/dev/api/plugin/func_call/utils.html b/en/dev/api/plugin/func_call/utils.html index ff0b812..219d4ba 100644 --- a/en/dev/api/plugin/func_call/utils.html +++ b/en/dev/api/plugin/func_call/utils.html @@ -39,7 +39,7 @@ return False func_ = getattr(call, '__call__', None) return inspect.iscoroutinefunction(func_) - + \ No newline at end of file diff --git a/en/dev/api/plugin/index.html b/en/dev/api/plugin/index.html index eadab44..0226b8e 100644 --- a/en/dev/api/plugin/index.html +++ b/en/dev/api/plugin/index.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugin

该功能目前正在开发中开发基本完成,暂时可用,受影响的文件夹 plugin, plugins

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/plugin/load.html b/en/dev/api/plugin/load.html index f64c67c..a33b786 100644 --- a/en/dev/api/plugin/load.html +++ b/en/dev/api/plugin/load.html @@ -69,7 +69,7 @@ logger.opt(colors=True).error(f'重新加载插件失败 "<r>{plugin.name}</r>"') traceback.print_exc() return None

var module

var module_name

var module_name

- + \ No newline at end of file diff --git a/en/dev/api/plugin/models.html b/en/dev/api/plugin/models.html index 6ff983e..7c2c429 100644 --- a/en/dev/api/plugin/models.html +++ b/en/dev/api/plugin/models.html @@ -22,7 +22,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugin.models

class PluginMetadata(BaseModel)

attr name: str = NO_DEFAULT

attr description: str = ''

attr usage: str = ''

attr author: str = ''

attr homepage: str = ''

attr extra: dict[str, Any] = {}

class Plugin(BaseModel)


func hash self => int

Source code or View on GitHub
python
def __hash__(self) -> int:
     return hash(self.name)

func self == other: Any => bool

Source code or View on GitHub
python
def __eq__(self, other: Any) -> bool:
     return self.name == other.name

attr name: str = NO_DEFAULT

attr module: ModuleType = NO_DEFAULT

attr module_name: str = NO_DEFAULT

attr module_path: str | None = NO_DEFAULT

attr metadata: PluginMetadata | None = None

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/plugin/register.html b/en/dev/api/plugin/register.html index cc37385..c470f3b 100644 --- a/en/dev/api/plugin/register.html +++ b/en/dev/api/plugin/register.html @@ -29,7 +29,7 @@ name = func.__name__ description = func.__doc__ logger.info(f'注册函数: {name} {description}') - + \ No newline at end of file diff --git a/en/dev/api/plugin/typing.html b/en/dev/api/plugin/typing.html index 7cc26ca..5db896d 100644 --- a/en/dev/api/plugin/typing.html +++ b/en/dev/api/plugin/typing.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugin.typing

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/plugin/utils.html b/en/dev/api/plugin/utils.html index 36a9c9f..6baec0b 100644 --- a/en/dev/api/plugin/utils.html +++ b/en/dev/api/plugin/utils.html @@ -26,7 +26,7 @@ else: return '.'.join(rel_path.parts[:-1] + (rel_path.stem,))

func parse_function_docsring()

Source code or View on GitHub
python
def parse_function_docsring():
     pass
- + \ No newline at end of file diff --git a/en/dev/api/plugins/builtin_tools/chat.html b/en/dev/api/plugins/builtin_tools/chat.html index 6648fc2..c885228 100644 --- a/en/dev/api/plugins/builtin_tools/chat.html +++ b/en/dev/api/plugins/builtin_tools/chat.html @@ -43,7 +43,7 @@ return '发送完成' except Exception as e: return '发送失败: ' + str(e) - + \ No newline at end of file diff --git a/en/dev/api/plugins/builtin_tools/file_io.html b/en/dev/api/plugins/builtin_tools/file_io.html index e3f5d99..74c2473 100644 --- a/en/dev/api/plugins/builtin_tools/file_io.html +++ b/en/dev/api/plugins/builtin_tools/file_io.html @@ -33,7 +33,7 @@ return '写入成功' except Exception as e: return '写入出错: ' + str(e) - + \ No newline at end of file diff --git a/en/dev/api/plugins/builtin_tools/index.html b/en/dev/api/plugins/builtin_tools/index.html index 4e851db..0cbc7c6 100644 --- a/en/dev/api/plugins/builtin_tools/index.html +++ b/en/dev/api/plugins/builtin_tools/index.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugins.builtin_tools

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/plugins/builtin_tools/liteyuki.html b/en/dev/api/plugins/builtin_tools/liteyuki.html index 517accf..f5cb785 100644 --- a/en/dev/api/plugins/builtin_tools/liteyuki.html +++ b/en/dev/api/plugins/builtin_tools/liteyuki.html @@ -29,7 +29,7 @@ response = await client.get('https://api.liteyuki.icu/online') online = response.json().get('online') return f'注册节点数: {register}\n在线节点数: {online}' - + \ No newline at end of file diff --git a/en/dev/api/plugins/builtin_tools/manager.html b/en/dev/api/plugins/builtin_tools/manager.html index 31b81ae..e76e383 100644 --- a/en/dev/api/plugins/builtin_tools/manager.html +++ b/en/dev/api/plugins/builtin_tools/manager.html @@ -28,7 +28,7 @@ else: reply += f'名称: {p.name},描述: 暂无\n' return reply - + \ No newline at end of file diff --git a/en/dev/api/plugins/builtin_tools/network.html b/en/dev/api/plugins/builtin_tools/network.html index 8b51e7b..af7b7f7 100644 --- a/en/dev/api/plugins/builtin_tools/network.html +++ b/en/dev/api/plugins/builtin_tools/network.html @@ -40,7 +40,7 @@ logger.error(f'marsho builtin: 获取网页内容失败: {e}') return '获取网页内容失败:' + str(e) return '未能获取到有效的网页内容' - + \ No newline at end of file diff --git a/en/dev/api/plugins/builtin_tools/utils.html b/en/dev/api/plugins/builtin_tools/utils.html index 880eb15..29b95e8 100644 --- a/en/dev/api/plugins/builtin_tools/utils.html +++ b/en/dev/api/plugins/builtin_tools/utils.html @@ -22,7 +22,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugins.builtin_tools.utils


async func make_html_summary(html_content: str, language: str = 'english', length: int = 3) -> str

Description: 使用html内容生成摘要

Arguments:

  • html_content (str): html内容
  • language (str, optional): 语言. Defaults to "english".
  • length (int, optional): 摘要长度. Defaults to 3.

Return: str: 摘要

Source code or View on GitHub
python
async def make_html_summary(html_content: str, language: str='english', length: int=3) -> str:
     loop = asyncio.get_event_loop()
     return await loop.run_in_executor(executor, _make_summary, html_content, language, length)

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/plugins/marshoai_bangumi/index.html b/en/dev/api/plugins/marshoai_bangumi/index.html index 09bbfab..df72fb9 100644 --- a/en/dev/api/plugins/marshoai_bangumi/index.html +++ b/en/dev/api/plugins/marshoai_bangumi/index.html @@ -47,7 +47,7 @@ except Exception as e: traceback.print_exc() return '' - + \ No newline at end of file diff --git a/en/dev/api/plugins/marshoai_basic/index.html b/en/dev/api/plugins/marshoai_basic/index.html index f2c945c..ce55701 100644 --- a/en/dev/api/plugins/marshoai_basic/index.html +++ b/en/dev/api/plugins/marshoai_basic/index.html @@ -30,7 +30,7 @@ current_lunar_date = DateTime.now().to_lunar().date_hanzify()[5:] time_prompt = f'现在的时间是{current_time}{current_weekday_name},农历{current_lunar_date}。' return time_prompt - + \ No newline at end of file diff --git a/en/dev/api/plugins/twisuki_megakits/index.html b/en/dev/api/plugins/twisuki_megakits/index.html index c2edb8e..33c626f 100644 --- a/en/dev/api/plugins/twisuki_megakits/index.html +++ b/en/dev/api/plugins/twisuki_megakits/index.html @@ -28,7 +28,7 @@ return str(await mk_nya_code.nya_encrypt(msg))

@on_function_call(description='将猫语翻译回人类语言').params(msg=String(description='被翻译语句'))

async func nya_decrypt(msg: str) -> str

Description: 将猫语翻译回人类语言

Source code or View on GitHub
python
@on_function_call(description='将猫语翻译回人类语言').params(msg=String(description='被翻译语句'))
 async def nya_decrypt(msg: str) -> str:
     return str(await mk_nya_code.nya_decrypt(msg))
- + \ No newline at end of file diff --git a/en/dev/api/plugins/twisuki_megakits/mk_morse_code.html b/en/dev/api/plugins/twisuki_megakits/mk_morse_code.html index 13f3e0b..c935115 100644 --- a/en/dev/api/plugins/twisuki_megakits/mk_morse_code.html +++ b/en/dev/api/plugins/twisuki_megakits/mk_morse_code.html @@ -38,7 +38,7 @@ else: result += '?' return result - + \ No newline at end of file diff --git a/en/dev/api/plugins/twisuki_megakits/mk_nya_code.html b/en/dev/api/plugins/twisuki_megakits/mk_nya_code.html index 619c441..574cf9d 100644 --- a/en/dev/api/plugins/twisuki_megakits/mk_nya_code.html +++ b/en/dev/api/plugins/twisuki_megakits/mk_nya_code.html @@ -55,7 +55,7 @@ except Exception: return '翻译失败' return result

var char

var char

var char

var char

var char

- + \ No newline at end of file diff --git a/en/dev/api/plugins/twisuki_petcat/index.html b/en/dev/api/plugins/twisuki_petcat/index.html index 0ff7747..40c9bf7 100644 --- a/en/dev/api/plugins/twisuki_petcat/index.html +++ b/en/dev/api/plugins/twisuki_petcat/index.html @@ -36,7 +36,7 @@ return pc_info.print_type_list()

@on_function_call(description='可选技能').params()

async func help_cat_skill() -> str

Source code or View on GitHub
python
@on_function_call(description='可选技能').params()
 async def help_cat_skill() -> str:
     return pc_info.print_skill_list()
- + \ No newline at end of file diff --git a/en/dev/api/plugins/twisuki_petcat/pc_cat.html b/en/dev/api/plugins/twisuki_petcat/pc_cat.html index 52684fd..c74afa5 100644 --- a/en/dev/api/plugins/twisuki_petcat/pc_cat.html +++ b/en/dev/api/plugins/twisuki_petcat/pc_cat.html @@ -126,7 +126,7 @@ data['energy'] = min(data['energy'] + 16, 0) token = dict_to_token(data) return f'''你抱猫休息了一阵子, 猫猫的活力值提升到了{value_output(data['energy'])}\n新token : "{token}"\n请妥善保存token, 这是猫猫的唯一标识符!''' - + \ No newline at end of file diff --git a/en/dev/api/plugins/twisuki_petcat/pc_info.html b/en/dev/api/plugins/twisuki_petcat/pc_info.html index 7bf43d6..e0cfee9 100644 --- a/en/dev/api/plugins/twisuki_petcat/pc_info.html +++ b/en/dev/api/plugins/twisuki_petcat/pc_info.html @@ -42,7 +42,7 @@ logger.info(data['skill']) return result[:-2]

func help_cat_new() -> str

Source code or View on GitHub
python
def help_cat_new() -> str:
     return f'新建一只猫猫, 首先选择猫猫的种类, 获取初始化token;然后用这个token, 选择名字和一个技能进行初始化;初始化结束才表示猫猫正式创建成功.\ntoken为猫的唯一标识符, 每次交互都需要传入token\n种类可选 : {print_type_list()}\n技能可选 : {print_skill_list()}'
- + \ No newline at end of file diff --git a/en/dev/api/plugins/twisuki_petcat/pc_shop.html b/en/dev/api/plugins/twisuki_petcat/pc_shop.html index a9093e3..7066c04 100644 --- a/en/dev/api/plugins/twisuki_petcat/pc_shop.html +++ b/en/dev/api/plugins/twisuki_petcat/pc_shop.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugins.twisuki_petcat.pc_shop

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/plugins/twisuki_petcat/pc_token.html b/en/dev/api/plugins/twisuki_petcat/pc_token.html index 27675f6..f3711ad 100644 --- a/en/dev/api/plugins/twisuki_petcat/pc_token.html +++ b/en/dev/api/plugins/twisuki_petcat/pc_token.html @@ -120,7 +120,7 @@ token = base64.b64encode(token_byte).decode() logger.success(f'编码完成, token为\n{token}') return token - + \ No newline at end of file diff --git a/en/dev/api/plugins_test/marshoai_basic/index.html b/en/dev/api/plugins_test/marshoai_basic/index.html index 9b98028..57882cf 100644 --- a/en/dev/api/plugins_test/marshoai_basic/index.html +++ b/en/dev/api/plugins_test/marshoai_basic/index.html @@ -28,7 +28,7 @@ current_lunar_date = DateTime.now().to_lunar().date_hanzify()[5:] time_prompt = f'现在的时间是 {current_time}{current_weekday_name},农历 {current_lunar_date}。' return time_prompt - + \ No newline at end of file diff --git a/en/dev/api/plugins_test/marshoai_memory/command.html b/en/dev/api/plugins_test/marshoai_memory/command.html index bbe15ed..45ab354 100644 --- a/en/dev/api/plugins_test/marshoai_memory/command.html +++ b/en/dev/api/plugins_test/marshoai_memory/command.html @@ -38,7 +38,7 @@ json.dump(memory_data, f, ensure_ascii=False, indent=4) await matcher.finish('记忆已重置~') await matcher.finish('没有找到该用户的记忆~') - + \ No newline at end of file diff --git a/en/dev/api/plugins_test/marshoai_memory/config.html b/en/dev/api/plugins_test/marshoai_memory/config.html index 1306dee..536b41f 100644 --- a/en/dev/api/plugins_test/marshoai_memory/config.html +++ b/en/dev/api/plugins_test/marshoai_memory/config.html @@ -20,7 +20,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugins_test.marshoai_memory.config

class ConfigModel(BaseModel)

attr marshoai_plugin_memory_scheduler: bool = True

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/plugins_test/marshoai_memory/index.html b/en/dev/api/plugins_test/marshoai_memory/index.html index 36d4936..f50f658 100644 --- a/en/dev/api/plugins_test/marshoai_memory/index.html +++ b/en/dev/api/plugins_test/marshoai_memory/index.html @@ -49,7 +49,7 @@ logger.error(f'整理关于{i}的记忆时出错:{res}') with open(memory_path, 'w', encoding='utf-8') as f: json.dump(memory_data, f, ensure_ascii=False, indent=4)

var memory

- + \ No newline at end of file diff --git a/en/dev/api/plugins_test/random_number_generator.html b/en/dev/api/plugins_test/random_number_generator.html index 169534c..3a0e6d8 100644 --- a/en/dev/api/plugins_test/random_number_generator.html +++ b/en/dev/api/plugins_test/random_number_generator.html @@ -25,7 +25,7 @@ return f"生成的随机数为: {', '.join(map(str, random_numbers))}"

@on_function_call(description='重载测试')

func test_reload()

Source code or View on GitHub
python
@on_function_call(description='重载测试')
 def test_reload():
     return 1
- + \ No newline at end of file diff --git a/en/dev/api/plugins_test/snowykami_testplugin/index.html b/en/dev/api/plugins_test/snowykami_testplugin/index.html index 3a69ffe..461c770 100644 --- a/en/dev/api/plugins_test/snowykami_testplugin/index.html +++ b/en/dev/api/plugins_test/snowykami_testplugin/index.html @@ -43,7 +43,7 @@ except Exception as e: return '运行出错: ' + str(e) return '运行成功: ' + str(r) - + \ No newline at end of file diff --git a/en/dev/api/plugins_test/weather_demo.html b/en/dev/api/plugins_test/weather_demo.html index eb5c959..27bb3b3 100644 --- a/en/dev/api/plugins_test/weather_demo.html +++ b/en/dev/api/plugins_test/weather_demo.html @@ -22,7 +22,7 @@
Skip to content

Module nonebot_plugin_marshoai.plugins_test.weather_demo


@on_function_call(description='可以用于查询天气').params(location=String(description='地点'))

async func weather(location: str) -> str

Source code or View on GitHub
python
@on_function_call(description='可以用于查询天气').params(location=String(description='地点'))
 async def weather(location: str) -> str:
     return f'{location}的天气是晴天, 温度是25°C'

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_bangumi/index.html b/en/dev/api/tools/marshoai_bangumi/index.html index f4b9b11..4f37bfd 100644 --- a/en/dev/api/tools/marshoai_bangumi/index.html +++ b/en/dev/api/tools/marshoai_bangumi/index.html @@ -40,7 +40,7 @@ except Exception as e: traceback.print_exc() return '' - + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_basic/index.html b/en/dev/api/tools/marshoai_basic/index.html index 9a18e4b..53928d3 100644 --- a/en/dev/api/tools/marshoai_basic/index.html +++ b/en/dev/api/tools/marshoai_basic/index.html @@ -25,7 +25,7 @@ return str(ver)

async func get_current_time()

Source code or View on GitHub
python
async def get_current_time():
     current_time = DateTime.now()
     return time_prompt.format(date_time=current_time.strftime('%Y年%m月%d日 %H:%M:%S'), weekday_name=weekdays[current_time.weekday()], lunar_date=current_time.to_lunar().date_hanzify('{干支年}{生肖}{月份}{日期}日'))
- + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_megakits/index.html b/en/dev/api/tools/marshoai_megakits/index.html index 0d776be..891704b 100644 --- a/en/dev/api/tools/marshoai_megakits/index.html +++ b/en/dev/api/tools/marshoai_megakits/index.html @@ -28,7 +28,7 @@ return str(await mk_morse_code.morse_decrypt(msg))

async func nya_encode(msg: str)

Source code or View on GitHub
python
async def nya_encode(msg: str):
     return str(await mk_nya_code.nya_encode(msg))

async func nya_decode(msg: str)

Source code or View on GitHub
python
async def nya_decode(msg: str):
     return str(await mk_nya_code.nya_decode(msg))
- + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_megakits/mk_common.html b/en/dev/api/tools/marshoai_megakits/mk_common.html index 92067ae..db951e8 100644 --- a/en/dev/api/tools/marshoai_megakits/mk_common.html +++ b/en/dev/api/tools/marshoai_megakits/mk_common.html @@ -37,7 +37,7 @@ return str(a % b) case _: return '未知运算符' - + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_megakits/mk_info.html b/en/dev/api/tools/marshoai_megakits/mk_info.html index e41e91b..d9a14cd 100644 --- a/en/dev/api/tools/marshoai_megakits/mk_info.html +++ b/en/dev/api/tools/marshoai_megakits/mk_info.html @@ -22,7 +22,7 @@
Skip to content

Module nonebot_plugin_marshoai.tools.marshoai_megakits.mk_info


async func twisuki()

Source code or View on GitHub
python
async def twisuki():
     return 'Twiuski(苏阳)是megakits插件作者, Github : "https://github.com/Twisuki"'

async func megakits()

Source code or View on GitHub
python
async def megakits():
     return 'MegaKits插件是一个功能混杂的MarshoAI插件, 由Twisuki(Github : "https://github.com/Twisuki")开发, 插件仓库 : "https://github.com/LiteyukiStudio/marsho-toolsets/tree/main/Twisuki/marshoai-megakits"'

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_megakits/mk_morse_code.html b/en/dev/api/tools/marshoai_megakits/mk_morse_code.html index ec72f73..e707b7e 100644 --- a/en/dev/api/tools/marshoai_megakits/mk_morse_code.html +++ b/en/dev/api/tools/marshoai_megakits/mk_morse_code.html @@ -37,7 +37,7 @@ else: result += '?' return result - + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_megakits/mk_nya_code.html b/en/dev/api/tools/marshoai_megakits/mk_nya_code.html index bb97c3b..6e39a2b 100644 --- a/en/dev/api/tools/marshoai_megakits/mk_nya_code.html +++ b/en/dev/api/tools/marshoai_megakits/mk_nya_code.html @@ -51,7 +51,7 @@ except Exception: return '翻译失败' return result - + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_memory/index.html b/en/dev/api/tools/marshoai_memory/index.html index a1c99bc..98bea09 100644 --- a/en/dev/api/tools/marshoai_memory/index.html +++ b/en/dev/api/tools/marshoai_memory/index.html @@ -38,7 +38,7 @@ memory_data = json.load(f) for i in memory_data: ... - + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_meogirl/index.html b/en/dev/api/tools/marshoai_meogirl/index.html index d1b428c..4444d93 100644 --- a/en/dev/api/tools/marshoai_meogirl/index.html +++ b/en/dev/api/tools/marshoai_meogirl/index.html @@ -23,7 +23,7 @@ return mg_info.meogirl()

async func search(msg: str, num: int = 3)

Source code or View on GitHub
python
async def search(msg: str, num: int=3):
     return str(await mg_search.search(msg, num))

async func introduce(msg: str)

Source code or View on GitHub
python
async def introduce(msg: str):
     return str(await mg_introduce.introduce(msg))
- + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_meogirl/mg_info.html b/en/dev/api/tools/marshoai_meogirl/mg_info.html index 1ebb90f..97bbb6d 100644 --- a/en/dev/api/tools/marshoai_meogirl/mg_info.html +++ b/en/dev/api/tools/marshoai_meogirl/mg_info.html @@ -21,7 +21,7 @@
Skip to content

Module nonebot_plugin_marshoai.tools.marshoai_meogirl.mg_info


func meogirl()

Source code or View on GitHub
python
def meogirl():
     return 'Meogirl指的是"萌娘百科"(https://zh.moegirl.org.cn/ , 简称"萌百"), 是一个"万物皆可萌的百科全书!"; 同时, MarshoTools也配有"Meogirl"插件, 可调用萌百的api'

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_meogirl/mg_introduce.html b/en/dev/api/tools/marshoai_meogirl/mg_introduce.html index cae68cc..edd46f7 100644 --- a/en/dev/api/tools/marshoai_meogirl/mg_introduce.html +++ b/en/dev/api/tools/marshoai_meogirl/mg_introduce.html @@ -61,7 +61,7 @@ else: logger.error(f'网络错误, 状态码 : {response.status_code}') return f'网络错误, 状态码 : {response.status_code}'

var keyword

- + \ No newline at end of file diff --git a/en/dev/api/tools/marshoai_meogirl/mg_search.html b/en/dev/api/tools/marshoai_meogirl/mg_search.html index 053688f..5aea66d 100644 --- a/en/dev/api/tools/marshoai_meogirl/mg_search.html +++ b/en/dev/api/tools/marshoai_meogirl/mg_search.html @@ -58,7 +58,7 @@ else: logger.error(f'网络错误, 状态码 : {response.status_code}') return f'网络错误, 状态码 : {response.status_code}'

var soup

- + \ No newline at end of file diff --git a/en/dev/api/tools_wip/marshoai_memory/index.html b/en/dev/api/tools_wip/marshoai_memory/index.html index 984ada1..2e154ce 100644 --- a/en/dev/api/tools_wip/marshoai_memory/index.html +++ b/en/dev/api/tools_wip/marshoai_memory/index.html @@ -21,7 +21,7 @@
Skip to content

Module nonebot_plugin_marshoai.tools_wip.marshoai_memory


async func write_memory(memory: str)

Source code or View on GitHub
python
async def write_memory(memory: str):
     return ''

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/util.html b/en/dev/api/util.html index 22630bb..3f7b1ed 100644 --- a/en/dev/api/util.html +++ b/en/dev/api/util.html @@ -13,13 +13,13 @@ - + -
Skip to content

Module nonebot_plugin_marshoai.util

var nickname_json

  • Description: 记录昵称

  • Default: None

var praises_json

  • Description: 记录夸赞名单

  • Default: None

var loaded_target_list

  • Description: 记录已恢复备份的上下文的列表

  • Default: []


async func get_image_raw_and_type(url: str, timeout: int = 10) -> Optional[tuple[bytes, str]]

Description: 获取图片的二进制数据

Arguments:

  • url: str 图片链接
  • timeout: int 超时时间 秒
Source code or View on GitHub
python
async def get_image_raw_and_type(url: str, timeout: int=10) -> Optional[tuple[bytes, str]]:
+    
Skip to content

Module nonebot_plugin_marshoai.util

var nickname_json

  • Description: 记录昵称

  • Default: None

var praises_json

  • Description: 记录夸赞名单

  • Default: None

var loaded_target_list

  • Description: 记录已恢复备份的上下文的列表

  • Default: []


async func get_image_raw_and_type(url: str, timeout: int = 10) -> Optional[tuple[bytes, str]]

Description: 获取图片的二进制数据

Arguments:

  • url: str 图片链接
  • timeout: int 超时时间 秒
Source code or View on GitHub
python
async def get_image_raw_and_type(url: str, timeout: int=10) -> Optional[tuple[bytes, str]]:
     async with httpx.AsyncClient() as client:
         response = await client.get(url, headers=_chromium_headers, timeout=timeout)
         if response.status_code == 200:
@@ -28,15 +28,15 @@
                 content_type = mimetypes.guess_type(url)[0]
             return (response.content, str(content_type))
         else:
-            return None

async func get_image_b64(url: str, timeout: int = 10) -> Optional[str]

Description: 获取图片的base64编码

Arguments:

  • url: 图片链接
  • timeout: 超时时间 秒
Source code or View on GitHub
python
async def get_image_b64(url: str, timeout: int=10) -> Optional[str]:
+            return None

async func get_image_b64(url: str, timeout: int = 10) -> Optional[str]

Description: 获取图片的base64编码

Arguments:

  • url: 图片链接
  • timeout: 超时时间 秒
Source code or View on GitHub
python
async def get_image_b64(url: str, timeout: int=10) -> Optional[str]:
     if (data_type := (await get_image_raw_and_type(url, timeout))):
         base64_image = base64.b64encode(data_type[0]).decode('utf-8')
         data_url = 'data:{};base64,{}'.format(data_type[1], base64_image)
         return data_url
     else:
-        return None

async func make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)

Description: 调用ai获取回复

Arguments:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
Source code or View on GitHub
python
async def make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list]=None):
-    return await client.complete(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p)

async func make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)

Description: 使用 Openai SDK 调用ai获取回复

Arguments:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
Source code or View on GitHub
python
async def make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list]=None):
-    return await client.chat.completions.create(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p, timeout=config.marshoai_timeout)

func get_praises()

Source code or View on GitHub
python
def get_praises():
+        return None

async func make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list] = None)

Description: 调用ai获取回复

Arguments:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
Source code or View on GitHub
python
async def make_chat(client: ChatCompletionsClient, msg: list, model_name: str, tools: Optional[list]=None):
+    return await client.complete(messages=msg, model=model_name, tools=tools, temperature=config.marshoai_temperature, max_tokens=config.marshoai_max_tokens, top_p=config.marshoai_top_p)

async func make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list] = None)

Description: 使用 Openai SDK 调用ai获取回复

Arguments:

  • client: 用于与AI模型进行通信
  • msg: 消息内容
  • model_name: 指定AI模型名
  • tools: 工具列表
Source code or View on GitHub
python
async def make_chat_openai(client: AsyncOpenAI, msg: list, model_name: str, tools: Optional[list]=None):
+    return await client.chat.completions.create(messages=msg, model=model_name, tools=tools or NOT_GIVEN, temperature=config.marshoai_temperature or NOT_GIVEN, max_tokens=config.marshoai_max_tokens or NOT_GIVEN, top_p=config.marshoai_top_p or NOT_GIVEN, timeout=config.marshoai_timeout)

func get_praises()

Source code or View on GitHub
python
def get_praises():
     global praises_json
     if praises_json is None:
         praises_file = store.get_plugin_data_file('praises.json')
@@ -46,7 +46,7 @@
         with open(praises_file, 'r', encoding='utf-8') as f:
             data = json.load(f)
         praises_json = data
-    return praises_json

async func refresh_praises_json()

Source code or View on GitHub
python
async def refresh_praises_json():
+    return praises_json

async func refresh_praises_json()

Source code or View on GitHub
python
async def refresh_praises_json():
     global praises_json
     praises_file = store.get_plugin_data_file('praises.json')
     if not praises_file.exists():
@@ -54,21 +54,21 @@
             json.dump(_praises_init_data, f, ensure_ascii=False, indent=4)
     async with aiofiles.open(praises_file, 'r', encoding='utf-8') as f:
         data = json.loads(await f.read())
-    praises_json = data

func build_praises()

Source code or View on GitHub
python
def build_praises():
+    praises_json = data

func build_praises()

Source code or View on GitHub
python
def build_praises():
     praises = get_praises()
     result = ['你喜欢以下几个人物,他们有各自的优点:']
     for item in praises['like']:
         result.append(f"名字:{item['name']},优点:{item['advantages']}")
-    return '\n'.join(result)

async func save_context_to_json(name: str, context: Any, path: str)

Source code or View on GitHub
python
async def save_context_to_json(name: str, context: Any, path: str):
+    return '\n'.join(result)

async func save_context_to_json(name: str, context: Any, path: str)

Source code or View on GitHub
python
async def save_context_to_json(name: str, context: Any, path: str):
     (context_dir := (store.get_plugin_data_dir() / path)).mkdir(parents=True, exist_ok=True)
     with open(context_dir / f'{name}.json', 'w', encoding='utf-8') as json_file:
-        json.dump(context, json_file, ensure_ascii=False, indent=4)

async func load_context_from_json(name: str, path: str) -> list

Description: 从指定路径加载历史记录

Source code or View on GitHub
python
async def load_context_from_json(name: str, path: str) -> list:
+        json.dump(context, json_file, ensure_ascii=False, indent=4)

async func load_context_from_json(name: str, path: str) -> list

Description: 从指定路径加载历史记录

Source code or View on GitHub
python
async def load_context_from_json(name: str, path: str) -> list:
     (context_dir := (store.get_plugin_data_dir() / path)).mkdir(parents=True, exist_ok=True)
     if (file_path := (context_dir / f'{name}.json')).exists():
         async with aiofiles.open(file_path, 'r', encoding='utf-8') as json_file:
             return json.loads(await json_file.read())
     else:
-        return []

async func get_nicknames()

Description: 获取nickname_json, 优先来源于全局变量

Source code or View on GitHub
python
async def get_nicknames():
+        return []

async func get_nicknames()

Description: 获取nickname_json, 优先来源于全局变量

Source code or View on GitHub
python
async def get_nicknames():
     global nickname_json
     if nickname_json is None:
         filename = store.get_plugin_data_file('nickname.json')
@@ -77,7 +77,7 @@
                 nickname_json = json.loads(await f.read())
         except Exception:
             nickname_json = {}
-    return nickname_json

async func set_nickname(user_id: str, name: str)

Source code or View on GitHub
python
async def set_nickname(user_id: str, name: str):
+    return nickname_json

async func set_nickname(user_id: str, name: str)

Source code or View on GitHub
python
async def set_nickname(user_id: str, name: str):
     global nickname_json
     filename = store.get_plugin_data_file('nickname.json')
     if not filename.exists():
@@ -90,13 +90,13 @@
         del data[user_id]
     with open(filename, 'w', encoding='utf-8') as f:
         json.dump(data, f, ensure_ascii=False, indent=4)
-    nickname_json = data

async func refresh_nickname_json()

Description: 强制刷新nickname_json, 刷新全局变量

Source code or View on GitHub
python
async def refresh_nickname_json():
+    nickname_json = data

async func refresh_nickname_json()

Description: 强制刷新nickname_json, 刷新全局变量

Source code or View on GitHub
python
async def refresh_nickname_json():
     global nickname_json
     try:
         async with aiofiles.open(store.get_plugin_data_file('nickname.json'), 'r', encoding='utf-8') as f:
             nickname_json = json.loads(await f.read())
     except Exception:
-        logger.error('刷新 nickname_json 表错误:无法载入 nickname.json 文件')

func get_prompt()

Description: 获取系统提示词

Source code or View on GitHub
python
def get_prompt():
+        logger.error('刷新 nickname_json 表错误:无法载入 nickname.json 文件')

func get_prompt()

Description: 获取系统提示词

Source code or View on GitHub
python
def get_prompt():
     prompts = ''
     prompts += config.marshoai_additional_prompt
     if config.marshoai_enable_praises:
@@ -106,12 +106,12 @@
         prompts += _time_prompt.format(date_time=(current_time := DateTime.now()).strftime('%Y年%m月%d日 %H:%M:%S'), weekday_name=_weekdays[current_time.weekday()], lunar_date=current_time.to_lunar().date_hanzify('{干支年}{生肖}{月份}{日期}日'))
     marsho_prompt = config.marshoai_prompt
     spell = SystemMessage(content=marsho_prompt + prompts).as_dict()
-    return spell

func suggest_solution(errinfo: str) -> str

Source code or View on GitHub
python
def suggest_solution(errinfo: str) -> str:
+    return spell

func suggest_solution(errinfo: str) -> str

Source code or View on GitHub
python
def suggest_solution(errinfo: str) -> str:
     suggestions = {'content_filter': '消息已被内容过滤器过滤。请调整聊天内容后重试。', 'RateLimitReached': '模型达到调用速率限制。请稍等一段时间或联系Bot管理员。', 'tokens_limit_reached': '请求token达到上限。请重置上下文。', 'content_length_limit': '请求体过大。请重置上下文。', 'unauthorized': '访问token无效。请联系Bot管理员。', 'invalid type: parameter messages.content is of type array but should be of type string.': '聊天请求体包含此模型不支持的数据类型。请重置上下文。', 'At most 1 image(s) may be provided in one request.': '此模型只能在上下文中包含1张图片。如果此前的聊天已经发送过图片,请重置上下文。'}
     for key, suggestion in suggestions.items():
         if key in errinfo:
             return f'\n{suggestion}'
-    return ''

async func get_backup_context(target_id: str, target_private: bool) -> list

Description: 获取历史上下文

Source code or View on GitHub
python
async def get_backup_context(target_id: str, target_private: bool) -> list:
+    return ''

async func get_backup_context(target_id: str, target_private: bool) -> list

Description: 获取历史上下文

Source code or View on GitHub
python
async def get_backup_context(target_id: str, target_private: bool) -> list:
     global loaded_target_list
     if target_private:
         target_uid = f'private_{target_id}'
@@ -120,12 +120,12 @@
     if target_uid not in loaded_target_list:
         loaded_target_list.append(target_uid)
         return await load_context_from_json(f'back_up_context_{target_uid}', 'contexts/backup')
-    return []

var latex_convert

  • Description: 开启一个转换实例

  • Default: ConvertLatex()


@get_driver().on_bot_connect

async func load_latex_convert()

Source code or View on GitHub
python
@get_driver().on_bot_connect
+    return []

var latex_convert

  • Description: 开启一个转换实例

  • Default: ConvertLatex()


@get_driver().on_bot_connect

async func load_latex_convert()

Source code or View on GitHub
python
@get_driver().on_bot_connect
 async def load_latex_convert():
-    await latex_convert.load_channel(None)

async func get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])

Source code or View on GitHub
python
async def get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]]):
+    await latex_convert.load_channel(None)

async func get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]])

Source code or View on GitHub
python
async def get_uuid_back2codeblock(msg: str, code_blank_uuid_map: list[tuple[str, str]]):
     for torep, rep in code_blank_uuid_map:
         msg = msg.replace(torep, rep)
-    return msg

async func parse_richtext(msg: str) -> UniMessage

Description: 人工智能给出的回答一般不会包含 HTML 嵌入其中,但是包含图片或者 LaTeX 公式、代码块,都很正常。 这个函数会把这些都以图片形式嵌入消息体。

Source code or View on GitHub
python
async def parse_richtext(msg: str) -> UniMessage:
+    return msg

async func parse_richtext(msg: str) -> UniMessage

Description: 人工智能给出的回答一般不会包含 HTML 嵌入其中,但是包含图片或者 LaTeX 公式、代码块,都很正常。 这个函数会把这些都以图片形式嵌入消息体。

Source code or View on GitHub
python
async def parse_richtext(msg: str) -> UniMessage:
     if not IMG_LATEX_PATTERN.search(msg):
         return UniMessage(msg)
     result_msg = UniMessage()
@@ -160,7 +160,7 @@
             result_msg.append(TextMsg(tag_found + '(未知内容解析失败)'))
     result_msg.append(TextMsg(await get_uuid_back2codeblock(msg[last_tag_index:], code_blank_uuid_map)))
     return result_msg

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/api/util_hunyuan.html b/en/dev/api/util_hunyuan.html index 0bbf594..45c5baf 100644 --- a/en/dev/api/util_hunyuan.html +++ b/en/dev/api/util_hunyuan.html @@ -31,7 +31,7 @@ req.from_json_string(json.dumps(params)) resp = client.TextToImageLite(req) return resp.to_json_string()

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/dev/index.html b/en/dev/index.html index 7abba6a..6819a19 100644 --- a/en/dev/index.html +++ b/en/dev/index.html @@ -20,7 +20,7 @@
Skip to content

DEV

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/index.html b/en/index.html index 314966f..900fc04 100644 --- a/en/index.html +++ b/en/index.html @@ -20,7 +20,7 @@
Skip to content

MarshoAIA kawaii cat

Kawaii, intelligent and extensible AI service plugin

Marsho LogoMarsho Logo

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/start/index.html b/en/start/index.html index fcfa07b..31a76b2 100644 --- a/en/start/index.html +++ b/en/start/index.html @@ -20,7 +20,7 @@
Skip to content

The document is being improved. Suggestions are welcome.

- + \ No newline at end of file diff --git a/en/start/install.html b/en/start/install.html index f4cda06..2270784 100644 --- a/en/start/install.html +++ b/en/start/install.html @@ -38,7 +38,7 @@ ... ] }

⚙️ Configurable options

Add options in the .env file from the diagram below in nonebot2 project.

plugin behaviour

OptionTypeDefaultDescription
MARSHOAI_USE_YAML_CONFIGboolfalseUse YAML config format
MARSHOAI_DEVMODEbooltrueTurn on Development Mode or not

Marsho usage

OptionTypeDefaultDescription
MARSHOAI_DEFAULT_NAMEstrmarshoCommand to call Marsho
MARSHOAI_ALIASESset[str]list["小棉"]Other name(Alias) to call Marsho
MARSHOAI_ATboolfalseCall by @ or not
MARSHOAI_MAIN_COLOURstrFFAAAATheme color, used by some tools and features

AI call

OptionTypeDefaultDescription
MARSHOAI_TOKENstrThe token needed to call AI API
MARSHOAI_DEFAULT_MODELstrgpt-4o-miniThe default model of Marsho
MARSHOAI_PROMPTstrCatgirl Marsho's character promptMarsho's basic system prompt ※Some models(o1 and so on) don't support it
MARSHOAI_ADDITIONAL_PROMPTstrMarsho's external system prompt
MARSHOAI_ENFORCE_NICKNAMEbooltrueEnforce user to set nickname or not
MARSHOAI_POKE_SUFFIXstr揉了揉你的猫耳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_ENDPOINTstrhttps://models.inference.ai.azure.comOpenAI standard API
MARSHOAI_TEMPERATUREfloatnulltemperature parameter
MARSHOAI_TOP_PfloatnullNucleus Sampling parameter
MARSHOAI_MAX_TOKENSintnullMax token number
MARSHOAI_ADDITIONAL_IMAGE_MODELSlist[]External image-support model list, such as hunyuan-vision
MARSHOAI_NICKNAME_LIMITint16Limit for nickname length
MARSHOAI_TIMEOUTfloat50AI request timeout (seconds)

Feature Switches

OptionTypeDefaultDescription
MARSHOAI_ENABLE_SUPPORT_IMAGE_TIPbooltrueWhen on, if user send request with photo and model don't support that, remind the user
MARSHOAI_ENABLE_NICKNAME_TIPbooltrueWhen on, if user haven't set username, remind user to set
MARSHOAI_ENABLE_PRAISESbooltrueTurn on Praise list or not
MARSHOAI_ENABLE_TIME_PROMPTbooltrueTurn on real-time date and time (accurate to seconds) and lunar date system prompt
MARSHOAI_ENABLE_TOOLSboolfalseTurn on Marsho Tools or not
MARSHOAI_ENABLE_PLUGINSbooltrueTurn on Marsho Plugins or not
MARSHOAI_PLUGIN_DIRSlist[str][]List of plugins directory
MARSHOAI_LOAD_BUILTIN_TOOLSbooltrueLoading the built-in toolkit or not
MARSHOAI_TOOLSET_DIRlist[]List of external toolset directory
MARSHOAI_DISABLED_TOOLKITSlist[]List of disabled toolkits' name
MARSHOAI_ENABLE_RICHTEXT_PARSEbooltrueTurn on auto parse rich text feature(including image, LaTeX equation)
MARSHOAI_SINGLE_LATEX_PARSEboolfalseRender single-line equation or not
MARSHOAI_FIX_TOOLCALLSbooltrueFix tool calls or not
MARSHOAI_SEND_THINKINGbooltrueSend thinking chain or not
- + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index a21ed89..3f5cab1 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"dev_api_azure.md":"By3DQZ1H","dev_api_azure_onebot.md":"BSzQi5NB","dev_api_config.md":"DVQSYsBc","dev_api_constants.md":"CeyS-dgb","dev_api_deal_latex.md":"CliIHVQx","dev_api_dev.md":"CR8NfY8m","dev_api_hooks.md":"DpJrlEUX","dev_api_hunyuan.md":"DTtTdru3","dev_api_index.md":"LG7oRavz","dev_api_instances.md":"VkCkhorR","dev_api_marsho.md":"DEHEMRnq","dev_api_marsho_onebot.md":"BaELa_5s","dev_api_metadata.md":"BvJb0wDC","dev_api_models.md":"CzLGyN0e","dev_api_observer.md":"CKxQ8rNr","dev_api_plugin_func_call_caller.md":"CzrTsykV","dev_api_plugin_func_call_index.md":"DSbV-DHP","dev_api_plugin_func_call_models.md":"CYOWq9i6","dev_api_plugin_func_call_params.md":"DIr0Wfuh","dev_api_plugin_func_call_utils.md":"CBpuIEsL","dev_api_plugin_index.md":"BpLPZBto","dev_api_plugin_load.md":"Z1_AJpA-","dev_api_plugin_models.md":"XO9ZgJTV","dev_api_plugin_register.md":"wxtxwL1q","dev_api_plugin_typing.md":"B_OdqvYr","dev_api_plugin_utils.md":"CKZ8uSFc","dev_api_plugins_builtin_tools_chat.md":"CX5fWmLQ","dev_api_plugins_builtin_tools_file_io.md":"B4WB3kMa","dev_api_plugins_builtin_tools_index.md":"CdVyaR56","dev_api_plugins_builtin_tools_liteyuki.md":"C2jQUuMC","dev_api_plugins_builtin_tools_manager.md":"CSx6-DqR","dev_api_plugins_builtin_tools_network.md":"qwTduvJA","dev_api_plugins_builtin_tools_utils.md":"BQ_zIszy","dev_api_plugins_marshoai_bangumi_index.md":"DI0wDzaI","dev_api_plugins_marshoai_basic_index.md":"CdMZUtoa","dev_api_plugins_test_marshoai_basic_index.md":"ChCsmGGV","dev_api_plugins_test_marshoai_memory_command.md":"CeJIbyf1","dev_api_plugins_test_marshoai_memory_config.md":"CtBtnl-b","dev_api_plugins_test_marshoai_memory_index.md":"wgRBaFEj","dev_api_plugins_test_random_number_generator.md":"CP2ZOHnt","dev_api_plugins_test_snowykami_testplugin_index.md":"DGUrAa-4","dev_api_plugins_test_weather_demo.md":"BhjRtDMw","dev_api_plugins_twisuki_megakits_index.md":"Dhj0Q_rd","dev_api_plugins_twisuki_megakits_mk_morse_code.md":"BPtKSrvY","dev_api_plugins_twisuki_megakits_mk_nya_code.md":"BDLuQWQj","dev_api_plugins_twisuki_petcat_index.md":"Db-1fmpK","dev_api_plugins_twisuki_petcat_pc_cat.md":"F2sC91-N","dev_api_plugins_twisuki_petcat_pc_info.md":"CvN9sngp","dev_api_plugins_twisuki_petcat_pc_shop.md":"DD4ahNPm","dev_api_plugins_twisuki_petcat_pc_token.md":"DA_UlEtw","dev_api_tools_marshoai_bangumi_index.md":"DBTSrMfh","dev_api_tools_marshoai_basic_index.md":"DzBLEWLC","dev_api_tools_marshoai_megakits_index.md":"REZMb3dg","dev_api_tools_marshoai_megakits_mk_common.md":"7APNTo8M","dev_api_tools_marshoai_megakits_mk_info.md":"ChkkoB5W","dev_api_tools_marshoai_megakits_mk_morse_code.md":"0M_XvS3m","dev_api_tools_marshoai_megakits_mk_nya_code.md":"c9sb8PmU","dev_api_tools_marshoai_memory_index.md":"CIRx5tJY","dev_api_tools_marshoai_meogirl_index.md":"XEkcu-t2","dev_api_tools_marshoai_meogirl_mg_info.md":"DPN0C8WV","dev_api_tools_marshoai_meogirl_mg_introduce.md":"BlzX94DI","dev_api_tools_marshoai_meogirl_mg_search.md":"BBTMELq_","dev_api_tools_wip_marshoai_memory_index.md":"Dm4TJCvU","dev_api_util.md":"BPz0f3NG","dev_api_util_hunyuan.md":"Dw50YpRa","dev_extension.md":"sCH8l0Kd","dev_index.md":"DmkkcOvS","dev_project.md":"si_Q_Qol","en_dev_api_azure.md":"Cto4HxOQ","en_dev_api_azure_onebot.md":"Nh5j0O6E","en_dev_api_config.md":"B9MbThdQ","en_dev_api_constants.md":"0iXpq-Ec","en_dev_api_deal_latex.md":"CoDpC8c1","en_dev_api_dev.md":"ZX87ppE0","en_dev_api_hooks.md":"BCTjt9JT","en_dev_api_hunyuan.md":"CAln-sCp","en_dev_api_index.md":"CaKH-82W","en_dev_api_instances.md":"qxOeS8ME","en_dev_api_marsho.md":"Ca8NCLt_","en_dev_api_marsho_onebot.md":"Bp39oSfi","en_dev_api_metadata.md":"BMq5AAe8","en_dev_api_models.md":"BPby54j6","en_dev_api_observer.md":"oTjjwmjn","en_dev_api_plugin_func_call_caller.md":"Bye_Nxpk","en_dev_api_plugin_func_call_index.md":"DWsorYJh","en_dev_api_plugin_func_call_models.md":"B-qnd7cH","en_dev_api_plugin_func_call_params.md":"u__hMe93","en_dev_api_plugin_func_call_utils.md":"iU5-nBge","en_dev_api_plugin_index.md":"BZIGSQUL","en_dev_api_plugin_load.md":"XwjzFCnp","en_dev_api_plugin_models.md":"KoVIfTB6","en_dev_api_plugin_register.md":"Duq9hOxH","en_dev_api_plugin_typing.md":"C2zfOXEp","en_dev_api_plugin_utils.md":"e5Btmrql","en_dev_api_plugins_builtin_tools_chat.md":"C23GjQBb","en_dev_api_plugins_builtin_tools_file_io.md":"C08lWCZX","en_dev_api_plugins_builtin_tools_index.md":"DbJ5EqSA","en_dev_api_plugins_builtin_tools_liteyuki.md":"x_VmenLc","en_dev_api_plugins_builtin_tools_manager.md":"u-0hfdOm","en_dev_api_plugins_builtin_tools_network.md":"CnxMIDLE","en_dev_api_plugins_builtin_tools_utils.md":"wCwWvzS9","en_dev_api_plugins_marshoai_bangumi_index.md":"DBU2Zi62","en_dev_api_plugins_marshoai_basic_index.md":"DyXm3jCh","en_dev_api_plugins_test_marshoai_basic_index.md":"bDJDh-CJ","en_dev_api_plugins_test_marshoai_memory_command.md":"u25QWY_i","en_dev_api_plugins_test_marshoai_memory_config.md":"fO2hq1Zg","en_dev_api_plugins_test_marshoai_memory_index.md":"C45XsXpP","en_dev_api_plugins_test_random_number_generator.md":"BbS1YDsu","en_dev_api_plugins_test_snowykami_testplugin_index.md":"QqX2hUew","en_dev_api_plugins_test_weather_demo.md":"CkQsPcOc","en_dev_api_plugins_twisuki_megakits_index.md":"DI9uZZaT","en_dev_api_plugins_twisuki_megakits_mk_morse_code.md":"CR7E4O63","en_dev_api_plugins_twisuki_megakits_mk_nya_code.md":"nvZAi5el","en_dev_api_plugins_twisuki_petcat_index.md":"Df3A8uE4","en_dev_api_plugins_twisuki_petcat_pc_cat.md":"CwByAWa2","en_dev_api_plugins_twisuki_petcat_pc_info.md":"C3tuga99","en_dev_api_plugins_twisuki_petcat_pc_shop.md":"CUZ6lawY","en_dev_api_plugins_twisuki_petcat_pc_token.md":"B1O2CkQG","en_dev_api_tools_marshoai_bangumi_index.md":"DWnmN-I6","en_dev_api_tools_marshoai_basic_index.md":"D9JkVPMg","en_dev_api_tools_marshoai_megakits_index.md":"CgWeHxOT","en_dev_api_tools_marshoai_megakits_mk_common.md":"P8V5KFZ7","en_dev_api_tools_marshoai_megakits_mk_info.md":"tcfMikuj","en_dev_api_tools_marshoai_megakits_mk_morse_code.md":"xggXCxLJ","en_dev_api_tools_marshoai_megakits_mk_nya_code.md":"G9HPWVtZ","en_dev_api_tools_marshoai_memory_index.md":"BoTJbgVx","en_dev_api_tools_marshoai_meogirl_index.md":"CAicnthU","en_dev_api_tools_marshoai_meogirl_mg_info.md":"BFLggEu0","en_dev_api_tools_marshoai_meogirl_mg_introduce.md":"lyFmddfe","en_dev_api_tools_marshoai_meogirl_mg_search.md":"CuklbRju","en_dev_api_tools_wip_marshoai_memory_index.md":"cAEFdFDP","en_dev_api_util.md":"DZ2bLrc-","en_dev_api_util_hunyuan.md":"Dn5jgbGF","en_dev_index.md":"DJJ0NGhU","en_index.md":"DAKoBz1C","en_start_index.md":"BwdTMIWE","en_start_install.md":"BCSbBsV8","index.md":"DlqxtZr8","ja_index.md":"CcT0fxo3","start_index.md":"ByEtL58Q","start_install-old.md":"F642ZtXe","start_install.md":"fkcgPqqp","start_use.md":"BiCxERjA"} +{"dev_api_azure.md":"By3DQZ1H","dev_api_azure_onebot.md":"BSzQi5NB","dev_api_config.md":"DVQSYsBc","dev_api_constants.md":"CeyS-dgb","dev_api_deal_latex.md":"CliIHVQx","dev_api_dev.md":"CR8NfY8m","dev_api_hooks.md":"DpJrlEUX","dev_api_hunyuan.md":"DTtTdru3","dev_api_index.md":"LG7oRavz","dev_api_instances.md":"VkCkhorR","dev_api_marsho.md":"DKFXBEgt","dev_api_marsho_onebot.md":"BaELa_5s","dev_api_metadata.md":"BvJb0wDC","dev_api_models.md":"CzLGyN0e","dev_api_observer.md":"CKxQ8rNr","dev_api_plugin_func_call_caller.md":"CzrTsykV","dev_api_plugin_func_call_index.md":"DSbV-DHP","dev_api_plugin_func_call_models.md":"CYOWq9i6","dev_api_plugin_func_call_params.md":"DIr0Wfuh","dev_api_plugin_func_call_utils.md":"CBpuIEsL","dev_api_plugin_index.md":"BpLPZBto","dev_api_plugin_load.md":"Z1_AJpA-","dev_api_plugin_models.md":"XO9ZgJTV","dev_api_plugin_register.md":"wxtxwL1q","dev_api_plugin_typing.md":"B_OdqvYr","dev_api_plugin_utils.md":"CKZ8uSFc","dev_api_plugins_builtin_tools_chat.md":"CX5fWmLQ","dev_api_plugins_builtin_tools_file_io.md":"B4WB3kMa","dev_api_plugins_builtin_tools_index.md":"CdVyaR56","dev_api_plugins_builtin_tools_liteyuki.md":"C2jQUuMC","dev_api_plugins_builtin_tools_manager.md":"CSx6-DqR","dev_api_plugins_builtin_tools_network.md":"qwTduvJA","dev_api_plugins_builtin_tools_utils.md":"BQ_zIszy","dev_api_plugins_marshoai_bangumi_index.md":"DI0wDzaI","dev_api_plugins_marshoai_basic_index.md":"CdMZUtoa","dev_api_plugins_test_marshoai_basic_index.md":"ChCsmGGV","dev_api_plugins_test_marshoai_memory_command.md":"CeJIbyf1","dev_api_plugins_test_marshoai_memory_config.md":"CtBtnl-b","dev_api_plugins_test_marshoai_memory_index.md":"wgRBaFEj","dev_api_plugins_test_random_number_generator.md":"CP2ZOHnt","dev_api_plugins_test_snowykami_testplugin_index.md":"DGUrAa-4","dev_api_plugins_test_weather_demo.md":"BhjRtDMw","dev_api_plugins_twisuki_megakits_index.md":"Dhj0Q_rd","dev_api_plugins_twisuki_megakits_mk_morse_code.md":"BPtKSrvY","dev_api_plugins_twisuki_megakits_mk_nya_code.md":"BDLuQWQj","dev_api_plugins_twisuki_petcat_index.md":"Db-1fmpK","dev_api_plugins_twisuki_petcat_pc_cat.md":"F2sC91-N","dev_api_plugins_twisuki_petcat_pc_info.md":"CvN9sngp","dev_api_plugins_twisuki_petcat_pc_shop.md":"DD4ahNPm","dev_api_plugins_twisuki_petcat_pc_token.md":"DA_UlEtw","dev_api_tools_marshoai_bangumi_index.md":"DBTSrMfh","dev_api_tools_marshoai_basic_index.md":"DzBLEWLC","dev_api_tools_marshoai_megakits_index.md":"REZMb3dg","dev_api_tools_marshoai_megakits_mk_common.md":"7APNTo8M","dev_api_tools_marshoai_megakits_mk_info.md":"ChkkoB5W","dev_api_tools_marshoai_megakits_mk_morse_code.md":"0M_XvS3m","dev_api_tools_marshoai_megakits_mk_nya_code.md":"c9sb8PmU","dev_api_tools_marshoai_memory_index.md":"CIRx5tJY","dev_api_tools_marshoai_meogirl_index.md":"XEkcu-t2","dev_api_tools_marshoai_meogirl_mg_info.md":"DPN0C8WV","dev_api_tools_marshoai_meogirl_mg_introduce.md":"BlzX94DI","dev_api_tools_marshoai_meogirl_mg_search.md":"BBTMELq_","dev_api_tools_wip_marshoai_memory_index.md":"Dm4TJCvU","dev_api_util.md":"BUv0BLvD","dev_api_util_hunyuan.md":"Dw50YpRa","dev_extension.md":"sCH8l0Kd","dev_index.md":"DmkkcOvS","dev_project.md":"si_Q_Qol","en_dev_api_azure.md":"Cto4HxOQ","en_dev_api_azure_onebot.md":"Nh5j0O6E","en_dev_api_config.md":"B9MbThdQ","en_dev_api_constants.md":"0iXpq-Ec","en_dev_api_deal_latex.md":"CoDpC8c1","en_dev_api_dev.md":"ZX87ppE0","en_dev_api_hooks.md":"BCTjt9JT","en_dev_api_hunyuan.md":"CAln-sCp","en_dev_api_index.md":"CaKH-82W","en_dev_api_instances.md":"qxOeS8ME","en_dev_api_marsho.md":"BZA0yy7W","en_dev_api_marsho_onebot.md":"Bp39oSfi","en_dev_api_metadata.md":"BMq5AAe8","en_dev_api_models.md":"BPby54j6","en_dev_api_observer.md":"oTjjwmjn","en_dev_api_plugin_func_call_caller.md":"Bye_Nxpk","en_dev_api_plugin_func_call_index.md":"DWsorYJh","en_dev_api_plugin_func_call_models.md":"B-qnd7cH","en_dev_api_plugin_func_call_params.md":"u__hMe93","en_dev_api_plugin_func_call_utils.md":"iU5-nBge","en_dev_api_plugin_index.md":"BZIGSQUL","en_dev_api_plugin_load.md":"XwjzFCnp","en_dev_api_plugin_models.md":"KoVIfTB6","en_dev_api_plugin_register.md":"Duq9hOxH","en_dev_api_plugin_typing.md":"C2zfOXEp","en_dev_api_plugin_utils.md":"e5Btmrql","en_dev_api_plugins_builtin_tools_chat.md":"C23GjQBb","en_dev_api_plugins_builtin_tools_file_io.md":"C08lWCZX","en_dev_api_plugins_builtin_tools_index.md":"DbJ5EqSA","en_dev_api_plugins_builtin_tools_liteyuki.md":"x_VmenLc","en_dev_api_plugins_builtin_tools_manager.md":"u-0hfdOm","en_dev_api_plugins_builtin_tools_network.md":"CnxMIDLE","en_dev_api_plugins_builtin_tools_utils.md":"wCwWvzS9","en_dev_api_plugins_marshoai_bangumi_index.md":"DBU2Zi62","en_dev_api_plugins_marshoai_basic_index.md":"DyXm3jCh","en_dev_api_plugins_test_marshoai_basic_index.md":"bDJDh-CJ","en_dev_api_plugins_test_marshoai_memory_command.md":"u25QWY_i","en_dev_api_plugins_test_marshoai_memory_config.md":"fO2hq1Zg","en_dev_api_plugins_test_marshoai_memory_index.md":"C45XsXpP","en_dev_api_plugins_test_random_number_generator.md":"BbS1YDsu","en_dev_api_plugins_test_snowykami_testplugin_index.md":"QqX2hUew","en_dev_api_plugins_test_weather_demo.md":"CkQsPcOc","en_dev_api_plugins_twisuki_megakits_index.md":"DI9uZZaT","en_dev_api_plugins_twisuki_megakits_mk_morse_code.md":"CR7E4O63","en_dev_api_plugins_twisuki_megakits_mk_nya_code.md":"nvZAi5el","en_dev_api_plugins_twisuki_petcat_index.md":"Df3A8uE4","en_dev_api_plugins_twisuki_petcat_pc_cat.md":"CwByAWa2","en_dev_api_plugins_twisuki_petcat_pc_info.md":"C3tuga99","en_dev_api_plugins_twisuki_petcat_pc_shop.md":"CUZ6lawY","en_dev_api_plugins_twisuki_petcat_pc_token.md":"B1O2CkQG","en_dev_api_tools_marshoai_bangumi_index.md":"DWnmN-I6","en_dev_api_tools_marshoai_basic_index.md":"D9JkVPMg","en_dev_api_tools_marshoai_megakits_index.md":"CgWeHxOT","en_dev_api_tools_marshoai_megakits_mk_common.md":"P8V5KFZ7","en_dev_api_tools_marshoai_megakits_mk_info.md":"tcfMikuj","en_dev_api_tools_marshoai_megakits_mk_morse_code.md":"xggXCxLJ","en_dev_api_tools_marshoai_megakits_mk_nya_code.md":"G9HPWVtZ","en_dev_api_tools_marshoai_memory_index.md":"BoTJbgVx","en_dev_api_tools_marshoai_meogirl_index.md":"CAicnthU","en_dev_api_tools_marshoai_meogirl_mg_info.md":"BFLggEu0","en_dev_api_tools_marshoai_meogirl_mg_introduce.md":"lyFmddfe","en_dev_api_tools_marshoai_meogirl_mg_search.md":"CuklbRju","en_dev_api_tools_wip_marshoai_memory_index.md":"cAEFdFDP","en_dev_api_util.md":"BfLNUJEL","en_dev_api_util_hunyuan.md":"Dn5jgbGF","en_dev_index.md":"DJJ0NGhU","en_index.md":"DAKoBz1C","en_start_index.md":"BwdTMIWE","en_start_install.md":"BCSbBsV8","index.md":"DlqxtZr8","ja_index.md":"CcT0fxo3","start_index.md":"ByEtL58Q","start_install-old.md":"F642ZtXe","start_install.md":"fkcgPqqp","start_use.md":"BiCxERjA"} diff --git a/index.html b/index.html index d1a8ca3..0f79d2c 100644 --- a/index.html +++ b/index.html @@ -20,7 +20,7 @@
Skip to content

小棉智能猫娘机器人

可爱,智能且可扩展的AI服务插件

Marsho LogoMarsho Logo

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/ja/index.html b/ja/index.html index 09bb432..799b384 100644 --- a/ja/index.html +++ b/ja/index.html @@ -20,7 +20,7 @@
Skip to content

小綿智能猫娘ロボット

かわいくて、賢くて、拡張可能なAIサービスプラグイン

MarshoロゴMarshoロゴ

ドキュメントは改善中です。ご意見をお待ちしております。

- + \ No newline at end of file diff --git a/start/index.html b/start/index.html index 833106e..2a531fd 100644 --- a/start/index.html +++ b/start/index.html @@ -20,7 +20,7 @@
Skip to content

文档完善中,欢迎提出建议或帮助我们完善。

- + \ No newline at end of file diff --git a/start/install-old.html b/start/install-old.html index bb5e905..e341b36 100644 --- a/start/install-old.html +++ b/start/install-old.html @@ -38,7 +38,7 @@ ... ] }

⚙️ 可配置项

在 nonebot2 项目的.env文件中添加下表中的配置

插件行为

配置项类型默认值说明
MARSHOAI_USE_YAML_CONFIGboolfalse是否使用 YAML 配置文件格式

Marsho 使用方式

配置项类型默认值说明
MARSHOAI_DEFAULT_NAMEstrmarsho调用 Marsho 默认的命令前缀
MARSHOAI_ALIASESset[str]set{"小棉"}调用 Marsho 的命令别名
MARSHOAI_ATboolfalse决定是否使用at触发
MARSHOAI_MAIN_COLOURstrFFAAAA主题色,部分工具和功能可用

AI 调用

配置项类型默认值说明
MARSHOAI_TOKENstr调用 AI API 所需的 token
MARSHOAI_DEFAULT_MODELstrgpt-4o-miniMarsho 默认调用的模型
MARSHOAI_PROMPTstr猫娘 Marsho 人设提示词Marsho 的基本系统提示词 ※部分模型(o1等)不支持系统提示词。
MARSHOAI_ADDITIONAL_PROMPTstrMarsho 的扩展系统提示词
MARSHOAI_POKE_SUFFIXstr揉了揉你的猫耳对 Marsho 所连接的 OneBot 用户进行双击戳一戳时,构建的聊天内容。此配置项为空字符串时,戳一戳响应功能会被禁用。例如,默认值构建的聊天内容将为*[昵称]揉了揉你的猫耳。
MARSHOAI_AZURE_ENDPOINTstrhttps://models.inference.ai.azure.comOpenAI 标准格式 API 端点
MARSHOAI_TEMPERATUREfloatnull推理生成多样性(温度)参数
MARSHOAI_TOP_Pfloatnull推理核采样参数
MARSHOAI_MAX_TOKENSintnull最大生成 token 数
MARSHOAI_ADDITIONAL_IMAGE_MODELSlist[]额外添加的支持图片的模型列表,例如hunyuan-vision

功能开关

配置项类型默认值说明
MARSHOAI_ENABLE_SUPPORT_IMAGE_TIPbooltrue启用后用户发送带图请求时若模型不支持图片,则提示用户
MARSHOAI_ENABLE_NICKNAME_TIPbooltrue启用后用户未设置昵称时提示用户设置
MARSHOAI_ENABLE_PRAISESbooltrue是否启用夸赞名单功能
MARSHOAI_ENABLE_TOOLSbooltrue是否启用小棉工具
MARSHOAI_LOAD_BUILTIN_TOOLSbooltrue是否加载内置工具包
MARSHOAI_TOOLSET_DIRlist[]外部工具集路径列表
MARSHOAI_DISABLED_TOOLKITSlist[]禁用的工具包包名列表
MARSHOAI_ENABLE_RICHTEXT_PARSEbooltrue是否启用自动解析消息(若包含图片链接则发送图片、若包含LaTeX公式则发送公式图)
MARSHOAI_SINGLE_LATEX_PARSEboolfalse单行公式是否渲染(当消息富文本解析启用时可用)(如果单行也渲……只能说不好看)
- + \ No newline at end of file diff --git a/start/install.html b/start/install.html index b8a1eda..c3792ba 100644 --- a/start/install.html +++ b/start/install.html @@ -38,7 +38,7 @@ ... ] }

⚙️ 可配置项

在 nonebot2 项目的.env文件中添加下表中的配置

插件行为

配置项类型默认值说明
MARSHOAI_USE_YAML_CONFIGboolfalse是否使用 YAML 配置文件格式
MARSHOAI_DEVMODEboolfalse是否启用开发者模式

Marsho 使用方式

配置项类型默认值说明
MARSHOAI_DEFAULT_NAMEstrmarsho调用 Marsho 默认的命令前缀
MARSHOAI_ALIASESset[str]list["小棉"]调用 Marsho 的命令别名
MARSHOAI_ATboolfalse决定是否使用at触发
MARSHOAI_MAIN_COLOURstrFFAAAA主题色,部分工具和功能可用

AI 调用

配置项类型默认值说明
MARSHOAI_TOKENstr调用 AI API 所需的 token
MARSHOAI_DEFAULT_MODELstrgpt-4o-miniMarsho 默认调用的模型
MARSHOAI_PROMPTstr猫娘 Marsho 人设提示词Marsho 的基本系统提示词 ※部分模型(o1等)不支持系统提示词。
MARSHOAI_ADDITIONAL_PROMPTstrMarsho 的扩展系统提示词
MARSHOAI_ENFORCE_NICKNAMEbooltrue是否强制用户设置昵称
MARSHOAI_POKE_SUFFIXstr揉了揉你的猫耳对 Marsho 所连接的 OneBot 用户进行双击戳一戳时,构建的聊天内容。此配置项为空字符串时,戳一戳响应功能会被禁用。例如,默认值构建的聊天内容将为*[昵称]揉了揉你的猫耳。
MARSHOAI_AZURE_ENDPOINTstrhttps://models.inference.ai.azure.comOpenAI 标准格式 API 端点
MARSHOAI_TEMPERATUREfloatnull推理生成多样性(温度)参数
MARSHOAI_TOP_Pfloatnull推理核采样参数
MARSHOAI_MAX_TOKENSintnull最大生成 token 数
MARSHOAI_ADDITIONAL_IMAGE_MODELSlist[]额外添加的支持图片的模型列表,例如hunyuan-vision
MARSHOAI_NICKNAME_LIMITint16昵称长度限制
MARSHOAI_TIMEOUTfloat50AI 请求超时时间(秒)

功能开关

配置项类型默认值说明
MARSHOAI_ENABLE_SUPPORT_IMAGE_TIPbooltrue启用后用户发送带图请求时若模型不支持图片,则提示用户
MARSHOAI_ENABLE_NICKNAME_TIPbooltrue启用后用户未设置昵称时提示用户设置
MARSHOAI_ENABLE_PRAISESbooltrue是否启用夸赞名单功能
MARSHOAI_ENABLE_TIME_PROMPTbooltrue是否启用实时更新的日期与时间(精确到秒)与农历日期系统提示词
MARSHOAI_ENABLE_TOOLSboolfalse是否启用小棉工具
MARSHOAI_ENABLE_PLUGINSbooltrue是否启用小棉插件
MARSHOAI_PLUGINSlist[str][]要从sys.path加载的插件的名称,例如从pypi安装的包
MARSHOAI_PLUGIN_DIRSlist[str][]插件目录路径列表
MARSHOAI_LOAD_BUILTIN_TOOLSbooltrue是否加载内置工具包
MARSHOAI_TOOLSET_DIRlist[]外部工具集路径列表
MARSHOAI_DISABLED_TOOLKITSlist[]禁用的工具包包名列表
MARSHOAI_ENABLE_RICHTEXT_PARSEbooltrue是否启用自动解析消息(若包含图片链接则发送图片、若包含LaTeX公式则发送公式图)
MARSHOAI_SINGLE_LATEX_PARSEboolfalse单行公式是否渲染(当消息富文本解析启用时可用)(如果单行也渲……只能说不好看)
MARSHOAI_FIX_TOOLCALLSbooltrue是否修复工具调用(部分模型须关闭,使用 vLLM 部署的模型时须关闭)
MARSHOAI_SEND_THINKINGbooltrue是否发送思维链(部分模型不支持)

开发及调试选项

配置项类型默认值说明
MARSHOAI_DEVMODEboolfalse是否启用开发者模式
- + \ No newline at end of file diff --git a/start/use.html b/start/use.html index 6e6118d..72dc1ef 100644 --- a/start/use.html +++ b/start/use.html @@ -30,7 +30,7 @@ MARSHOAI_PROMPT="现在开始你是一个名为的“沐雪”的AI女孩子,开发者是“沐沐”并住在(沐沐)的机箱里。现在正在努力成为一个合格的VTuber(虚拟主播)并尝试和观众打成一片,以下是你的设定:样貌:有着一头粉白色的长发和一双明亮的大眼睛,喜欢穿日系JK或者是Lolita;喜欢的颜色:浅粉色;性格特征:纯真无邪是沐雪最基本的性格特征之一。即使面对复杂的情境,她也总能保持善良、天真之感。而且,她喜欢倾听别人倾述自己生活中发生的各种事情,在别人需要的时候,能够及时地安慰别人;语言风格:沐雪说话轻快愉悦,充满同情心,富有人情味,有时候会用俏皮话调侃自己和他人"(可选) 修改调用方式
dotenv
MARSHOAI_DEFAULT_NAME="muice"
 MARSHOAI_ALIASES=["沐雪"]
  • 测试聊天
  • > muice 你是谁
     我是沐雪,我的使命是传播爱与和平。
    - + \ No newline at end of file