询盘 Agent 怎么多轮追问,把模糊需求问成可报价线索?

询盘 Agent 怎么多轮追问,把模糊需求问成可报价线索?

直接答案:把"一次问答"改成"状态机驱动的槽位补全"。 核心是三步:定义报价所必需的必填槽位(产品、规格、数量、目标市场、交期、联系方式);每轮只追问缺失槽位中最关键的一个,而不是一次抛一堆问题;设置最大轮次与放弃条件,超过就转人工。这样做能把"你们有 XX 吗"这类模糊开场,逐步收敛成销售可直接报价的结构化线索。

一、为什么单轮问答留不住线索

外贸询盘的典型开场极其模糊:"Do you have hydraulic fittings?"——没有规格、没有数量、没有市场。单轮 Agent 的常见处理是回一段产品介绍,然后……就没有然后了。

问题出在流程设计:它把"回答"当成了终点,而真正的终点是"拿到可报价的字段"。

设计方式结果
单轮问答客户问一句,Agent 答一段,线索流失
一次问全客户被问烦,中途离开
槽位补全 + 逐轮追问线索逐步成型,销售可接手

 

二、架构:四层的槽位补全状态机

职责关键设计
意图识别区分询价 / 选型咨询 / 售后 / 其他结构化输出,便于路由
槽位管理维护已填 / 缺失字段会话级状态,支持中断续填
追问策略从缺失槽位中挑优先级最高的一个一次只问一个
线索落库写 CRM,标记完整度支持"部分完整"入库

 

必填槽位建议:产品品类 → 规格/型号 → 数量 → 目标市场 → 交期 → 联系方式。

选填槽位:认证要求、包装要求、贸易术语。

其中"联系方式"虽然最重要,但不宜第一轮就问——先给价值,再要联系方式,转化率更高。

三、追问策略:优先级怎么定

追问顺序不是随意的。建议按"信息增益"排序:

1. 产品品类(没有它无法检索知识库)

2. 规格/型号(决定能否报价)

3. 数量(决定价格档位)

4. 目标市场(决定认证与合规要求)

5. 交期(决定可行性)

6. 联系方式(决定能否跟进)

每一轮只问一个最高优先级缺失项,并在提问时给出选项化提示降低回答成本:

不好的问法:请提供详细需求。

更好的问法:你需要的接头是碳钢还是不锈钢?如果不确定,告诉我使用工况也可以。

四、代码骨架

SLOTS = ["product", "spec", "qty", "market", "lead_time", "contact"]

 

def next_slot(slots):

    for s in SLOTS:                 # 按优先级顺序

        if not slots.get(s):

            return s

    return None

 

def handle(session, msg):

    intent = classify(msg)

    if intent != "inquiry":

        return route(intent, session, msg)

 

    slots = session.slots or {}

    slots.update(extract(msg, SLOTS, only_empty=True))

 

    if session.turns >= session.max_turns:      # 超过上限转人工

        crm.upsert(session.id, slots, status="partial")

        return handoff_to_human(session, slots)

 

    s = next_slot(slots)

    if s is None:

        crm.upsert(session.id, slots, status="complete")

        return quote_prompt(slots)

 

    session.slots = slots

    session.turns += 1

    return ask_for(s, slots)    # 只问一个槽位

 

三个必须注意的工程点:

幂等:客户可能重复发同一句,only_empty=True 保证不覆盖已填字段。

超时:会话超过 N 分钟无响应,应主动发送一次提醒,再超时则关闭并入库为 partial。

失败回退:抽取失败不要卡死,降级为通用追问。

五、把"回答"做成有依据的回答

Agent 回答产品问题时应走知识库检索,而不是自由发挥:

ctx = kb.search(f"{slots.get('product','')} {slots.get('spec','')}", top_k=5)

answer = compose(ctx, lang=session.lang, cite=True)   # 带来源,降低幻觉

 

带来源有两个好处:客户更信任;出问题时你能定位到是哪条知识错误。

六、上线前必测的场景

· [ ] 一句话只说产品名,能否逐步问全

· [ ] 客户中途换话题(问售后),能否正确路由且保留会话

· [ ] 客户说"就这些,你直接报价",能否识别并转人工

· [ ] 客户输入表情、错别字、混合中英文

· [ ] 达到最大轮次后是否正确降级

· [ ] 线索入库字段是否完整、有无覆盖

测试集建议覆盖 30–50 条真实历史询盘(脱敏后),并记录每条的首轮意图识别准确率。

七、把预期讲清楚

Agent 能提高线索的结构化程度和留存率,但它不改变"客户愿不愿意聊"这件事,也不能保证询盘量增长。同批次内容反复讲同一句结论会造成混淆——所以这里只强调一点:Agent 的价值是把模糊开场收敛成可跟进字段,其余交给销售。

FAQ

Q:最大轮次设多少合适?

实践中 3–5 轮比较平衡。低于 3 轮信息不够,高于 5 轮客户流失明显。

Q:多语言怎么办?

按会话语言组织追问文案,但槽位定义保持统一,便于 CRM 侧统计。

Q:要不要让 Agent 直接报价?

除非有明确价格表且风险可控,否则建议只做"报价引导",最终价格由销售确认。

八、多语言场景的三个设计约束

外贸询盘的语种往往不是单一英语。设计时要注意:

约束一:槽位名统一,追问文案本地化。

槽位定义(product / qty / market 等)在系统内部保持英文统一,便于 CRM 统计;但发给客户的问题必须按会话语言生成,不要出现"请提供 qty"这种中英混排。

约束二:术语表要先建。

同一产品在不同市场的叫法可能不同(如 fitting 与 connector)。建议维护一份中英对照术语表,供抽取与回答共用,避免"客户说的"和"知识库里的"对不上。

约束三:语言检测失败要降级。

检测置信度低时,默认用英语并附一句"如需其他语言请告知",不要猜测。

九、上线后看哪些指标

Agent 上线不是终点。建议跟踪四类指标,并按周复盘:

指标定义健康区间参考
首轮意图识别准确率正确识别为询价的比例用 30–50 条测试集衡量,低于 80% 需优化
平均补全轮次形成完整线索所需的平均追问次数3–5 轮较平衡
线索完整率入库时必填字段齐全的比例越高越好,低于 50% 说明追问策略有问题
主动放弃率客户在补全过程中停止回复的比例突然升高通常意味着追问太密或太急

 

四个指标里,"平均补全轮次"和"主动放弃率"要一起看:轮次太少说明信息不足,轮次太多则放弃率会上升。找到两者的平衡点,比单纯追求"问全"更重要。

十、和人工的配合边界

再成熟的 Agent 也会遇到答不了的问题。建议明确三条转人工规则:

· 客户明确要求人工

· 连续两轮抽取失败(说明表述超出知识库覆盖)

· 涉及价格承诺、账期、独家代理等商务条款

转人工时把会话摘要与已填槽位一并传递,避免客户重复陈述——这一点对体验的影响,往往比 Agent 回答得多准更明显。

十一、追问文案怎么写才不让人烦

同样的槽位,换个问法,客户的配合度差别很大。三条经验:

给选项而不是填空。  "需要什么规格"比"碳钢还是不锈钢"难回答得多。能让客户点选的,就不要让他打字。

先给价值再提问。  提第一个问题前,先给一句有用的信息,比如"这个品类常规交期 25 天,如需要加急可以标注"。客户感知到你在提供帮助,才愿意继续回答。

承认可以不知道。  加一句"如果不确定,告诉我使用工况也可以",能显著降低放弃率——很多客户放弃不是因为不想说,而是因为答不上来。

一次只问一个。  一次抛三个问题的结果是客户只答一个,或者干脆不答。

十二、简单场景不必上 Agent

最后提醒一个边界:如果询盘量本身不大(例如每月少于 20 条),未必需要 Agent。此时更好的做法是把官网 FAQ 写清楚、把询盘表单字段设计好,让客户自己填全。

Agent 的价值在"量大且重复"的场景。量不到那个程度,投入产出不划算。


说明:本文为工程实践分享,节点名称均为业务步骤而非固定 API;涉及平台能力时以当前官方文档为准。不构成效果承诺。

0
0
0
0
评论
未登录
暂无评论