This commit is contained in:
@ -70,8 +70,8 @@ async def _(msg: UniMsg, evt: Event, bot: Bot, target: DepLongTaskTarget):
|
||||
await target.send_message(res)
|
||||
return
|
||||
|
||||
env = TextHandlerEnvironment(is_trusted=False)
|
||||
results = await runner.run_pipeline(res, istream or None, env)
|
||||
env = TextHandlerEnvironment(is_trusted=False, event=evt)
|
||||
results = await runner.run_pipeline(res, istream or None, evt, env)
|
||||
|
||||
# 检查是否有错误
|
||||
for r in results:
|
||||
|
||||
@ -7,11 +7,13 @@ from string import whitespace
|
||||
from typing import cast
|
||||
|
||||
from loguru import logger
|
||||
from nonebot.adapters import Event
|
||||
|
||||
|
||||
@dataclass
|
||||
class TextHandlerEnvironment:
|
||||
is_trusted: bool
|
||||
event: Event | None = None
|
||||
buffers: dict[str, str] = field(default_factory=dict)
|
||||
|
||||
|
||||
@ -287,7 +289,7 @@ class PipelineRunner:
|
||||
env: TextHandlerEnvironment | None = None,
|
||||
) -> list[TextHandleResult]:
|
||||
if env is None:
|
||||
env = TextHandlerEnvironment(is_trusted=False, buffers={})
|
||||
env = TextHandlerEnvironment(is_trusted=False, event=None, buffers={})
|
||||
|
||||
results: list[TextHandleResult] = []
|
||||
|
||||
|
||||
@ -1,36 +1,51 @@
|
||||
from typing import Any, cast
|
||||
from konabot.common.llm import get_llm
|
||||
from konabot.plugins.handle_text.base import TextHandler, TextHandlerEnvironment, TextHandleResult
|
||||
from konabot.common.permsys import perm_manager
|
||||
from konabot.plugins.handle_text.base import (
|
||||
TextHandler,
|
||||
TextHandlerEnvironment,
|
||||
TextHandleResult,
|
||||
)
|
||||
|
||||
|
||||
class THQwen(TextHandler):
|
||||
name = "qwen"
|
||||
|
||||
async def handle(self, env: TextHandlerEnvironment, istream: str | None, args: list[str]) -> TextHandleResult:
|
||||
async def handle(
|
||||
self, env: TextHandlerEnvironment, istream: str | None, args: list[str]
|
||||
) -> TextHandleResult:
|
||||
pm = perm_manager()
|
||||
if env.event is None or not pm.check_has_permission(env.event, "textfx.qwen"):
|
||||
return TextHandleResult(
|
||||
code=1,
|
||||
ostream="这里暂未开启 AI 功能",
|
||||
)
|
||||
|
||||
llm = get_llm()
|
||||
messages = []
|
||||
|
||||
if istream is not None:
|
||||
messages.append({
|
||||
"role": "user",
|
||||
"content": istream
|
||||
})
|
||||
messages.append({"role": "user", "content": istream})
|
||||
if len(args) > 0:
|
||||
message = ' '.join(args)
|
||||
messages.append({
|
||||
"role": "user",
|
||||
"content": message,
|
||||
})
|
||||
message = " ".join(args)
|
||||
messages.append(
|
||||
{
|
||||
"role": "user",
|
||||
"content": message,
|
||||
}
|
||||
)
|
||||
if len(messages) == 0:
|
||||
return TextHandleResult(
|
||||
code=1,
|
||||
ostream="使用方法:qwen <提示词>",
|
||||
)
|
||||
|
||||
messages = [{
|
||||
"role": "system",
|
||||
"content": "除非用户要求,请尽可能短点回答。另外,当前环境不支持 Markdown 语法,如果可以,请使用纯文本回答"
|
||||
}] + messages
|
||||
messages = [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "除非用户要求,请尽可能短点回答。另外,当前环境不支持 Markdown 语法,如果可以,请使用纯文本回答",
|
||||
}
|
||||
] + messages
|
||||
result = await llm.chat(cast(Any, messages))
|
||||
content = result.content
|
||||
if content is None:
|
||||
|
||||
Reference in New Issue
Block a user