~/jing/lab/blog/AI
AI

微信小程序接 DeepSeek,我先踩了几个坑

小程序不能直接把 API Key 放前端,所以我用云函数做了一层中转。这里记一下当时踩到的几个问题。

靖淯茗·2026年6月9日·2 分钟阅读

做「AI 聊天回忆馆」的时候,我需要让微信小程序调用 DeepSeek。

一开始想得很简单:前端直接 request 一下不就行了?真写的时候才发现不行。小程序有合法域名限制,API Key 也不能放前端。放了就等于把钥匙贴在门上,谁打开开发者工具都能看到。

最后用了云函数中转

所以我加了一层云函数。小程序只调用自己的云函数,真正请求 DeepSeek 的逻辑放在云函数里,API Key 放环境变量。

// 云函数 chat/index.js
const cloud = require('wx-server-sdk')
cloud.init()
 
exports.main = async (event) => {
  const res = await fetch('https://api.deepseek.com/chat/completions', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.DEEPSEEK_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      model: 'deepseek-chat',
      messages: event.messages,
    }),
  })
  return res.json()
}

踩过的坑

云函数超时

默认超时太短了,大模型稍微慢一点就直接失败。我一开始还以为是代码写错了,后来才发现是函数超时。

解决方法是在 config.json 里把 timeout 调大,比如 60 秒。

上下文长度

刚开始我把完整聊天记录都塞进 messages。能跑,但越聊越慢,请求也越来越大。

后来改成只保留最近几轮,更早的内容用一条摘要代替。这个方案不完美,但对小程序这种场景已经够用了。

内容安全

微信审核绕不开内容安全。用户输入要检查,模型输出最好也检查一下。

这一步挺烦,但不能省。尤其是 AI 输出不可控,你不能假设模型永远说正常内容。

小结

现在看,小程序接大模型还是应该走后端中转。前端只负责发消息和展示结果,Key、限流、内容安全都放后端。

下一步我想把流式输出做顺。现在等完整结果返回,体验还是有点木。

#微信小程序#DeepSeek#云开发

靖淯茗

计算机专业在读,在 AI / Web / 数据库之间折腾。Build · Learn · Share。

评论