1. 引言

多轮对话不是把最近十条原文无脑塞进模型。进阶要解决:谁的上下文、何时清空、转人工后还能不能继续、群里一堆人说话会不会串戏。上下文错了,看起来像模型变傻,其实是键错了。

2. 上下文的主键

按「设备 + 对方」分桶,不要按昵称。群里若允许对话,要再加群 ID,并且默认未点名不写入。自身消息不进历史。

from collections import deque

class ChatSession:
    def __init__(self, max_history=10):
        self.sessions = {}
        self.max_history = max_history

    def _bucket(self, device, peer):
        key = f"{device}:{peer}"
        if key not in self.sessions:
            self.sessions[key] = deque(maxlen=self.max_history)
        return self.sessions[key]

    def history(self, device, peer):
        return list(self._bucket(device, peer))

    def add(self, device, peer, role, content):
        self._bucket(device, peer).append({"role": role, "content": content})

3. 和词表、人工态的关系

词表命中可以不进多轮,避免营业时间被模型改写。转人工后停止追加用户/助手轮次,坐席输入丢弃。过期或心跳续期,永不过期会像功能坏了。

模型调用放队列。入口超时重推时,去重键要挡住第二轮生成,否则同一句会有两段「多轮」回复。

4. 进阶开关

群默认关多轮。私聊可开。温度低、超时短。超已审范围转人工,不要靠多轮磨出折扣。

5. 验收

A 的上下文不出现在 B;转人工后无自动句;同一回调重放仍一条;关闭模型后词表仍可用。

6. 总结

微信机器人进阶的多轮,是隔离的短记忆,加上可停嘴。AI 没有自己的会话,会话键在你的表里。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐