昨天一大早发现腾讯官方的小程序集成了DeepSeek,元宝也接入了DeepSeek,之前一直想接入DeepSeek的api,但是官方服务器一直繁忙,这次终于来了个靠谱的,赶紧试用一下
一、查看官方文档
1、来到腾讯云官方,官方已经给了示例代码
tcb.cloud.tencent.com/dev?envId=c…
2、而且云开发官方直接内置了AI大模型功能,这下只要开通了云开发就能直接在小程序里使用,不需要安装其他多余的库了,非常棒!!!
二、初始化Taro项目
- 来到Taro官方,按这里指引就可以创建了,不多赘述了
- 执行命令,先安装 taro脚手架,
npm install -g @tarojs/cli,当然也可以用npx更简单
- 然后初始化模版
taro init myApp
- 接着快速安装一下依赖
- 然后就可以起项目了,用vscode打开,终端输入命令
npm run dev:weapp,用微信开发者功能打开dist
三、获取云开发的环境Id
- 点击左上角云开发,如果是灰色,需要自行开通
- 复制拿到云开发id,接着开始代码部分
四、接入DeepSeek
- 我准备了一个非常简陋的模版做试用,上面一个简单的输入框,点击下方按钮发送消息,然后接收发来的消息,测试过了,速度非常快
- 这是模版代码
<View>
<View>
{messages.map((message, index) => (
<View
key={index}
className={message.role === "user" ? "user" : "assistant"}
>
<Text>-{message.role}:</Text>
<Text>{message.content}</Text>
</View>
))}
</View>
<Input
type="text"
value={inputValue}
placeholder="请输入内容"
onInput={(e) => setInputValue(e.detail.value)}
/>
<Button onClick={handleSend}>Send</Button>
</View>
3. 这里我封装了一个utils文件,方便之后在别的地方调用
- 因为官方的typescript还没有更新extend,所以按照官方的方法会报类型错误,所以这里直接把Taro.cloud声明为any,当然按照官方也没有问题,类型报错不影响运行
- 接着我们创建DeepSeek模型,简单的调用一下生成文本大模型,接收用户消息,然后生成内容返回
- 混元模型也是同样的,这里是完整的util代码
import Taro from "@tarojs/taro";
export const initAIModel: any = (modelName = "hunyuan-exp") => {
Taro.cloud.init({
env: "cloud1-xxxx", // 需替换为实际使用环境 id
});
const cloud = Taro.cloud as any;
console.log("initAI", cloud.extend);
const AI = cloud.extend.AI;
return AI.createModel(modelName); // 创建模型
}
export const HyAIModel = initAIModel();
export const getHyText = async ({content}:{content: string}) => {
const res = await HyAIModel.generateText({
model: "hunyuan-lite",
messages: [{ role: "user", content }],
});
console.log(res);
return res.choices[0].message
};
export const DsAIModel = initAIModel("deepseek");
export const getDsText = async ({content}:{content: string}) => {
const res = await DsAIModel.generateText({
model: "deepseek-r1",
messages: [{ role: "user", content }],
});
console.log(res);
return res.choices[0].message
};
7. 然后我们来到首页,先初始化,然后调用
import { DsAIModel, getDsText } from "@/utils/aiUtil";
import { Button, Input, Text, View } from "@tarojs/components";
import { useEffect, useState } from "react";
function TxaiChat() {
const [messages, setMessages] = useState<any>([]);
const [inputValue, setInputValue] = useState("");
useEffect(() => {
console.log("DsAIModel", DsAIModel);
}, []);
const handleSend = () => {
if (inputValue.trim()) {
setMessages([...messages, { content: inputValue, role: "user" }]);
setInputValue("");
// Simulate AI response
getDsText({ content: inputValue }).then((res) => {
console.log("getHyText", res);
setMessages([
...messages,
{ content: inputValue, role: "user" },
{ ...res },
]);
console.log("messages", messages);
});
}
};
return (
<View>
<View>
{messages.map((message, index) => (
<View
key={index}
className={message.role === "user" ? "user" : "assistant"}
>
<Text>-{message.role}:</Text>
<Text>{message.content}</Text>
</View>
))}
</View>
<Input
type="text"
value={inputValue}
placeholder="请输入内容"
onInput={(e) => setInputValue(e.detail.value)}
/>
<Button onClick={handleSend}>Send</Button>
</View>
);
}
export default TxaiChat;
8. 最后我们测试一波,速度还是比较快的