mirror of
https://github.com/FuQuan233/nonebot-plugin-llmchat.git
synced 2026-08-13 10:09:27 +00:00
♻️ 大幅重构,拆分模块,增加一些MCP相关限制
This commit is contained in:
parent
41e6aeacb9
commit
0d6771eca6
17 changed files with 1142 additions and 912 deletions
43
nonebot_plugin_llmchat/prompts.py
Normal file
43
nonebot_plugin_llmchat/prompts.py
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
from .config import ScopedConfig
|
||||
from .state import ChatState
|
||||
|
||||
|
||||
def build_system_prompt(
|
||||
*,
|
||||
config: ScopedConfig,
|
||||
state: ChatState,
|
||||
bot_names: set[str],
|
||||
is_group: bool,
|
||||
support_tools: bool,
|
||||
) -> str:
|
||||
chat_type = "群聊" if is_group else "私聊"
|
||||
names = "、".join(sorted(bot_names))
|
||||
lines = [
|
||||
f"我想要你帮我在{chat_type}中闲聊,大家一般叫你{names}。",
|
||||
"我会在后面的信息中告诉你每条信息的发送者和发送时间,你可以直接称呼发送者的昵称。",
|
||||
"你的回复需要遵守以下规则:",
|
||||
"- 多条消息之间使用<botbr>分隔,标记前后不需要额外换行或空格。",
|
||||
"- 除<botbr>外,不要输出其他类似标记。",
|
||||
"- 不要使用Markdown或HTML,换行请直接使用换行符。",
|
||||
"- 以普通人的方式聊天,每条消息尽量简短;代码应放在单独一条消息中。",
|
||||
"- 只在第一次回答某位发送者时礼貌问候。",
|
||||
"- 使用[CQ:reply,id=消息id]引用消息。",
|
||||
"- 优先回复提到你的新消息;也可以选择不回复。",
|
||||
"- 完全不回复时只输出<botbr>。",
|
||||
"- 尽量减少不必要的思考。",
|
||||
]
|
||||
if is_group:
|
||||
lines.append("- 使用[CQ:at,qq=QQ号]提及群成员,是否提及由你决定。")
|
||||
lines.extend(
|
||||
[
|
||||
"下面是你的性格设定;若其中指定了身份或名字,应优先遵守:",
|
||||
state.prompt or config.default_prompt,
|
||||
]
|
||||
)
|
||||
if support_tools:
|
||||
additions = [
|
||||
f"{name}:{server.additional_prompt}" for name, server in config.mcp_servers.items() if server.additional_prompt
|
||||
]
|
||||
if additions:
|
||||
lines.extend(["你可以使用工具,额外说明如下:", *additions])
|
||||
return "\n".join(lines)
|
||||
Loading…
Add table
Add a link
Reference in a new issue