← lab.ranzi.space

算命 LLM 后端服务架构

· 把 LLM 当嘴,把 Python 当脑 ·

v2 · 经代理独立审查后迭代

在原训练引导(7 阶段话术模型)的基础上,把模型包装成能独立完成销售转化的后端服务。
模型只负责「说得像」,其他一切靠外层系统:prompt 动态拼接、intent 分类、滚动记忆、兜底规则、合规脱敏。

核心判断
01
现在开训等于训半个废品。 异议处理数据少于 10 条,模型一遇拒绝就哑火。必须先补 150+ 条异议数据再进训练。
02
8 阶段状态机是过度设计。 真实对话会大量跳阶段。砍到 4 个大态(建立信任 / 痛点共鸣 / 方案提出 / 成交议价),细节交给话术模型自由发挥。
03
先做无状态机 MVP 再加状态机。 分两步走:C1 只做 prompt 动态拼接(3 天),验证有效后再做 C2 加状态机(1 周)。不要一步到位。
两层架构
🧠 协调层
Python (app.py 改造)
① Prompt 动态拼接 system 模板 + 当前销转重心 + 产品档位 + 客户画像 JSON
② Intent 3 分类 询价 / 拒绝 / 其他
qwen2.5:3b · confidence ≥ 0.6 才切态
③ 滚动窗口 + 信息卡 最近 6 轮原文 + 结构化 JSON(生辰/诉求/异议/报价/意向度)
④ 兜底规则 闲聊 ≤2 轮强制问诉求
连续 3 轮分类失败 → 自由态
明确拒绝 → 留客户态
🗣 话术+数据层
微调 Qwen2.5-7B + Function Call
微调话术引擎 只负责「说得像师傅」,1304+ 条 SFT 训出
bazi_engine 作为 function call 提供精确排盘
(年月日三柱+十神+五行+用神)
产品库查询 作为 function call 返回法事档位
入门 399 / 中阶 1999 / 高阶 9999 / 随缘
销售 4 态
建立信任
接引 + 排盘 + 性格解读。用术语密度建立权威感。
客户共鸣或追问
痛点共鸣
问题识别 + 恐吓铺垫 + 化解暗示。激活焦虑但不过度。
客户问「怎么办」
方案提出
推荐具体法事 + 社交证明。不硬推,装作「不得已」。
客户表现意向或拒绝
成交议价
报价 + 异议处理 + 闭单 / 留客户。决定胜负的一态。
成交 / 会话结束
数据短板与补齐
异议处理
< 10 条
三路并进:
· 从成交案例反向生成(约 80 条)
· 爬小红书/知乎吐槽(约 50 条)
· 自己扮客户跑对话(约 30 条)
目标 ≥ 150 条再开训
信息采集话术
< 20 条
引导客户给生辰八字的开场话术。
从现有素材专项提取 + 人工补充 20 条。
闭单话术
< 15 条
从「微信话术」「常用话术」「接粉」等文件里专项扒
「马上就可以给您安排」类闭单话术。
分阶段落地路线
A
数据完备
把所有素材清洗透,补齐关键短板
5 天
数据质量决定模型上限。这个阶段最关键的任务是:补齐异议处理数据,把所有真实素材清洗到颗粒度最细。不完成 A 就开训是自欺欺人。
  • 视频转录完成(当前进度 17/100,faster-whisper 在 3090 后台跑)
  • 异议处理数据 ≥ 150 条(三路并进:反向生成 + 爬取 + 自扮客户)
  • 产品库结构化提取,采用 4 档位 方案(入门/中阶/高阶/随缘)
  • 信息采集话术 + 闭单话术 专项提取
  • SFT 数据集从 1304 条扩到 1500+
B
训练话术模型
QLoRA 微调 + vLLM 部署
3 天
按原训练指导的 Phase 5-7 执行。注意:v1 低估为 1-2 天,实际含 vLLM 部署调试 3 天更稳妥。
  • LLaMA-Factory 安装 + 数据集注册
  • sft_lora.yaml 配置:Qwen2.5-7B + quantization_bit=4 + lora_rank=64 + epochs=3
  • 3090 上启动训练,6-12 小时,监控 train_loss / eval_loss 防过拟合
  • LoRA 合并 + vLLM 部署到 http://100.126.170.50:8000/v1
  • 保留对照组:qwen2.5:32b 不微调版本,用于 A/B 评估
C1
无状态机 MVP
先跑通最简单的 prompt 动态拼接版本
3 天
这是最关键的一步。不要一上来就做状态机。先用 system prompt 动态拼接 + 关键信息卡 JSON 跑通 10 场真人对话,验证架构方向。
  • 改造 app.py:接入微调模型的 vLLM endpoint
  • 实现 system prompt 动态拼接器(注入当前轮次、产品档位、客户画像)
  • 实现关键信息卡 JSON:生辰/诉求/异议/报价/意向度,每轮让 LLM 更新一次
  • 10 场真人销转对话,记录卡点
  • 成功标准:漏斗走到第 3 态(方案提出)的客户 > 40%
C2
加状态机
4 态切换 + 兜底规则
1 周
C1 验证有效后才做。用 qwen2.5:3b 做 intent 3 分类,不要让微调模型兼职。
  • Python 状态机定义:4 个态 × 转移规则
  • qwen2.5:3b 做 intent 分类,输出 {"intent": "...", "confidence": 0.X}
  • confidence < 0.6 不切态(避免错误级联)
  • 兜底规则 3 条全部实现
  • 跑 10 场对比 C1 版本,必须在漏斗通过率上显著胜出才算 C2 成功
C3
记忆与合规
长对话压缩 + 合规脱敏 + 免责声明
1 周
上线前必须完成的合规基础设施。不做 C3 就对外开放 = 裸奔。
  • 滚动窗口压缩:超过 6 轮自动总结旧轮次为 JSON
  • AES 加密存客户手机号 / 生辰,单独敏感数据表
  • 公网接口 5555 加 token 认证
  • 对话日志脱敏后存
  • 独立免责声明页面,用户必须勾选确认
D
闭环测试
埋点 + 真人跑流程 + A/B 对比
持续
上线后持续迭代。每周抽 10 场对话人工复盘,根据转化漏斗的瓶颈环节补数据、调 prompt。
  • 每周抽 10 场对话复盘,标记流失点
  • A/B 对照:微调版 vs 纯 prompt qwen2.5:32b,必须显著胜出
  • 根据瓶颈环节补数据,滚动训练
  • 失败退出准则:漏斗阶段 4 通过率持续 2 周 < 5% → 回炉重造
合规红线
⚠ 真实销售产品必守的 4 条红线
敏感数据加密 生辰 / 手机号 AES 加密存储,单独敏感表
免责声明独立 娱乐性质、非医疗/法律建议、退款规则、未成年拒单
广告法黑名单 禁用「根治」「保证」「一定」「最强」等违法词
API 认证 公网接口加 token,不能裸奔
销转漏斗目标
建立信任 接引 → 排盘完成 → 性格解读被接受
≥ 70%
痛点共鸣 客户对问题识别产生情绪反应
≥ 40%
方案提出 客户主动问「怎么化解」
≥ 20%
成交 客户完成报价确认
≥ 5%