教程:微信小程序 30 分钟接入 AI 对话(含流式与登录态)
从小程序请求封装、SSE 流式渲染、登录态与 token 存储,到审核避坑,一步步把 AI 对话搬进微信小程序。
把 AI 对话塞进微信小程序,卡点从来不是模型调用,而是三件小事:请求怎么发、流式怎么接、登录态怎么管。这篇按这三件事讲清楚,用的是标准 OpenAI 兼容接口,换任何一家供应商都能复用。
第一步:配好域名与请求封装
小程序不允许随意请求外部域名,先在后台把接口域名加进 request 合法域名列表,且必须是 HTTPS。这一步漏了,本地调试一切正常,真机一跑就是失败。
然后统一封装一层请求: BaseURL、鉴权头、超时、错误码归一化都收在一个函数里。业务代码永远不要直接写 wx.request,否则以后换通道要改几十处。
- 后台配置 request 合法域名(HTTPS,不含路径与端口)
- 统一封装:BaseURL + Authorization + timeout + 错误归一化
- 鉴权 token 只放内存与 storage,不要写进页面 data 或日志
第二步:流式输出的接收与渲染
小程序没有浏览器原生的 EventSource,但可以用 enableChunked 的分块传输手动解析 SSE:按双换行切事件,取 data: 行拼接增量文本。
渲染上不要每个 chunk 都 setData——高频 setData 会卡死视图层。把增量攒进缓冲,用节流(比如每 60ms 刷一次)推给页面,观感反而更顺。
- 开启 enableChunked,按 \n\n 切分 SSE 事件
- 增量写缓冲,节流 50–80ms 统一 setData
- 收到 [DONE] 后结束 loading 态并落库会话
- 页面卸载时主动中断请求,避免后台跑流量
第三步:登录态与会话持久化
用 wx.login 拿 code 换自家会话,不要在小程序里存任何长期密钥。服务端签发短期 token,前端只持有 token,过期后静默续期。
会话记录建议服务端落库、前端只缓存最近若干条。换设备时能续上,是用户对「正经产品」的基本预期。
审核避坑清单
涉及 AI 生成内容的小程序,审核重点关注三件事:内容安全、用户协议、以及是否明示了 AI 身份。缺任何一项都可能被驳回。
- 接入内容安全校验,对输入与输出双向过滤
- 隐私协议中说明数据用途与存储期限
- 界面明示「内容由 AI 生成,仅供参考」
- 提供举报/反馈入口,并保留处理记录
这三步走完,一个能流式打字、能续会话、能过审的小程序对话页就成型了。剩下的工作量在业务侧——提示词、知识库、埋点,才是真正拉开差距的地方。