2025-02-23 17:20:03 +00:00
<!DOCTYPE html>
< html lang = "zh-Hans" dir = "ltr" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< title > handler | 小棉智能< / title >
< meta name = "description" content = "可爱,智能且易扩展" >
< meta name = "generator" content = "VitePress v1.6.3" >
< link rel = "preload stylesheet" href = "/assets/style.D3Dv6-VO.css" as = "style" >
< link rel = "preload stylesheet" href = "/vp-icons.css" as = "style" >
< script type = "module" src = "/assets/app.Bm81FM0X.js" > < / script >
< link rel = "preload" href = "/assets/inter-roman-latin.Di8DUHzh.woff2" as = "font" type = "font/woff2" crossorigin = "" >
< link rel = "modulepreload" href = "/assets/chunks/theme.Drrxv7eQ.js" >
< link rel = "modulepreload" href = "/assets/chunks/framework.BHrE6nLq.js" >
2025-02-25 16:48:37 +00:00
< link rel = "modulepreload" href = "/assets/dev_api_handler.md.7K28NkFk.lean.js" >
2025-02-23 17:20:03 +00:00
< link rel = "icon" type = "image/x-icon" href = "/favicon.ico" >
< script id = "check-dark-mode" > ( ( ) => { const e = localStorage . getItem ( "vitepress-theme-appearance" ) || "auto" , a = window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches ; ( ! e || e === "auto" ? a : e === "dark" ) && document . documentElement . classList . add ( "dark" ) } ) ( ) ; < / script >
< script id = "check-mac-os" > document . documentElement . classList . toggle ( "mac" , /Mac|iPhone|iPod|iPad/i . test ( navigator . platform ) ) ; < / script >
< / head >
< body >
< div id = "app" > < div class = "Layout" data-v-ccce0ce3 > <!-- [ --> <!-- ] --> <!-- [ --> < span tabindex = "-1" data-v-0081c16f > < / span > < a href = "#VPContent" class = "VPSkipLink visually-hidden" data-v-0081c16f > Skip to content< / a > <!-- ] --> <!-- --> < header class = "VPNav" data-v-ccce0ce3 data-v-d13fd7d1 > < div class = "VPNavBar" data-v-d13fd7d1 data-v-396224e0 > < div class = "wrapper" data-v-396224e0 > < div class = "container" data-v-396224e0 > < div class = "title" data-v-396224e0 > < div class = "VPNavBarTitle has-sidebar" data-v-396224e0 data-v-6f0cb5b8 > < a class = "title" href = "/" data-v-6f0cb5b8 > <!-- [ --> <!-- ] --> <!-- [ --> <!-- [ --> <!-- [ --> < img class = "VPImage dark logo" src = "/marsho-full.svg" alt = "Marsho Logo" data-v-36791208 > <!-- ] --> <!-- [ --> < img class = "VPImage light logo" src = "/marsho-full.svg" alt = "Marsho Logo" data-v-36791208 > <!-- ] --> <!-- ] --> <!-- ] --> < span data-v-6f0cb5b8 > 小棉智能< / span > <!-- [ --> <!-- ] --> < / a > < / div > < / div > < div class = "content" data-v-396224e0 > < div class = "content-body" data-v-396224e0 > <!-- [ --> <!-- ] --> < div class = "VPNavBarSearch search" data-v-396224e0 > <!-- --> < / div > < nav aria-labelledby = "main-nav-aria-label" class = "VPNavBarMenu menu" data-v-396224e0 data-v-d075dbeb > < span id = "main-nav-aria-label" class = "visually-hidden" data-v-d075dbeb > Main Navigation < / span > <!-- [ --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/" tabindex = "0" data-v-d075dbeb data-v-374c8176 > <!-- [ --> < span data-v-374c8176 > 家< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/start/use" tabindex = "0" data-v-d075dbeb data-v-374c8176 > <!-- [ --> < span data-v-374c8176 > 使用< / span > <!-- ] --> < / a > <!-- ] --> <!-- [ --> < a class = "VPLink link VPNavBarMenuLink" href = "/dev/extension" tabindex = "0" data-v-d075dbeb data-v-374c8176 > <!-- [ --> < span data-v-374c8176 > 开发< / span > <!-- ] --> < / a > <!-- ] --> <!-- ] --> < / nav > < div class = "VPFlyout VPNavBarTranslations translations" data-v-396224e0 data-v-26b0fe7c data-v-a5424910 > < button type = "button" class = "button" aria-haspopup = "true" aria-expanded = "false" aria-label = "语言" data-v-a5424910 > < span class = "text" data-v-a5424910 > < span class = "vpi-languages option-icon" data-v-a5424910 > < / span > <!-- --> < span class = "vpi-chevron-down text-icon" data-v-a5424910 > < / span > < / span > < / button > < div class = "menu" data-v-a5424910 > < div class = "VPMenu" data-v-a5424910 data-v-ea736d26 > <!-- --> <!-- [ --> <!-- [ --> < div class = "items" data-v-26b0fe7c > < p class = "title" data-v-26b0fe7c > 简体中文< / p > <!-- [ --> < div class = "VPMenuLink" data-v-26b0fe7c data-v-6e854c21 > < a class = "VPLink link" href = "/en/dev/api/handler" data-v-6e854c21 > <!-- [ --> < span data-v-6e854c21 > English< / span > <!-- ] --> < / a > < / div > < div class = "VPMenuLink" data-v-26b0fe7c data-v-6e854c21 > < a class = "VPLink link" href = "/ja/dev/api/handler" data-v-6e854c21 > <!-- [ --> < span data-v-6e854c21 > 日本語< / span > <!-- ] --> < / a > < / div > <!-- ] --> < / div > <!-- ] --> <!-- ] --> < / div > < / div > < / div > < div class = "VPNavBarAppearance appearance" data-v-396224e0 data-v-e3ac69c8 > < button class = "VPSwitch VPSwitchAppearance" type = "button" role = "switch" title aria-checked = "false" data-v-e3ac69c8 data-v-5ef58a54 data-v-f7131ce1 > < span class = "check" data-v-f7131ce1 > < span class = "icon" data-v-f7131ce1 > <!-- [ --> < span class = "vpi-sun sun" data-v-5ef58a54 > < / span > < span class = "vpi-moon moon" data-v-5ef58a54 > < / span > <!-- ] --> < / span > < / span > < / button > < / div > < div class = "VPSocialLinks VPNavBarSocialLinks social-links" data-v-396224e0 data-v-51a44f24 data-v-760f3887 > <!-- [ --> < a class = "VPSocialLink no-icon" href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai" aria-label = "github" target = "_blank" rel = "noopener" data-v-760f3887 data-v-cb626a4c > < span class = "vpi-social-github" > < / span > < / a > < a class = "VPSocialLink no-icon" href = "https://git.liteyuki.icu/LiteyukiStudio/nonebot-plugin-marshoai" aria-label target = "_blank" rel = "noopener" data-v-760f3887 data-v-cb626a4c > < svg t = "1725391346807" class = "icon" viewBox = "0 0 1025 1024" version = "1.1" xmlns = "http://www.w3.org/2000/svg" p-id = "5067" width = "256" height = "256" > < path d = "M1004.692673 466 . 396616l-447 . 094409-447 . 073929c-25 . 743103-25 . 763582-67 . 501405-25 . 763582-93 . 264987 0l-103 . 873521 103 . 873521 78 . 171378 78 . 171378c12 . 533635-6 . 00058 26 . 562294-9 . 359266 41
< span class = "line" > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .client < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > client< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .context < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .bot: Bot < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > current_bot.get()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .event: Event < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > current_event.get()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .matcher: Matcher < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > current_matcher.get()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .message_id: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage.get_message_id(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .event)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .target < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage.get_target(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .event)< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h4 id = "async-func-process-user-input-self-user-input-unimsg-model-name-str-union-str-list" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > process_user_input(self, user_input: UniMsg, model_name: str) -> Union[str, list]< / code > < a class = "header-anchor" href = "#async-func-process-user-input-self-user-input-unimsg-model-name-str-union-str-list" aria-label = "Permalink to "***async func*** `process_user_input(self, user_input: UniMsg, model_name: str) -> Union[str, list]`"" > < / a > < / h4 > < p > < strong > 说明< / strong > : 处理用户输入为可输入 API 的格式,并添加昵称提示< / p > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/handler.py#L55" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > process_user_input< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (self, user_input: UniMsg, model_name: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) -> Union[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_support_image_model < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name.lower() < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > SUPPORT_IMAGE_MODELS< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_additional_image_models< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_support_image_model < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_nickname < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_nickname_by_user_id(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .event.get_user_id())< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_nickname:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_prompt < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > 此消息的说话者为: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_nickname< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_prompt < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' ' < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > i < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_input:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > i.type < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' text' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_support_image_model:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [TextContentItem(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > text< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > i.data[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' text' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_prompt).as_dict()]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +=< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (i.data[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' text' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > nickname_prompt)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > elif< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > i.type < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' image' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > is_support_image_model:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg.append(ImageContentItem(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > image_url< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ImageUrl(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > url< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_image_b64(i.data[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' url' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ])))).as_dict())< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.info(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " 输入图片 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > i.data[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' url' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > elif< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_enable_support_image_tip:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' *此模型不支持图片处理或管理员未启用此模型的图片支持。图片将被忽略。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > usermsg< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h4 id = "async-func-handle-single-chat-self-user-message-union-str-list-model-name-str-tools-list-list-tool-message-optional-list-none-chatcompletion" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > handle_single_chat(self, user_message: Union[str, list], model_name: str, tools_list: list, tool_message: Optional[list] = None) -> ChatCompletion< / code > < a class = "header-anchor" href = "#async-func-handle-single-chat-self-user-message-union-str-list-model-name-str-tools-list-list-tool-message-optional-list-none-chatcompletion" aria-label = "Permalink to "***async func*** `handle_single_chat(self, user_message: Union[str, list], model_name: str, tools_list: list, tool_message: Optional[list] = None) -> ChatCompletion`"" > < / a > < / h4 > < p > < strong > 说明< / strong > : 处理单条聊天< / p > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/handler.py#L93" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > handle_single_chat< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (self, user_message: Union[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ], model_name: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , tools_list: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , tool_message: Optional[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ) -> ChatCompletion:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context_msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_prompt(model_name) < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .context.build(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .target.id, < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .target.private)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > make_chat_openai(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > client< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .client, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > msg< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > context_msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [UserMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_message).as_dict()] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (tool_message < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_message < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > []), < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > model_name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tools< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tools_list < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tools_list < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h4 id = "async-func-handle-function-call-self-completion-chatcompletion-user-message-union-str-list-model-name-str-tools-list-list" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > handle_function_call(self, completion: ChatCompletion, user_message: Union[str, list], model_name: str, tools_list: list)< / code > < a class = "header-anchor" href = "#async-func-handle-function-call-self-completion-chatcompletion-user-message-union-str-list-model-name-str-tools-list-list" aria-label = "Permalink to "***async func*** `handle_function_call(self, completion: ChatCompletion, user_message: Union[str, list], model_name: str, tools_list: list)`"" > < / a > < / h4 > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/handler.py#L115" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > handle_function_call< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (self, completion: ChatCompletion, user_message: Union[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ], model_name: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , tools_list: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_msg < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > []< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > completion.choices[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_calls < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.message.tool_calls< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_msg.append(choice.message)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_calls:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > try< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.loads(tool_call.function.arguments)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > except< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.JSONDecodeError:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > json.loads(tool_call.function.arguments.replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " ' " < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' " ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' placeholder' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > del< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args[< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' placeholder' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.info(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " 调用函数 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call.function.name.replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' -' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' .' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }\n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > 参数:" < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .join([< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > k< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > v< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > k, v < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args.items()]))< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " 调用函数 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call.function.name.replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' -' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' .' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }\n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > 参数:" < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .join([< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > k< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > v< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > for< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > k, v < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args.items()])).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (caller < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > :=< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > get_function_calls().get(tool_call.function.name)):< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.debug(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 调用插件函数 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > caller.full_name< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
2025-02-25 16:48:37 +00:00
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > func_return < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > caller.with_ctx(SessionContext(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > bot< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .bot, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > event< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .event, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > matcher< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .matcher, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > state< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )).call(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > **< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > function_args)< / span > < / span >
2025-02-23 17:20:03 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.error(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " 未找到函数 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call.function.name.replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' -' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' .' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > func_return < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " 未找到函数 < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call.function.name.replace(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' -' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' .' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > " < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_msg.append(ToolMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tool_call_id< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_call.id, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > func_return).as_dict())< / span > < / span >
2025-02-25 16:48:37 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .handle_common_chat(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > user_message< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_message, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > model_name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tools_list< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tools_list, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tool_message< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_msg)< / span > < / span > < / code > < / pre > < / div > < / details > < hr > < h4 id = "async-func-handle-common-chat-self-user-message-union-str-list-model-name-str-tools-list-list-stream-bool-false-tool-message-optional-list-none-optional-tuple-usermessage-chatcompletionmessage" tabindex = "-1" > < em > < strong > async func< / strong > < / em > < code > handle_common_chat(self, user_message: Union[str, list], model_name: str, tools_list: list, stream: bool = False, tool_message: Optional[list] = None) -> Optional[Tuple[UserMessage, ChatCompletionMessage]]< / code > < a class = "header-anchor" href = "#async-func-handle-common-chat-self-user-message-union-str-list-model-name-str-tools-list-list-stream-bool-false-tool-message-optional-list-none-optional-tuple-usermessage-chatcompletionmessage" aria-label = "Permalink to "***async func*** `handle_common_chat(self, user_message: Union[str, list], model_name: str, tools_list: list, stream: bool = False, tool_message: Optional[list] = None) -> Optional[Tuple[UserMessage, ChatCompletionMessage]]`"" > < / a > < / h4 > < p > < strong > 说明< / strong > : 处理一般聊天< / p > < details > < summary > < b > 源代码< / b > 或 < a href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai/handler.py#L181" target = "_blank" > 在GitHub上查看< / a > < / summary > < div class = "language-python vp-adaptive-theme" > < button title = "Copy Code" class = "copy" > < / button > < span class = "lang" > python< / span > < pre class = "shiki shiki-themes github-light github-dark vp-code" tabindex = "0" > < code > < span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > async< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > def< / span > < span style = "--shiki-light:#6F42C1;--shiki-dark:#B392F0;" > handle_common_chat< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (self, user_message: Union[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ], model_name: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , tools_list: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , stream: < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > bool< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > False< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > , tool_message: Optional[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > list< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span styl
2025-02-23 17:20:03 +00:00
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > global< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_list< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > stream:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > raise< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > NotImplementedError< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .handle_single_chat(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > user_message< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_message, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > model_name< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > model_name, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tools_list< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tools_list, < / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > tool_message< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > tool_message)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > response.choices[< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > 0< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ]< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.message.tool_calls < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > is< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > and< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_fix_toolcalls:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.finish_reason < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' tool_calls' < / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > logger.info(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 完成原因:< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.finish_reason< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.finish_reason < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CompletionsFinishReason.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > STOPPED< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice_msg_content, choice_msg_thinking, choice_msg_after < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > extract_content_and_think(choice.message)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice_msg_thinking < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > and< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_send_thinking:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 思维链:< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > \n< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > +< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice_msg_thinking).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > [< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .target.id, < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .target.private] < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > not< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > in< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_list:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > target_list.append([< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .target.id, < / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .target.private])< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > if< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > config.marshoai_enable_richtext_parse:< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > parse_richtext(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (choice_msg_content))).send(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > reply_to< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > True< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > str< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (choice_msg_content)).send(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > reply_to< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > True< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > (UserMessage(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > content< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > user_message), choice_msg_after)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > elif< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.finish_reason < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CompletionsFinishReason.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > CONTENT_FILTERED< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' *已被内容过滤器过滤。请调整聊天内容后重试。' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).send(< / span > < span style = "--shiki-light:#E36209;--shiki-dark:#FFAB70;" > reply_to< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > =< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > True< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > )< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > elif< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.finish_reason < / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > ==< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > CompletionsFinishReason.< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > TOOL_CALLS< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > self< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > .handle_function_call(response, user_message, model_name, tools_list)< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > else< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > :< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > await< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > UniMessage(< / span > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > f< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' 意外的完成原因:< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > {< / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > choice.finish_reason< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > }< / span > < span style = "--shiki-light:#032F62;--shiki-dark:#9ECBFF;" > ' < / span > < span style = "--shiki-light:#24292E;--shiki-dark:#E1E4E8;" > ).send()< / span > < / span >
< span class = "line" > < span style = "--shiki-light:#D73A49;--shiki-dark:#F97583;" > return< / span > < span style = "--shiki-light:#005CC5;--shiki-dark:#79B8FF;" > None< / span > < / span > < / code > < / pre > < / div > < / details > < / div > < / div > < / main > < footer class = "VPDocFooter" data-v-a3c3f4df data-v-996ec864 > <!-- [ --> <!-- ] --> < div class = "edit-info" data-v-996ec864 > < div class = "edit-link" data-v-996ec864 > < a class = "VPLink link vp-external-link-icon no-icon edit-link-button" href = "https://github.com/LiteyukiStudio/nonebot-plugin-marshoai/tree/main/nonebot_plugin_marshoai//handler.py" target = "_blank" rel = "noreferrer" data-v-996ec864 > <!-- [ --> < span class = "vpi-square-pen edit-link-icon" data-v-996ec864 > < / span > 编辑此页面<!-- ] --> < / a > < / div > <!-- --> < / div > < nav class = "prev-next" aria-labelledby = "doc-footer-aria-label" data-v-996ec864 > < span class = "visually-hidden" id = "doc-footer-aria-label" data-v-996ec864 > Pager< / span > < div class = "pager" data-v-996ec864 > < a class = "VPLink link pager-link prev" href = "/dev/api/dev" data-v-996ec864 > <!-- [ --> < span class = "desc" data-v-996ec864 > 上一页< / span > < span class = "title" data-v-996ec864 > dev< / span > <!-- ] --> < / a > < / div > < div class = "pager" data-v-996ec864 > < a class = "VPLink link pager-link next" href = "/dev/api/hooks" data-v-996ec864 > <!-- [ --> < span class = "desc" data-v-996ec864 > 下一页< / span > < span class = "title" data-v-996ec864 > hooks< / span > <!-- ] --> < / a > < / div > < / nav > < / footer > <!-- [ --> <!-- ] --> < / div > < / div > < / div > <!-- [ --> <!-- ] --> < / div > < / div > < footer class = "VPFooter has-sidebar" data-v-ccce0ce3 data-v-1b280c66 > < div class = "container" data-v-1b280c66 > < p class = "message" data-v-1b280c66 > 文档完善中,欢迎提出建议或帮助我们完善。< / p > < p class = "copyright" data-v-1b280c66 > © 2024 < a href = "https://liteyuki.icu" target = "_blank" > Liteyuki Studio< / a > < / p > < / div > < / footer > <!-- [ --> <!-- ] --> < / div > < / div >
2025-02-25 16:48:37 +00:00
< script > w i n d o w . _ _ V P _ H A S H _ M A P _ _ = J S O N . p a r s e ( " { \ " d e v _ a p i _ _ t y p e s . m d \ " : \ " C g O i M Y M Z \ " , \ " d e v _ a p i _ a z u r e . m d \ " : \ " D P J g w g 8 P \ " , \ " d e v _ a p i _ a z u r e _ o n e b o t . m d \ " : \ " O V m c n T u i \ " , \ " d e v _ a p i _ c a c h e _ d e c o s . m d \ " : \ " D 3 M 8 O C r j \ " , \ " d e v _ a p i _ c o n f i g . m d \ " : \ " D c x F 3 k I 3 \ " , \ " d e v _ a p i _ c o n s t a n t s . m d \ " : \ " K 2 d 7 o h d J \ " , \ " d e v _ a p i _ d e a l _ l a t e x . m d \ " : \ " D Y N t c u K _ \ " , \ " d e v _ a p i _ d e v . m d \ " : \ " F S v s h T e f \ " , \ " d e v _ a p i _ h a n d l e r . m d \ " : \ " 7 K 2 8 N k F k \ " , \ " d e v _ a p i _ h o o k s . m d \ " : \ " D T g Z a b u U \ " , \ " d e v _ a p i _ h u n y u a n . m d \ " : \ " C 1 z t L h e v \ " , \ " d e v _ a p i _ i n d e x . m d \ " : \ " B 0 Y j l e t 9 \ " , \ " d e v _ a p i _ i n s t a n c e s . m d \ " : \ " D f M e p U b m \ " , \ " d e v _ a p i _ m a r s h o . m d \ " : \ " B V r C 2 I d 2 \ " , \ " d e v _ a p i _ m a r s h o _ o n e b o t . m d \ " : \ " J I - l v r 2 Y \ " , \ " d e v _ a p i _ m e t a d a t a . m d \ " : \ " B g f x A 1 4 H \ " , \ " d e v _ a p i _ m o d e l s . m d \ " : \ " - g H p V I q _ \ " , \ " d e v _ a p i _ o b s e r v e r . m d \ " : \ " C s l E j x M R \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ c a l l e r . m d \ " : \ " C Z 2 V F 4 I b \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ i n d e x . m d \ " : \ " B Q V - n B x m \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ m o d e l s . m d \ " : \ " D M 4 U u G q M \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ p a r a m s . m d \ " : \ " N 1 5 Y O Q U a \ " , \ " d e v _ a p i _ p l u g i n _ f u n c _ c a l l _ u t i l s . m d \ " : \ " C x Q q E _ U Y \ " , \ " d e v _ a p i _ p l u g i n _ i n d e x . m d \ " : \ " B 5 g s c F M g \ " , \ " d e v _ a p i _ p l u g i n _ l o a d . m d \ " : \ " B u T X R d Y G \ " , \ " d e v _ a p i _ p l u g i n _ m o d e l s . m d \ " : \ " C R g 2 e 9 m i \ " , \ " d e v _ a p i _ p l u g i n _ r e g i s t e r . m d \ " : \ " C W y 7 E f m w \ " , \ " d e v _ a p i _ p l u g i n _ t y p i n g . m d \ " : \ " E D 6 D x N x p \ " , \ " d e v _ a p i _ p l u g i n _ u t i l s . m d \ " : \ " C M R m 7 O 6 G \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ c h a t . m d \ " : \ " B y v 2 I e q q \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ f i l e _ i o . m d \ " : \ " q i 0 a k 0 S _ \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ i n d e x . m d \ " : \ " Q u k B y U Q e \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ l i t e y u k i . m d \ " : \ " B 2 d l 2 s n u \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ m a n a g e r . m d \ " : \ " C W 5 z M d v A \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ n e t w o r k . m d \ " : \ " B Q 5 u 3 O _ - \ " , \ " d e v _ a p i _ p l u g i n s _ b u i l t i n _ t o o l s _ u t i l s . m d \ " : \ " B 8 l 7 R d q 0 \ " , \ " d e v _ a p i _ p l u g i n s _ m a r s h o a i _ b a n g u m i _ i n d e x . m d \ " : \ " B d 6 l X 9 M 1 \ " , \ " d e v _ a p i _ p l u g i n s _ m a r s h o a i _ b a s i c _ i n d e x . m d \ " : \ " y 9 6 r W v 2 R \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ b a s i c _ i n d e x . m d \ " : \ " B D w B d b m P \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ m e m o r y _ c o m m a n d . m d \ " : \ " C k - 8 f z s k \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ m e m o r y _ c o n f i g . m d \ " : \ " C Y f I F d 1 g \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ m a r s h o a i _ m e m o r y _ i n d e x . m d \ " : \ " Y N F 8 w w b B \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ r a n d o m _ n u m b e r _ g e n e r a t o r . m d \ " : \ " B h m _ P C c b \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ s n o w y k a m i _ t e s t p l u g i n _ i n d e x . m d \ " : \ " Z P I h g m y b \ " , \ " d e v _ a p i _ p l u g i n s _ t e s t _ w e a t h e r _ d e m o . m d \ " : \ " C r u 2 W q m 2 \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ m e g a k i t s _ i n d e x . m d \ " : \ " D I 9 E W X B B \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ m e g a k i t s _ m k _ m o r s e _ c o d e . m d \ " : \ " C k f 6 K 2 z J \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ m e g a k i t s _ m k _ n y a _ c o d e . m d \ " : \ " D g 4 X k 3 v T \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ i n d e x . m d \ " : \ " O D _ V N H j o \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ c a t . m d \ " : \ " D P s q 6 l k r \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ i n f o . m d \ " : \ " C i d 9 K Y l k \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ s h o p . m d \ " : \ " C e G n e F _ E \ " , \ " d e v _ a p i _ p l u g i n s _ t w i s u k i _ p e t c a t _ p c _ t o k e n . m d \ " : \ " D l 6 f F - F l \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ b a n g u m i _ i n d e x . m d \ " : \ " 5 4 Z N Y O 7 i \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ b a s i c _ i n d e x . m d \ " : \ " D 9 R q U n I 7 \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ i n d e x . m d \ " : \ " C 9 J I o 3 L D \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ c o m m o n . m d \ " : \ " d b g B k V z E \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ i n f o . m d \ " : \ " C V 2 i b M r 4 \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ m o r s e _ c o d e . m d \ " : \ " C 6 n Z U y Z x \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e g a k i t s _ m k _ n y a _ c o d e . m d \ " : \ " C 4 A h L x O Y \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e m o r y _ i n d e x . m d \ " : \ " 0 4 y m i Q _ Y \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ i n d e x . m d \ " : \ " C Q Z U P W O H \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ m g _ i n f o . m d \ " : \ " C m x 9 2 f U z \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ m g _ i n t r o d u c e . m d \ " : \ " B Y 2 M S E r Z \ " , \ " d e v _ a p i _ t o o l s _ m a r s h o a i _ m e o g i r l _ m g _ s e a r c h . m d \ " : \ " O Q f O K E E - \ " , \ " d e v _ a p i _ t o o l s _ w i p _ m a r s h o a i _ m e m o r y _ i n d e x . m d \ " : \ " D L v D o r _ 0 \ " , \ " d e v _ a p i _ u t i l . m d \ " : \ " B _ x q G 6 s 0 \ " , \ " d e v _ a p i _ u t i l _ h u n y u a n . m d \ " : \ " b Y o _ q 2 c Q \ " , \ " d e v _ e x t e n s i o n . m d \ " : \ " B h z 7 x 0 y K \ " , \ " d e v _ i n d e x . m d \ " : \ " B 2 i m e 9 1 x \ " , \ " d e v _ p r o j e c t . m d \ " : \ " D T S Y x i r J \ " , \ " e n _ d e v _ a p i _ _ t y p e s . m d \ " : \ " D W A b m l X N \ " , \ " e n _ d e v _ a p i _ a z u r e . m d \ " : \ " B R F C z - - d \ " , \ " e n _ d e v _ a p i _ a z u r e _ o n e b o t . m d \ " : \ " C 1 a z Z V k H \ " , \ " e n _ d e v _ a p i _ c a c h e _ d e c o s . m d \ " : \ " D v n N 6 _ p g \ " , \ " e n _ d e v _ a p i _ c o n f i g . m d \ " : \ " L I Y g w J Q g \ " , \ " e n _ d e v _ a p i _ c o n s t a n t s . m d \ " : \ " D V u 3 - 9 P Z \ " , \ " e n _ d e v _ a p i _ d e a l _ l a t e x . m d \ " : \ " C z 8 U d 9 U 7 \ " , \ " e n _ d e v _ a p i _ d e v . m d \ " : \ " r u l E z E X H \ " , \ " e n _ d e v _ a p i _ h a n d l e r . m d \ " : \ " C B a 5 C Z K K \ " , \ " e n _ d e v _ a p i _ h o o k s . m d \ " : \ " B _ 8 V a 9 i z \ " , \ " e n _ d e v _ a p i _ h u n y u a n . m d \ " : \ " B i A o O o o - \ " , \ " e n _ d e v _ a p i _ i n d e x . m d \ " : \ " C J C O q o p E \ " , \ " e n _ d e v _ a p i _ i n s t a n c e
2025-02-23 17:20:03 +00:00
< / body >
< / html >