45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from typing import Any, cast
|
||
from konabot.common.llm import get_llm
|
||
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:
|
||
llm = get_llm()
|
||
messages = []
|
||
|
||
if istream is not None:
|
||
messages.append({
|
||
"role": "user",
|
||
"content": istream
|
||
})
|
||
if len(args) > 0:
|
||
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
|
||
result = await llm.chat(cast(Any, messages))
|
||
content = result.content
|
||
if content is None:
|
||
return TextHandleResult(
|
||
code=500,
|
||
ostream="问 AI 的时候发生了未知的错误",
|
||
)
|
||
return TextHandleResult(
|
||
code=0,
|
||
ostream=content,
|
||
)
|