日主: 辛金
生肖: 虎
咸池: 月支卯 ✓比劫: 重
夫妻宫: 被刑
五行: 缺金
| 方案 | 优点 | 缺点 | 我们的选择 |
|---|---|---|---|
| 纯模型 (prompt 工程) |
灵活、语言自然 | 推理弱、易出戏 不按剧本走 |
✗ 天花板 80% |
| 纯代码 (模板拼接) |
精准、可控、报价不乱 | 僵硬、假、用户秒出戏 | ✗ 缺灵魂 |
| 混合系统 (模型 + 代码) |
灵活 + 精准 骨架代码 + 肌肉模型 |
工程复杂 | ✓ 当前方案 |
用户说"我千禧年的 一月一号",代码正则匹配不到(没有"年"字)。这时候调模型让它读懂,返回结构化 JSON:
为什么要模型?"千禧年"这种文化术语,正则永远写不全。模型天然理解。
规则引擎处理不了的模糊场景,交给模型判断:
测试数据:在 8 个刁钻场景上,32B + System Prompt 准确率 100% (8/8),Gemma4 88%,7B 微调 62%。
这是模型的主要工作——把代码给的场景指令 + 排盘数据 + 参考话术 → 生成自然流畅的回复。
模型拿到这份"剧本",只需要把它转成自然中文。它不用想"要不要推法事"——代码已经决定了。
当模型提取到生日但信息不全时(比如只有年月日没有时辰),让它生成一句师傅口吻的追问:
| 约束点 | 代码做什么 | 为什么不能交给模型 |
|---|---|---|
| 排盘数据 | 代码精确计算四柱、十神、五行、神煞 | 模型会胡编(曾出现"木弱"但实际木旺的事实错误) |
| 场景匹配 | 关键词 + 优先级 + 粘性锁定 | 模型会跑题(缘主说出轨,模型跑去讲财运) |
| 价格带 | 每个场景定死价格范围(1888-2888 等) | 模型会报错价(出轨场景报了童子煞的价) |
| 阶段流转 | 规则判断 + 只进不退 | 模型会在 trust 阶段就卖法事 |
| 违禁词过滤 | 后处理替换("嗯" "哈哈" "?") | 模型会倾向于用客服腔 |
| 对话记忆 | 限制最近 6 条历史,防止自我强化 | 模型会从自己的旧输出学到"行那我们继续看"这种坏模式 |
模型看到这份模板会老老实实按剧本演,不会跑题、不会乱报价、不会忘了讲命理概念。
| 情况 | 判断方式 | 延迟 |
|---|---|---|
| 用户说 "多少钱" | 规则引擎直接判 close | 0 秒 |
| 用户说 "怎么办" | 规则引擎直接判 solution | 0 秒 |
| 用户说 "那你说吧我听着" | 没关键词 → 调 32B 判断语义 | ~5 秒 |
| 用户只说 "嗯" | 单字 → 32B 判断 + 认可累计 | ~5 秒 |
问题:出戏、像客服 SOP、号码可能不对、破坏师傅人设
优势:保持人设、用命盘给具体希望(丁丑大运)、引导到真实人际关系
| 数据类型 | 数量 | 用途 |
|---|---|---|
| RAG 话术库 | 1851 条 | 风格参考,每轮检索 3 条注入 prompt |
| 真实对话日志 | 自动落盘 JSONL | 问题诊断 + 场景发现 + 未来微调数据 |
| 场景模板 | 20 × 4 阶段 = 80 份指令 | 定义每个场景的精确剧本 |
| 排盘数据点 | 30+ 字段 | 日主、十神、五行、神煞、大运、流年 ... |