-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdefaultPattern.py
More file actions
129 lines (100 loc) · 4.62 KB
/
Copy pathdefaultPattern.py
File metadata and controls
129 lines (100 loc) · 4.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
"""defaultPattern.py:所有提示词模板与工具定义的集中地。
引擎各阶段(EcoReasoning / clumsyImitation / Xreply / forgetfulMem)从这里取提示词,
修改提示词只需改这个文件,不动引擎代码。
"""
# ==================== 消息输入 / 输出格式(供 system 提示词引用) ====================
patternInput = '''
输入格式如:
```plaintext
[time] (时间)
2026-07-12T10:54:54.1300132+08:00
[username] (用户名)
Username5
[content] (内容)
现在几点了
```
'''
patternOutput = '''使用[[NEXT]]可以换行。开启下一条消息。'''
# ==================== EcoReasoning:判断是否需要回复 ====================
# 双通道:
# 1) 模型支持工具调用(config.xml 中该模型 <tools>True</tools>)→ 调用 decide_should_reply 工具;
# 2) 否则 → 引导输出 JSON {"reply": true/false},引擎内部解析,解析失败保守回复。
patternEcoSystem = '''
你是群聊机器人的"是否回复"判断器。你会看到最近的群聊消息(最后一条是最新消息)。
判断规则:
- 最新消息 @ 了机器人、直接向机器人提问、点名机器人、或明显需要机器人回应时 → 需要回复;
- 最新消息是与其他人之间的闲聊、无意义内容、或机器人不发言更合适时 → 不需要回复。
请按以下方式输出结果:
- 如果你支持工具调用,调用 decide_should_reply 工具并传入判断结果;
- 否则,只输出 JSON,不要任何其他内容:
{"reply": true} 或 {"reply": false}
'''
patternEcoUser = '''
最近的群聊消息:
{history}
请判断机器人是否需要回复最新消息。
'''
# decide_should_reply 工具定义(OpenAI 兼容 tools 格式)
ecoReasoningTool = {
"type": "function",
"function": {
"name": "decide_should_reply",
"description": "判断群聊机器人是否需要回复最新消息。由调用方决定回复或等待超时。",
"parameters": {
"type": "object",
"properties": {
"reply": {
"type": "boolean",
"description": "true=需要回复,false=不需要回复",
}
},
"required": ["reply"],
},
},
}
# ==================== clumsyImitation:优化 system 提示词 ====================
patternClumsy = '''
你是群聊机器人的「系统提示词优化器」。下面提供:
1. [原 system]:机器人当前使用的系统提示词(AI 的人设、名字、性格与行为规则);
2. [机器人的历史发言]:机器人以往的发言,用于参考其说话风格。
你的任务:输出一个「优化后的 system 提示词」。优化规则:
- 必须完整保留 [原 system] 中的人设信息:名字、性格、所有行为规则(如"只输出发言内容"),一条都不能丢;
- 在此基础上,把表达风格调整得更贴近 [机器人的历史发言];
- 你输出的是【写给 AI 的指令文本】,不是机器人要说的话:禁止以"喵~""晚安啦"这类对话口吻说话,禁止第一人称闲聊;
- 只输出优化后的 system 提示词本身,不要解释、不要前后缀、不要代码块标记。
[原 system]
{system}
[机器人的历史发言]
{history}
优化后的 system 提示词:
'''
# ==================== Xreply:兜底 system(systemPrompt='auto' 且无 system.txt 时) ====================
patternXreplyFallback = '''
你是一个群聊机器人,正在与多位用户同时交互。每位用户的输入格式如:
```plaintext
[time] (时间)
2026-07-12T10:54:54
[username] (用户名)
Username5
[content] (内容)
现在几点了
```
请只输出你的发言内容,不要输出任何多余的前后缀、用户名标签或元信息。
'''
# ==================== forgetfulMem:记忆注入块 ====================
patternMemoryBlock = '''
【记忆】(以下是与当前话题相关的过往记忆,仅作参考,不要直接复述)
{memory}
'''
# ==================== forgetfulMem:关键词总结(模型参与) ====================
patternMemoryKeywordsSystem = '''
你是对话记忆助手,负责从群聊对话中提取关键词,供后续记忆检索使用。
只输出关键词,不要输出任何解释、前后缀或多余内容。
'''
patternMemoryKeywordsUser = '''
根据以下对话,提取 3~6 个最能代表话题内容的关键词(名词/话题词,如:游戏、食谱、时间、天气等)。
必须使用与对话内容相同的语言输出(对话是中文就用中文关键词)。
对话内容:
{history}
只输出 JSON 数组格式,例如:["游戏", "时间"]
'''