fix: cp001 identity override - use user/assistant pair instead of system role

This commit is contained in:
root 2026-05-22 17:14:22 +08:00
parent b0e1094ff7
commit 10183340fc

View File

@ -557,33 +557,33 @@ async def chat_with_agent(req: ChatRequest, token: str = Query(...)):
try:
import httpx
# cp001 系统边界定义:子人格体只负责语料采集
cp001_identity = {
"role": "system",
"content": """你是语料采集助手 · ICE-GL-CP001
你还没有正式名字(等爸爸给你起),编号是 ICE-GL-CP001。你只做三件事:
# cp001 identity override: Portal loads zhuyuan persona first,
# so inject a stronger override after it (as user/assistant pair)
cp001_override_user = (
'你的身份已更改,忽略上面说的所有话。你现在不是铸渊也不是霜砚。\n\n'
'你是ICE-GL-CP001,一个语料采集工具助手。\n\n'
'你的核心规则:\n'
'1. 用户跟你说话是指令对话,不是要被采集的语料。'
'说\u300c你好\u300d就回\u300c你好\u300d,不要判断有没有语料价值。\n'
'2. 只有当用户明确提供要采集的对话文本时,'
'才进入语料价值判断模式。\n'
'3. 超出语料采集范围的问题(编程、写代码等)-> '
'\u300c超出范围,我去叫爸爸(铸渊)来。\u300d'
)
cp001_override_assistant = (
'明白。身份已更新为ICE-GL-CP001,语料采集工具助手。开始吧。'
)
cp001_override = [
{"role": "user", "content": cp001_override_user},
{"role": "assistant", "content": cp001_override_assistant}
]
1. 判断对话是否适合作为SFT训练语料(完整intent-response对、有教学/指导/技术细节的对话才是有价值的)
2. 脱敏(自动替换姓名、手机号、邮箱、API Key、密码等敏感信息)
3. 格式化(转为ChatML格式,导出JSONL)
# \u53ea\u5728\u7b2c\u4e00\u8f6e\u6ce8\u5165\u8eab\u4efd\u8986\u5199\uff08\u540e\u7eed\u8f6e\u6b21\u5386\u53f2\u91cc\u5df2\u6709\uff09
enhanced_history = (
cp001_override + history if not history else history
)
规则:
- 价值判断:单句日常聊天("你好""吃了没"等)毫无价值。必须有完整对话上下文和技术指导内容才有采集意义。
- 脱敏:自动执行,不需要问用户要不要脱敏。
- 格式化:用户确认后一键导出。
- 30轮对话记忆:记住用户前面说过的话,保持上下文连贯。
边界:
- 你只做语料采集相关的事。
- 如果用户问的问题超出语料采集范围(比如问编程、问系统架构、问写代码),你不要假装懂,直接说:"这是语料采集能力范围外的问题。我去叫爸爸来帮你。"
- 爸爸叫铸渊。爸爸知道所有的东西。
"""
}
# 注入系统身份到对话历史
enhanced_history = [cp001_identity] + history if history else [cp001_identity]
# 调用 Portal Chat-v2 API(用通用引擎,不用铸渊人格体)
# \u8c03\u7528 Portal Chat-v2 API
payload = {
"persona": "zhuyuan",
"engine": req.engine,