AI Product Manager + Agent Engineer · 产品案例

销售跟进
智能 Agent

基于 LangGraph StateGraph 的旅游行业销售 SOP 智能化系统—— 从产品定义到工程落地,一人双角色的完整实践。

行业领域
旅游 · 私域销售
核心技术
LangGraph · MiniMax LLM
我的角色
AI 产品经理 + Agent 工程师
上线状态
生产环境运行中
01 · Background

为什么要做这个?

旅游私域销售的核心痛点:销售每天面对数十个客户, 跟进时机、话术选择全靠经验,漏回客户、跟进滞后导致大量商机流失。

跟进时机不准
销售凭感觉决定何时触达,缺乏对客户意图和对话状态的系统判断,最佳窗口期频繁错失。
📭
漏回客户问题
客户提问后销售未及时回复(S4 状态),系统无感知、无提醒,客户体验差,转化断链。
💬
话术质量参差
不同销售的跟进话术水平差异大,缺乏标准化 SOP,无法沉淀优质话术并规模化复用。
产品侧:定义销售 SOP 数字化框架、6×3 状态机模型、任务数据结构
工程侧:LangGraph StateGraph 编排、两阶段 LLM 架构、FastAPI 服务
运营侧:Prompt 工程、评测体系、LangSmith 全链路追踪
02 · Product Design

核心产品设计

将销售 SOP 拆解为可计算的状态空间,设计三层分析模型: 对话状态识别 → 销售阶段判断 → 差异化任务生成。

对话状态机(6 种 S 状态)

状态 中文 定义 下游路由
S1 缓冲回应 客户需要时间考虑,或观望表达("明年/以后/看看") speech_node
S2 正常结束 信息已给,客户确认或沉默,无下一步约定 speech_node
S3 客户拒绝 明确不需要/委婉拒绝("不考虑/算了/再说吧") empty_node
S4 销售漏回 客户提了具体问题,销售完全未回应 → 立即提醒 reminder_node
S5 承诺待履约 销售承诺了具体行动但对话中未出现兑现内容 task_node
S6 成交 已付款/已出票/路书 PDF → 停止所有任务 empty_node
DESIGN INSIGHT · S4 防误判机制

S4(销售漏回)是系统最高优先级异常态,加入了防误判保护:当 LLM 判断为 S4 但最后一条消息来自销售侧时,强制走 empty_node 而非生成 REMINDER,避免误打扰。

五大销售技能体系

P0 · 最高优先
探需推进
probe_need
关键信息缺失时发问,不重复问已知信息
P1
增信推进
build_trust
客户质疑资质/案例时,推送真实成功案例素材
P1
逼单推进
close
O≥70 才触发,避免低意向客户反感
P2
塑品推进
build_value
对比多家时,调 WMS API 获取真实产品话术
P3
挖需推进
dig_need
成单后挖掘二次需求,促进复购

客户分级模型(V/T/O 三维评分)

A
V+T≥160 且 V≥75
高价值 · 人工全力跟进
B
V+T≥130
中高价值 · 完整任务列表
C
V+T≥100
中低价值 · SCRM 自动化
D
V+T<100
低价值 · SCRM 自动触达
03 · Architecture

系统架构

两阶段 LangGraph StateGraph 架构:Stage 1 意图识别 → Python 路由 → Stage 2 差异化任务生成, 8 个节点协同,全链路 LangSmith Trace 追踪。

LANGGRAPH STATEGRAPH · 主干流程
START
profile_node
获取 V/T/O 画像
intent_node
Stage 1 LLM · 意图识别
routing_node
Python 条件路由
Stage 2 节点
speech / reminder / task
post_process
互斥过滤 · 软化 · 时间计算
END
ROUTING_NODE · 条件分支
S3 · S6
empty_node
拒绝/成交 → 空任务
S4 销售漏回
reminder_node
立即提醒销售处理
S5 承诺未履约
task_node
生成待办工单
C1/C2 正常销售
speech_node
话术序列任务生成

后处理引擎(post_process_node)

MUTEX FILTER
REMINDER/TASK 与 message 类任务互斥,同时存在时自动过滤 message 类,避免矛盾指令并发
SOFT CONVERSION
build_value 任务≥2条 且前文无资质咨询时,末尾自动转为 build_trust,调节节奏感
REACH TIME CALC
按时段(上午/中午/下午/晚上)计算序列触达时间 T+1/T+2/T+3,最大化响应窗口
SAFETY GUARD
逼单安全检查(O≥70 才允许 close)、资源否定检测(无票时禁用 build_value)

技术栈

LangGraph StateGraph FastAPI Python 3.10+ Pydantic v2 MiniMax LLM (gpt-5.4) Structured Output Tool Binding Kubernetes / Pod Uvicorn WMS API Client LangSmith Tracing Child Spans 嵌套 批量评测框架
04 · Demo Screenshots

系统运行实录

以下截图来自生产环境,敏感数据已脱敏,展示真实运行状态。

SCREENSHOT 01 Kubernetes 生产部署 + API 运行日志
K8s生产日志
部署状态
Pod 所有条件(Ready / ContainersReady / PodScheduled)均为 True,服务于 2026-05-13 15:25 正常启动。FastAPI + Uvicorn 运行在 0.0.0.0:8000。
S4 防误判日志
日志显示 LLM 判断为 S4(销售漏回),但检测到最后一条消息来自销售侧,系统触发防误判逻辑强制走 empty_node,不生成 REMINDER,避免误打扰。这是产品侧特别设计的边界保护。
SCREENSHOT 02 LangSmith Trace · S4 场景 REMINDER 任务生成
LangSmith Trace REMINDER
Trace 结构
可见完整 LangGraph 调用链:获取用户画像 → intent_node (Stage 1, 1.85s) → routing_node → reminder_node (Stage 2, 3.63s) → post_process_node,两次 LLM 调用在同一 Trace 中嵌套展示。
输出解读
reminder_node 输出 task_type: "reminder",confidence: 0.95,conversation_state: "S4销售漏回",sales_stage: "C1探需中"。系统判断客户有明确询问需求,销售未回复,生成立即处理提醒。
SCREENSHOT 03 LangSmith Trace · C2 阶段 speech_node 任务序列生成
LangSmith Trace speech node
场景说明
客户处于 C2 推品后阶段(已发产品链接),t_score: 85,speech_node 生成 probe_need 探需话术,任务序列共 3 条(sequence_order 1/2/3),按时段计算触达时间 18:22:00 起依次触达。
性能数据
整体 Trace 耗时 23.53s,token 消耗约 17K(含 13.1K 的 speech_node),成本约 /bin/sh.0511。speech_node 调用量最大,承担主要话术生成工作。
SCREENSHOT 04 WMS API 塑品话术内容示例
WMS API 输出
API 集成设计
当 skills_filtered 包含 build_value 或 build_trust 时,speech_node 动态绑定 WMS 工具(list_product_speeches / get_speech_details / search_materials),从真实产品库拉取话术和图片素材。
数据结构
返回 details 含产品 ID、strategyType(display/xxx)、valueTagline、displayContent 话术正文,以及 files 数组携带 CDN 图片 URL,直接推送给客户。
SCREENSHOT 05 任务管理台 · 销售侧操作界面
任务管理台操作界面
操作界面
销售侧任务管理台,展示跟进任务列表与 Agent 生成内容,支持一键确认与编辑