一分钟用Taro接入DeepSeek

3,149 阅读2分钟

昨天一大早发现腾讯官方的小程序集成了DeepSeek,元宝也接入了DeepSeek,之前一直想接入DeepSeek的api,但是官方服务器一直繁忙,这次终于来了个靠谱的,赶紧试用一下

一、查看官方文档

1、来到腾讯云官方,官方已经给了示例代码

tcb.cloud.tencent.com/dev?envId=c…

2、而且云开发官方直接内置了AI大模型功能,这下只要开通了云开发就能直接在小程序里使用,不需要安装其他多余的库了,非常棒!!!

二、初始化Taro项目

  1. 来到Taro官方,按这里指引就可以创建了,不多赘述了
  2. 执行命令,先安装 taro脚手架,npm install -g @tarojs/cli ,当然也可以用npx更简单

  1. 然后初始化模版 taro init myApp

  1. 接着快速安装一下依赖

  1. 然后就可以起项目了,用vscode打开,终端输入命令npm run dev:weapp,用微信开发者功能打开dist

三、获取云开发的环境Id

  1. 点击左上角云开发,如果是灰色,需要自行开通

  1. 复制拿到云开发id,接着开始代码部分

四、接入DeepSeek

  1. 我准备了一个非常简陋的模版做试用,上面一个简单的输入框,点击下方按钮发送消息,然后接收发来的消息,测试过了,速度非常快

  1. 这是模版代码
<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文件,方便之后在别的地方调用

  1. 因为官方的typescript还没有更新extend,所以按照官方的方法会报类型错误,所以这里直接把Taro.cloud声明为any,当然按照官方也没有问题,类型报错不影响运行

  1. 接着我们创建DeepSeek模型,简单的调用一下生成文本大模型,接收用户消息,然后生成内容返回

  1. 混元模型也是同样的,这里是完整的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. 最后我们测试一波,速度还是比较快的