跳转至

Chatbot

Chatbot 以多轮对话提供问答、支持或陪伴服务。它的由来可追溯到 1966 年 Weizenbaum 的 ELIZA——靠模式匹配与预设规则回话;随后是检索式聊天机器人从知识库挑选回复;大模型时代则以生成式对话为主。这条脉络的核心变化是:从「无状态、单轮」走向「有状态、多轮」。它与单次问答的区别在于要维护跨轮次的会话状态,并把记忆、权限与人工接管纳入同一套流程。

快速开始

定义会话边界、记忆策略、转人工和安全拒答流程;用真实对话回放评测。起步要点如下:

  1. 划定会话边界:明确一个会话从哪开始、何时结束、上下文保留多少轮。上下文过长会推高成本与延迟,过短则丢失必要信息,需要按场景设定截断与摘要策略。
  2. 选择记忆策略:短期记忆直接放在消息上下文里,长期记忆写入结构化存储并在需要时检索回来。记忆涉及个人信息时,要一并处理过期、授权与删除。
  3. 设计转人工与拒答:为低置信、高风险或超出范围的问题设定触发条件,命中后明确告知用户并转人工,而不是继续猜答案。

评测时用真实对话回放,覆盖正常咨询、模糊问题、越权请求与情绪化输入等场景,观察是否存在答非所问、泄露信息或无法收敛的情况。对话结构遵循 Messages 的角色约定。

会话状态的最小结构可表示为「会话 ID -> 消息列表 + 元数据」。上下文窗口不足时,常见做法是保留最近 \(N\) 轮并对更早内容做摘要:

session = {
    "id": "s_123",
    "user_id": "u_456",
    "messages": [...],                 # 最近若干轮的原始消息
    "summary": "...",                  # 更早内容的摘要
    "memory": {"preferences": {}, "pending_issue": None},
}

案例

售后 Chatbot 只访问当前用户订单,低置信或高风险问题转人工,并显示引用和操作记录。例如用户询问「我的订单什么时候发货」,Chatbot 先确认用户身份,再查询该用户可见的订单数据。

所有工具调用都以当前用户为边界,返回结果附上来源和已执行的操作记录,用户可以复核。当问题涉及退款金额争议或疑似投诉时,判定为高风险,直接转人工并保留上下文交接,避免模型擅自承诺赔付。

对模型无法确定的问题,宁可说明「需要人工确认」也不要给出含糊答复。通过记录每轮对话、工具调用与人工接管事件,可以回放整个会话,排查误答与漏接。生成内容若可能虚构事实,还需要针对 Hallucination 做专门约束。

相关主题