mirror of
https://github.com/LiteyukiStudio/marshoai-melo.git
synced 2025-03-12 20:01:17 +08:00
⬆️ 仅适配melobot3.1.2 (#1)
Co-authored-by: Envision <9063072+elapsingdreams@user.noreply.gitee.com>
This commit is contained in:
parent
da17d5b69d
commit
94ab4984ed
@ -1,11 +1,14 @@
|
|||||||
import traceback
|
import traceback
|
||||||
from azure.ai.inference.aio import ChatCompletionsClient
|
from azure.ai.inference.aio import ChatCompletionsClient
|
||||||
from azure.ai.inference.models import UserMessage, AssistantMessage, TextContentItem, ImageContentItem, ImageUrl, CompletionsFinishReason
|
from azure.ai.inference.models import UserMessage, AssistantMessage, TextContentItem, ImageContentItem, ImageUrl, CompletionsFinishReason
|
||||||
from melobot import Plugin, send_text
|
from melobot import send_text
|
||||||
|
from melobot.handle import on_start_match, on_command
|
||||||
from melobot.log import get_logger
|
from melobot.log import get_logger
|
||||||
from melobot.protocols.onebot.v11 import on_start_match, on_message, on_command, on_notice, on_event, Adapter
|
from melobot.plugin import PluginPlanner
|
||||||
from melobot.protocols.onebot.v11.handle import Args
|
from melobot.protocols.onebot.v11 import on_message, on_notice, on_event, Adapter
|
||||||
from melobot.protocols.onebot.v11.utils import MsgChecker, LevelRole, MsgCheckerFactory, StartMatcher, ParseArgs, Parser
|
from melobot.utils.match import StartMatcher
|
||||||
|
from melobot.utils.parse import Parser, CmdArgs
|
||||||
|
from melobot.protocols.onebot.v11.utils import MsgChecker, LevelRole, MsgCheckerFactory
|
||||||
from melobot.protocols.onebot.v11.adapter.event import MessageEvent, PokeNotifyEvent, GroupMessageEvent, PrivateMessageEvent
|
from melobot.protocols.onebot.v11.adapter.event import MessageEvent, PokeNotifyEvent, GroupMessageEvent, PrivateMessageEvent
|
||||||
from melobot.protocols.onebot.v11.adapter.segment import PokeSegment
|
from melobot.protocols.onebot.v11.adapter.segment import PokeSegment
|
||||||
from azure.core.credentials import AzureKeyCredential
|
from azure.core.credentials import AzureKeyCredential
|
||||||
@ -38,12 +41,12 @@ else:
|
|||||||
logger.info("マルショは、高性能ですから!")
|
logger.info("マルショは、高性能ですから!")
|
||||||
|
|
||||||
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="usermsg")
|
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="usermsg")
|
||||||
async def add_usermsg(event: MessageEvent, args: ParseArgs = Args()):
|
async def add_usermsg(event: MessageEvent, args: CmdArgs):
|
||||||
context.append(UserMessage(content=" ".join(args.vals)).as_dict(), get_target_id(event), event.is_private)
|
context.append(UserMessage(content=" ".join(args.vals)).as_dict(), get_target_id(event), event.is_private)
|
||||||
await send_text("已添加用户消息")
|
await send_text("已添加用户消息")
|
||||||
|
|
||||||
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="assistantmsg")
|
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="assistantmsg")
|
||||||
async def add_assistantmsg(event: MessageEvent, args: ParseArgs = Args()):
|
async def add_assistantmsg(event: MessageEvent, args: CmdArgs):
|
||||||
context.append(AssistantMessage(content=" ".join(args.vals)).as_dict(), get_target_id(event), event.is_private)
|
context.append(AssistantMessage(content=" ".join(args.vals)).as_dict(), get_target_id(event), event.is_private)
|
||||||
await send_text("已添加助手消息")
|
await send_text("已添加助手消息")
|
||||||
|
|
||||||
@ -52,19 +55,19 @@ async def praises():
|
|||||||
await send_text(build_praises())
|
await send_text(build_praises())
|
||||||
|
|
||||||
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="savecontext")
|
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="savecontext")
|
||||||
async def save_context(event: MessageEvent, args: ParseArgs = Args()):
|
async def save_context(event: MessageEvent, args: CmdArgs):
|
||||||
contexts = context.build(get_target_id(event), event.is_private)[1:]
|
contexts = context.build(get_target_id(event), event.is_private)[1:]
|
||||||
await save_context_to_json(" ".join(args.vals), contexts)
|
await save_context_to_json(" ".join(args.vals), contexts)
|
||||||
await send_text("已保存上下文")
|
await send_text("已保存上下文")
|
||||||
|
|
||||||
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="loadcontext")
|
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="loadcontext")
|
||||||
async def load_context(event: MessageEvent, args: ParseArgs = Args()):
|
async def load_context(event: MessageEvent, args: CmdArgs):
|
||||||
context.set_context(await load_context_from_json(" ".join(args.vals)), get_target_id(event), event.is_private)
|
context.set_context(await load_context_from_json(" ".join(args.vals)), get_target_id(event), event.is_private)
|
||||||
await send_text("已加载并覆盖上下文")
|
await send_text("已加载并覆盖上下文")
|
||||||
|
|
||||||
|
|
||||||
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="changemodel")
|
@on_command(checker=superuser_checker, cmd_start="/", cmd_sep=" ", targets="changemodel")
|
||||||
async def changemodel(args: ParseArgs = Args()):
|
async def changemodel(args: CmdArgs):
|
||||||
global model_name
|
global model_name
|
||||||
model_name = args.vals[0]
|
model_name = args.vals[0]
|
||||||
await send_text("已切换")
|
await send_text("已切换")
|
||||||
@ -179,7 +182,12 @@ async def poke(event: PokeNotifyEvent, adapter: Adapter): # 尚未实现私聊
|
|||||||
await adapter.send_custom(str(e)+suggest_solution(str(e)),group_id=event.group_id)
|
await adapter.send_custom(str(e)+suggest_solution(str(e)),group_id=event.group_id)
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
Plugin = PluginPlanner(version = VERSION,
|
||||||
|
flows = [changemodel,marsho,reset,poke,contexts,praises,nickname,add_assistantmsg,add_usermsg,load_context,save_context])
|
||||||
|
|
||||||
|
"""
|
||||||
class MarshoAI(Plugin):
|
class MarshoAI(Plugin):
|
||||||
version = VERSION
|
version = VERSION
|
||||||
flows = [changemodel,marsho,reset,poke,contexts,praises,nickname,add_assistantmsg,add_usermsg,load_context,save_context]
|
flows = [changemodel,marsho,reset,poke,contexts,praises,nickname,add_assistantmsg,add_usermsg,load_context,save_context]
|
||||||
|
"""
|
@ -1,7 +1,11 @@
|
|||||||
from melobot.protocols.onebot.v11.adapter.event import Event, MessageEvent, PokeNotifyEvent
|
from melobot.protocols.onebot.v11.adapter.event import Event, MessageEvent, PokeNotifyEvent
|
||||||
from melobot.protocols.onebot.v11.utils import MsgChecker, LevelRole, MsgCheckerFactory, StartMatcher, ParseArgs, Checker
|
from melobot.protocols.onebot.v11.utils import MsgChecker, LevelRole, MsgCheckerFactory
|
||||||
from melobot.protocols.onebot.v11.adapter.segment import PokeRecvSegment
|
from melobot.protocols.onebot.v11.adapter.segment import PokeRecvSegment
|
||||||
|
|
||||||
|
from melobot.utils.parse import CmdArgs
|
||||||
|
from melobot.utils.match import StartMatcher
|
||||||
|
from melobot.utils.check import Checker
|
||||||
|
|
||||||
from .config import Config
|
from .config import Config
|
||||||
from .extra_segment import TouchSegment
|
from .extra_segment import TouchSegment
|
||||||
config = Config()
|
config = Config()
|
||||||
|
@ -14,6 +14,12 @@ from .config import Config
|
|||||||
from .constants import PLUGIN_NAME
|
from .constants import PLUGIN_NAME
|
||||||
config = Config()
|
config = Config()
|
||||||
store = PluginStore(PLUGIN_NAME)
|
store = PluginStore(PLUGIN_NAME)
|
||||||
|
|
||||||
|
# 时间参数相关
|
||||||
|
if config.marshoai_enable_time_prompt:
|
||||||
|
_weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
|
||||||
|
_time_prompt = "现在的时间是{date_time}{weekday_name},{lunar_date}。"
|
||||||
|
|
||||||
async def get_image_b64(url):
|
async def get_image_b64(url):
|
||||||
headers = {
|
headers = {
|
||||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
|
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
|
||||||
@ -118,10 +124,15 @@ def get_prompt():
|
|||||||
praises_prompt = build_praises()
|
praises_prompt = build_praises()
|
||||||
prompts += praises_prompt
|
prompts += praises_prompt
|
||||||
if config.marshoai_enable_time_prompt:
|
if config.marshoai_enable_time_prompt:
|
||||||
current_time = datetime.now().strftime('%Y.%m.%d %H:%M:%S')
|
prompts += _time_prompt.format(
|
||||||
current_lunar_date = DateTime.now().to_lunar().date_hanzify()[5:] #库更新之前使用切片
|
date_time=(current_time := DateTime.now()).strftime(
|
||||||
time_prompt = f"现在的时间是{current_time},农历{current_lunar_date}。"
|
"%Y年%m月%d日 %H:%M:%S"
|
||||||
prompts += time_prompt
|
),
|
||||||
|
weekday_name=_weekdays[current_time.weekday()],
|
||||||
|
lunar_date=current_time.chinesize.date_hanzify(
|
||||||
|
"农历{干支年}{生肖}年{月份}月{数序日}"
|
||||||
|
),
|
||||||
|
)
|
||||||
marsho_prompt = config.marshoai_prompt
|
marsho_prompt = config.marshoai_prompt
|
||||||
spell = SystemMessage(content=marsho_prompt+prompts).as_dict()
|
spell = SystemMessage(content=marsho_prompt+prompts).as_dict()
|
||||||
return spell
|
return spell
|
||||||
|
Loading…
x
Reference in New Issue
Block a user