Jev04:客服系统实战

Jev + LLM 黄金搭档:从 0 到 1 设计一套 AI 客服系统

判断和生成混在一个模型里,会让客服系统又慢又贵又难控制。把它们拆开:判断交给 Jev,回复交给 LLM,才是这套架构的核心。

一、纯 LLM 客服的三个代价

假设每天处理 1 万条客服消息,每条都走 LLM。LLM 既要理解问题、判断意图,又要生成自然语言回复,还要复查合规。这样做的代价是:

  1. 成本高:输入、输出都收费,输出通常更贵。
  2. 慢:回复逐 token 生成,一条 200 token 回复要 3~5 秒。
  3. 不可控:判断和回复混在一起,判断错了,回复也跟着错。

Jev 的价值是单独拆出“判断”这一步。判断由 Jev 做,又快又便宜;回复仍由 LLM 做,只在需要时上场。

二、三方分工

角色谁来干干什么
分诊员Jev判断意图、情绪、紧急程度、流程去向
回复员LLM理解上下文,生成自然语言回复
监督者Jev检查 LLM 回复是否跑偏、是否违规

整体流程:

用户消息进来
    ↓
Jev 判断:意图、情绪、紧急程度
    ↓
路由:自动回复 / 转 LLM / 转人工
    ↓
LLM 生成回复(如果需要)
    ↓
Jev 检查:回复是否安全、语气是否合适
    ↓
发送给用户 / 拦截人工审核

三、四步实现

第一步:定义判断问题

一条客服消息通常需要判断意图、情绪、是否转人工、紧急程度、是否涉及金额。一次调用全部完成:

result = jev.ask(
    state=user_message,
    questions=[
        {"type": "choice", "question": "用户意图?",
         "options": ["咨询", "投诉", "退款", "查询订单", "其他"]},
        {"type": "score", "question": "情绪程度?",
         "scale": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]},
        {"type": "noul", "question": "是否需要转人工?"},
        {"type": "choice", "question": "紧急程度?",
         "options": ["低", "中", "高", "紧急"]},
    ],
)

第二步:按判断结果路由

路由是纯代码逻辑,不调模型:

intent = result["用户意图?"]["choice"]
emotion = result["情绪程度?"]["score"]
urgency = result["紧急程度?"]["choice"]
need_human = result["是否需要转人工?"]["probability"]

if need_human > 0.8:
    route_to_human()
elif urgency == "紧急":
    route_to_vip_queue()
elif intent in ["查询订单", "咨询"]:
    route_to_auto_reply()
else:
    route_to_llm()

关键点是:查询订单这类简单问题不碰 LLM,直接走数据库和模板回复。

第三步:LLM 只在需要的时候上场

复杂投诉、情绪安抚、多问题拆解、个性化回复才需要 LLM。LLM 上场时,Jev 已经把判断结果交给它,不用重新理解一遍:

reply = llm.generate(
    system_prompt="你是一个客服,用户在投诉退款问题",
    user_message=user_message,
    context=f"用户情绪:{emotion}/10,紧急程度:{urgency}",
)

第四步:Jev 做最后一道检查

LLM 回复发送前,再由 Jev 检查合规与语气:

check = jev.ask(
    state=reply,
    questions=[
        {"type": "noul", "question": "回复是否包含违规内容?"},
        {"type": "noul", "question": "回复是否准确回答了用户问题?"},
        {"type": "choice", "question": "回复语气?",
         "options": ["友好", "中性", "生硬", "冒犯"]},
    ],
)

if check["回复是否包含违规内容?"]["probability"] > 0.5:
    block_reply_and_review()
elif check["回复语气?"]["choice"] in ["生硬", "冒犯"]:
    regenerate_reply()
else:
    send_reply()

四、算一笔成本账

假设:每天 1 万条消息;纯 LLM 方案每条 500 输入 token、200 输出 token,输入 $10 / 百万、输出 $50 / 百万。

方案每日成本每月成本
纯 LLM$150$4500
Jev + LLM 混合约 $75约 $2252.5

混合方案里,先分流:40% 简单问题走模板,50% 走 LLM,10% 转人工。Jev 判断成本极低,1 万条约 $0.084;LLM 只处理 5000 条,约 $75。合计每日约 $75,成本接近减半。

速度上的收益更直观:

环节纯 LLMJev + LLM
判断意图3~5 秒约 0.1 秒
简单问题回复3~5 秒约 0.1 秒
复杂问题回复3~5 秒3~5 秒

五、上线前的影子模式

不要一上来就全量切。先让 Jev 在旁边跑,记录判断结果,但实际仍走旧流程;对比一段时间后再调阈值。

jev_result = jev.ask(state=user_message, questions=[...])

log_to_database({
    "user_message": user_message,
    "jev_intent": jev_result["用户意图?"]["choice"],
    "jev_confidence": jev_result["用户意图?"]["confidence"],
    "actual_route": original_route,
})

阈值要用数据回填,不能拍脑袋。例如跑一周后发现:

# confidence > 0.9 时正确率 95%
# confidence 0.7~0.9 时正确率 75%
# confidence < 0.7 时正确率 50%
AUTO_EXECUTE_THRESHOLD = 0.9
HUMAN_REVIEW_THRESHOLD = 0.7

先在低风险场景自动化,跑稳后再逐步扩大。

六、结论

Jev + LLM 不是二选一,而是职责分离:

环节用什么干什么
意图判断Jev一次调用判断意图、情绪、紧急程度
分流路由纯代码按判断结果走不同流程
简单问题Jev + 模板不碰 LLM,自动回复
复杂问题LLM生成自然语言回复
安全检查Jev发送前审查回复

Jev 负责“快和省”,LLM 负责“准和暖”。两者搭在一起,成本降一半,简单问题秒回,复杂问题有温度。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值