必须通过api调用豆包开放平台智能体服务,不可本地加载模型;需开通智能体获取appid/appsecret,配置合法域名https://api.doubao.com,使用sdk或手动封装请求,携带bearer认证token,实现消息发送与流式响应渲染。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在微信小程序开发版1.0.4中集成豆包AI能力,必须明确:这不是把豆包“装进”小程序,而是让小程序通过合法API调用豆包开放平台的智能体服务,所有AI推理发生在云端,前端只负责传参、收响应、渲染结果。微信小程序本身不支持直接加载外部大模型运行时,任何宣称“本地加载豆包模型”的方案均不可信且违反《微信小程序运营规范》第12.3条。
前置准备:开通豆包智能体并获取调用凭证
登录豆包开放平台,完成实名认证与开发者资质审核;进入「智能体管理」→「新建智能体」,选择「自定义模式」,填写名称(如“客服问答助手”)、描述,启用「自定义指令」并输入系统提示词约束输出风格;发布后在智能体详情页复制 【AppID】 与 【AppSecret】 ——这两个值将用于后续小程序端的OAuth 2.1认证,丢失或泄露会导致API被恶意调用。
注意:若你尚未创建智能体,此处无法跳过。没有有效AppID/AppSecret,后续所有请求都会返回401错误,且无法调试。
小程序端配置:添加合法域名与网络权限
打开微信开发者工具,进入项目「详情」→「本地设置」→勾选「不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书」(仅限开发版临时调试);但正式提审前必须关闭此项,并完成下一步。
在「开发管理」→「开发版本」→「服务器域名」中,将豆包API网关地址加入 request 合法域名:https://api.doubao.com。该域名必须完整填写,少一个字符或协议类型错误(如写成http)都会导致 wx.request 调用静默失败。
这一步不可省略。微信强制校验域名白名单,未备案域名发起的网络请求会被拦截,控制台无报错提示,仅返回空响应。
实现调用逻辑:使用doubao-sdk-miniprogram(推荐)
方法一:通过 npm 安装官方轻量SDK
在小程序根目录执行:npm install doubao-sdk-miniprogram → 构建npm(开发者工具菜单栏:工具→构建npm)→ 在需要调用AI的页面 JS 文件顶部引入:const { DoubaoClient } = require('doubao-sdk-miniprogram');
方法二:手动封装基础请求(无依赖)
在 utils/api.js 中编写函数:
解析微信公众号文章,提取标题、作者、正文、图片等信息。用户发送链接(mp.weixin.qq.com)时触发,自动提取内容并可保存至飞书表格。
const DOUBAO_API = "https://api.doubao.com/v1/chat/completions";<br>function callDoubao(prompt) {<br> return new Promise((resolve, reject) => {<br> wx.request({<br> url: DOUBAO_API,<br> method: "POST",<br> header: { "Content-Type": "application/json", "Authorization": "Bearer " + getApp().globalData.accessToken },<br> data: { model: "doubao-pro", messages: [{ role: "user", content: prompt }] },<br> success: res => resolve(res.data),<br> fail: err => reject(err)<br> });<br> });<br>}
关键点:Authorization头必须为 【Bearer + 空格 + accessToken】,token需通过 client_credentials 流程从 https://api.doubao.com/oauth/token 获取,有效期2小时,需自行缓存与刷新。硬编码token会因过期导致连续失败。
页面交互实现:发送消息→展示流式响应
第一步:在 wxml 中添加输入框与消息容器
<input bindinput="onInput" value="{{inputValue}}" placeholder="问点什么..."><br><button bindtap="sendQuery">发送</button><br><view class="chat-history"><br> <block wx:for="{{messages}}" wx:key="index"><br> <view class="message {{item.role}}">{{item.content}}</view><br> </block><br></view>
第二步:在 js 中绑定事件并触发调用
data: { inputValue: "", messages: [] },<br>onInput(e) { this.setData({ inputValue: e.detail.value }); },<br>async sendQuery() {<br> const prompt = this.data.inputValue.trim();<br> if (!prompt) return;<br> // 清空输入框并追加用户消息<br> this.setData({<br> inputValue: "",<br> messages: [...this.data.messages, { role: "user", content: prompt }]<br> });<br> // 调用豆包API<br> try {<br> const res = await callDoubao(prompt);<br> this.setData({<br> messages: [...this.data.messages, { role: "assistant", content: res.choices[0].message.content }]<br> });<br> } catch (err) {<br> console.error("豆包调用失败", err);<br> }<br>}
第三步:确保 app.js 中已初始化全局 accessToken 缓存逻辑,否则每次请求都需重新鉴权,造成延迟与失败率升高。










