微信小程序如何接入集成DeepSeek?
最近,DeepSeek在技术圈那可是火得一塌糊涂。好多小程序开发者都想把DeepSeek接入自己的小程序里,实现智能对话、文本生成这些超酷的功能。今天这篇文章,就给大家分享如何借助腾讯云开发这个平台,轻松把DeepSeek接入小程序,而且只需要三行代码哦!
一、前期准备工作
在开始接入之前,咱们得先做好一些准备工作。首先,要去注册一个微信小程序账号,然后在本地创建一个小程序工程项目。这里要注意,小程序的基础库得在3.7.1及以上版本,并且得有wx.cloud.extend.AI
这个对象才行。
另外,小程序还得开通「云开发」功能。开通方法很简单,在小程序开发工具里,点击工具栏上的「云开发」按钮,按照提示创建环境就好啦。对了,第一次用云开发的小伙伴,第一个月套餐是免费的,简直太划算了!
二、接入DeepSeek实现不同功能的方法
(一)调用大模型实现文本生成
这部分,咱们以一个“七言绝句”生成器的简单示例来看看怎么操作。
1.初始化云开发环境:在小程序代码里,用下面这段代码初始化云开发环境:
wx.cloud.init({ env: "<云开发环境ID>", });
这里的<云开发环境ID>
得换成你自己实际的云开发环境ID。完成初始化后,就可以用wx.cloud.extend.AI
来调用AI能力了。这一步就像是给你的小程序打开了通往AI世界的大门。
2. 创建AI模型并调用生成文本:当小程序基础库在3.7.1及以上版本时,以调用DeepSeek-R1模型为例,小程序端的代码如下:
// 创建模型实例,这里我们使用DeepSeek大模型 const model = wx.cloud.extend.AI.createModel("deepseek"); // 我们先设定好AI的系统提示词,这里以七言绝句生成为例 const systemPrompt = "请严格按照七言绝句或七言律诗的格律要求创作,平仄需符合规则,押韵要和谐自然,韵脚字需在同一韵部。创作内容围绕用户给定的主题,七言绝句共四句,每句七个字;七言律诗共八句,每句七个字,颔联和颈联需对仗工整。同时,要融入生动的意象、丰富的情感与优美的意境,展现出古诗词的韵味与美感。"; // 用户的自然语言输入,如‘帮我写一首赞美玉龙雪山的诗’ const userInput = "帮我写一首赞美玉龙雪山的诗"; // 将系统提示词和用户输入,传入大模型 const res = await model.streamText({ data: { model: "deepseek-r1", // 指定具体的模型 messages: [ { role: "system", content: systemPrompt }, { role: "user", content: userInput }, ], }, }); // 接收大模型的响应 // 由于大模型的返回结果是流式的,所以我们这里需要循环接收完整的响应文本。 for await (let str of res.textStream) { console.log(str); } // 输出结果: // "# 咏玉龙雪山n" // "皑皑峻岭入云巅,玉骨冰肌傲九天。n" // "雪影岚光添胜景,神山圣境韵绵绵。n"
从这段代码能看出来,只要简单几行,就能借助云开发调用大模型的文本生成能力,轻松创作出古诗词。
(二)通过Agent(智能体)实现智能对话
调用大模型的文本生成接口,能实现简单的一问一答。但要是想打造完整的对话功能,还得把大模型变成完整的Agent,这样才能更好地和用户交流。云开发的AI能力很贴心,不仅能接入原始大模型,还支持接入Agent。下面看看具体步骤:
1.初始化云开发环境:和前面一样,在小程序代码里通过下面代码初始化云开发环境:
wx.cloud.init({ env: "<云开发环境ID>", });
替换好环境ID,准备工作就做好啦。
2. 创建一个Agent:进入云开发平台的AI+板块,新建一个Agent。在这里,既可以选择模板创建,也能自己输入提示词和欢迎语来创建自定义的Agent。为了方便,我们直接用模板创建。创建好后,点击页面上方的“复制ID”,就能拿到一个bot-id
,这可是Agent的唯一标识,后面代码里会用到。
3. 在小程序中实现与Agent的对话:假设我们创建了一个“小程序开发专家”的Agent,现在来试试和它对话,看看能不能解决云开发常见的报错问题。在小程序里,用下面代码调用Agent进行对话:
// 初始化 wx.cloud.init({ env: "<云开发环境ID>", }); // 用户的输入,这里我们以某个报错信息为例 const userInput = "我的小程序这个报错是什么意思:FunctionName parameter could not be found"; const res = await wx.cloud.extend.AI.bot.sendMessage({ data: { botId: "xxx-bot-id", // 第2步中获取的Agent唯一标识 msg: userInput, // 用户的输入 history: [], // 历史对话的内容,这里我们是第一轮对话,所以可以不传入 }, }); for await (let x of res.textStream) { console.log(x); } // 输出结果: // "### 报错解释n" // "**错误信息:** `FunctionName n" // "parameter could not be found` n // "这个错误通常表示在调用某个函数时,n" // "指定的函数名参数没有找到。具体来说,n" // "可能是以下几种情况之一:n" // ……
如果想实现多轮对话,把对话内容记录下来,重复调用Agent的接口就行,代码如下:
const res = await wx.cloud.extend.AI.bot.sendMessage({ data: { botId: "xxx-bot-id", // 第2步中获取的Agent唯一标识 msg: userInput, // 用户的输入 history: [ { role: "user", message: "我这个报错是什么意思?……"}, { role: "bot", message: "### 报错解释……" }, { role: "user",message: "那我要如何操作来修复呢?" } // …… ] }, });
4.实现更加丰富的聊天功能:云开发的SDK提供了一整套接入Agent的API接口,包括基础对话、对话历史保存、对话反馈收集、次轮问题推荐等。开发者在云开发平台创建Agent后,在小程序前端代码里调用wx.cloud.extend.AI
下的各类接口,就能和Agent进行丰富的交互啦。下面是一些代码示例:
- 获取聊天记录:
await wx.cloud.extend.AI.bot.getChatRecords({ botId: "botId-xxx", pageNumber: 1, pageSize: 10, sort: "asc", });
这段代码里,传入botId
、分页信息和排序方式,就能获取指定Agent的聊天记录。
- 发送反馈与获取反馈:
发送用户反馈的代码如下:
const res = await wx.cloud.extend.AI.bot.sendFeedback({ userFeedback: { botId: "botId-xxx", recordId: "recordId-xxx", comment: "非常棒", rating: 5, tags: ["优美"], aiAnswer: "落英缤纷", input: "来个成语", type: "upvote", }, });
- 获取次轮推荐问题:
const res = await wx.cloud.extend.AI.bot.getRecommendQuestions({ data: { botId: "xxx-bot-id", msg: "介绍一下Python语言", }, }); for await (let x of res.textStream) { console.log(x); }
在data
参数里设置botId
和用户消息msg
,通过遍历textStream
就能获取推荐问题。
(三)使用云开发AI对话组件快速接入AI对话
为了让开发者更轻松地在小程序里实现AI对话功能,云开发提供了专门的AI对话小程序组件。下面看看具体的使用步骤:
1.下载对话组件代码包:组件的下载地址是weda.cloud.tencent.com/ai-resource… 。下载解压后,把组件包放到小程序项目里,比如放在小程序根目录下的components/agent-ui目录。因为对话组件体积比较大,建议用小程序子包的形式引入。在小程序项目的app.json
里引入组件包:
{ "lazyCodeLoading": "requiredComponents", "subpackages": [ { "root": "components/agent-ui", "name": "agent-ui", "pages": [] } ] }
同时,在project.config.json
的setting
配置里添加过滤无依赖文件设置:
{ "setting": { /* 添加下述配置 */ "ignoreDevUnusedFiles": true, "ignoreUploadUnusedFiles": true } }
- 对话组件初始化:在小程序里使用这个对话组件,需要先进行异步加载和初始化。因为组件在分包中,有两种初始化方式,大家可以根据实际情况选择,这里建议在分包中初始化,这样能保证时序。
- 方式1:在分包中初始化:修改
./components/agent-ui/index.js
文件,添加初始化逻辑:
import * as sdk from "@cloudbase/weda-client"; sdk.init({ envID: "<云开发环境ID>", });
然后在./components/agent-ui/dist/Agent-UI/index.js
组件头部添加引用import '../../index'
,这样组件加载时就能立即初始化sdk。
- 方式2:在主包中初始化:检查
./components/agent-ui/index.js
文件,确保包含导出:
export * as clientSDK from "@cloudbase/weda-client";
接着在app.js的onLauch生命周期里,异步初始化sdk:
// app.js App({ onLaunch: function () { wx.cloud.init({ env: "<云开发环境ID>", }); require.async("./components/agent-ui/index.js").then((module) => { module.clientSDK.init({ envID: "<云开发环境ID>", // 云开发环境Id }); }); }, });
- 创建新页面,引入组件,实现对话交互:新建一个小程序页面作为对话组件的载体,比如
my-ai-chat
。在页面的index.json
配置文件里声明引入对话组件:
{ "usingComponents": { "agent-ui": "/components/agent-ui/dist/Agent-UI/index" }, "componentPlaceholder": { "agent-ui": "block" } }
然后在页面中就可以直接使用AI对话组件了:
<!--index.wxml--> <!-- 注意容器外层需要有id为 `wd-page-root` 的组件 --> <view id="wd-page-root" class="container"> <agent-ui bot="{{ bot }}"></agent-ui> </view> // index.js Page({ data: { bot: { botId: "<填入Agent ID>", }, }, });
三、总结
这篇文章给大家介绍了腾讯云开发接入大模型的三种方式,每种方式都适用于不同的场景,希望对大家有帮助。