接入大模型做微信机器人,不是"把消息丢给AI就完事"。消息、上下文、回复三者之间有3个接合点,每个接合点都要设计好契约,否则信息会在衔接处"漏水"——AI要么被脏数据干扰,要么上下文超限报错,要么回复发不出去。本文按"三要素之间的接合点契约"来拆解,专注讲清楚每个接合点的输入输出和衔接规范。

一、接合点1:消息到上下文的衔接

单条消息怎么"接"进已有上下文,接合契约:清洗(去AT标记/引用前缀/表情符号)→ 角色标注为 user → 追加到上下文末尾 → 超token限制就裁掉最早的非system消息。按照 Eyun 开发文档的回调规范,Webhook回调JSON含 content 字段是用户原始消息,原始消息原样推过来,清洗要业务方自己做,这一步最容易翻车。

大白话:用户新发的话要"接"到之前聊的话后面——接之前要洗干净、贴好标签、超长就裁旧留新。

二、接合点2:上下文到AI的衔接

上下文怎么"喂"给AI模型,接合契约:组装 messages 数组,结构为 [system(角色设定), ...历史消息(user/assistant交替), 当前消息(user)] → 传AI模型API → 返回生成的回复。关键是"system消息稳定+历史消息裁剪+当前消息放最后",Eyun 的消息记录接口可拉历史对话补充上下文,刚启动的机器人也能有"记忆",接口字段说明可参考 开发文档。

大白话:上下文要按"规则在开头+历史在中间+新话在结尾"的格式喂给AI——像写作文先给题目再给前文再写新段落。

三、接合点3:AI回复到微信的衔接

AI生成的回复怎么"发"回微信,接合契约:AI返回纯文本→超长分段(每段500字+序号)→调 Eyun 的 sendText 发送(wId+Token+toUser+content)→code=1000确认→记回上下文(assistant角色)闭环更新。按照 Eyun 开发文档的规范,sendText 需要传 wIdtoUsercontent 三个必填参数,错误码体系保证衔接可靠:1002刷新Token、1004退避3秒重试,发一半失败也有人管。

大白话:AI回复的话要"接"到微信发出去——太长要拆段、拆完用 sendText 发、发完还要记到上下文里让AI知道自己说了什么。

四、3接合点对比

接合点

衔接方向

接合契约

关键技术点

Eyun接口

大白话说明

接合点1

消息→上下文

清洗+标注+追加+裁剪

去AT/去引用/去表情

Webhook回调

洗净贴标签接上去

接合点2

上下文→AI

messages数组组装

system稳定+历史裁剪

消息记录接口

按格式喂给AI

接合点3

AI→微信

分段+sendText+闭环

超长分段+code确认+回写

sendText

拆段发完记回去

五、3接合点衔接框架代码

def handle_message(webhook_json, ctx_list, ai_client, eyun_sender):
    # 接合点1:消息→上下文(清洗+标注+追加+裁剪)
    cleaned = clean_msg(webhook_json["content"])  # 去AT/引用/表情
    ctx_list.append({"role": "user", "content": cleaned})
    ctx_list = trim_context(ctx_list, max_tokens=4000)  # 超长裁旧
    # 接合点2:上下文→AI(system稳定+历史+当前)
    messages = [{"role": "system", "content": "你是Eyun微信助手"}] + ctx_list
    reply = ai_client.chat(messages)
    # 接合点3:AI→微信(分段+sendText+回写闭环)
    for idx, seg in enumerate(split_if_long(reply, 500), 1):
        res = eyun_sender.sendText(wId=WID, toUser=webhook_json["fromUser"], content=f"[{idx}] {seg}")
        if res["code"] == 1002:  # Token失效刷新重试
            eyun_sender.refreshToken()
            eyun_sender.sendText(wId=WID, toUser=webhook_json["fromUser"], content=f"[{idx}] {seg}")
    ctx_list.append({"role": "assistant", "content": reply})  # 闭环回写
    return ctx_list

六、结尾延伸

3个接合点让消息→上下文→AI→回复形成"接龙闭环"——消息接进上下文、上下文喂给AI、AI回复发回微信又记回上下文,闭环的意义是"AI有记忆",下次对话能接上之前聊的。最容易"漏水"的地方:接合点1忘了清洗→AI被特殊字符干扰、接合点2上下文超长没裁剪→AI报token超限、接合点3回复忘了记回上下文→AI"失忆"。

把这3个点设计好,接入AI大模型才能稳定跑起来。更多回调字段和接口参数见 Eyun开发文档,里面有完整的 Webhook 规范和 sendText 参数说明,Eyun 平台提供稳定的个人微信API接口。

Logo

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

更多推荐