This commit is contained in:
Neo
2026-03-15 10:15:02 +08:00
parent 2dd217522c
commit 72bb11b34f
916 changed files with 65306 additions and 16102803 deletions

View File

@@ -0,0 +1,93 @@
"""应用 8维客线索整理 Prompt 模板。
接收 App3消费分析和 App6备注分析的全部线索
整合去重后输出统一维客线索。
分类标签限定 6 个枚举值(与 member_retention_clue CHECK 约束一致):
客户基础、消费习惯、玩法偏好、促销偏好、社交关系、重要反馈。
合并规则:
- 相似线索合并providers 以逗号分隔
- 其余线索原文返回
- 最小改动原则
"""
from __future__ import annotations
import json
def build_prompt(context: dict) -> list[dict]:
"""构建 App8 维客线索整理 Prompt。
Args:
context: 包含以下字段:
- site_id: int
- member_id: int
- app3_clues: list[dict] — App3 产出的线索列表
- app6_clues: list[dict] — App6 产出的线索列表
- app3_generated_at: str | None — App3 线索生成时间
- app6_generated_at: str | None — App6 线索生成时间
Returns:
消息列表 [{"role": "system", ...}, {"role": "user", ...}]
"""
member_id = context["member_id"]
app3_clues = context.get("app3_clues", [])
app6_clues = context.get("app6_clues", [])
app3_generated_at = context.get("app3_generated_at")
app6_generated_at = context.get("app6_generated_at")
system_content = {
"task": "整合去重来自消费分析和备注分析的维客线索,输出统一线索列表。",
"app_id": "app8_consolidation",
"rules": {
"category_enum": [
"客户基础", "消费习惯", "玩法偏好",
"促销偏好", "社交关系", "重要反馈",
],
"merge_strategy": (
"相似线索合并为一条providers 以逗号分隔(如 '系统,张三'"
"不相似的线索原文保留,不做修改。最小改动原则。"
),
"output_format": {
"clues": [
{
"category": "枚举值6 选 1",
"summary": "一句话摘要",
"detail": "详细说明",
"emoji": "表情符号",
"providers": "提供者(逗号分隔)",
}
]
},
},
"input": {
"app3_clues": {
"source": "消费数据分析App3",
"generated_at": app3_generated_at,
"clues": app3_clues,
},
"app6_clues": {
"source": "备注分析App6",
"generated_at": app6_generated_at,
"clues": app6_clues,
},
},
}
user_content = (
f"请整合会员 {member_id} 的维客线索。\n"
"输入包含两个来源的线索App3消费数据分析和 App6备注分析\n"
"规则:\n"
"1. 相似线索合并为一条providers 字段以逗号分隔多个提供者\n"
"2. 不相似的线索原文保留\n"
"3. category 必须是:客户基础、消费习惯、玩法偏好、促销偏好、社交关系、重要反馈 之一\n"
"4. 每条线索包含 category、summary、detail、emoji、providers 五个字段\n"
"5. 最小改动原则,尽量保留原始表述"
)
return [
{"role": "system", "content": json.dumps(system_content, ensure_ascii=False)},
{"role": "user", "content": user_content},
]