小程序快速实现大模型聊天机器人

需求分析:

  • 基于大模型,打造一个聊天机器人;
  • 使用开放API快速搭建,例如:讯飞星火;
  • 先实现UI展示,在接入API。

最终实现效果如下:

在这里插入图片描述

一.聊天机器人UI部分

1. 创建微信小程序,基于TS模版开发

在这里插入图片描述

项目根目录执行以下命令:

npm init -y

npm install

在project.config.json文件找到‘setting’并添加如下配置

    "packNpmManually": true,
    "packNpmRelationList": [
      {
        "packageJsonPath": "./package.json",
        "miniprogramNpmDistDir": "./miniprogram/"
      }
    ],

执行构建npm

在这里插入图片描述

2. 初始化工具库

在项目根目录执行以下命令:

npm install crypto-js
npm install @types/crypto-js

在 miniprogram 下执行 npm init -y 快速创建 package.json 文件
在 miniprogram 目录下执行 npm i crypto-js
执行开发者工具菜单中的: 工具 -> 构建 npm,确保在 miniprogram 下面生成 miniprogram_npm 目录
重新运行小程序

导入towxml,进行格式化输出使用。
详细教程:https://github.com/sbfkcel/towxml

导入Vant Weapp组件库
https://vant-ui.github.io/vant-weapp/#/quickstart

3. 最终项目基本目录如下

在这里插入图片描述

4. 实现页面头部和底部布局

top-bar显示内容:背景渐变

在这里插入图片描述

bottom-bar显示内容:文字输入

在这里插入图片描述

5.实现聊天消息页面显示

使用讯飞星火大模型,官方注册帐号

在这里插入图片描述

使用WebSocket调用接口核心代码如下:

接口鉴权

// 讯飞接口鉴权
export function generateUrl(str: string, host: string, path: string, type: string) {
  const APIKey = ConfigUtil.APIKey;
  const APISecret = ConfigUtil.APISecret;
  const date = new Date().toUTCString();
  const tmp = `host: ${host}\ndate: ${date}\n${type} ${path} HTTP/1.1`;
  const tmp_sha = CryptoJS.HmacSHA256(tmp, APISecret);
  const signature = CryptoJS.enc.Base64.stringify(tmp_sha);
  const authorization_origin = `api_key="${APIKey}", algorithm="hmac-sha256", headers="host date request-line", signature="${signature}"`;
  const authorization = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(authorization_origin));
  const url = `${str}${host}${path}?authorization=${encodeURIComponent(authorization)}&date=${encodeURIComponent(date)}&host=${encodeURIComponent(host)}`;
  return url;
}

socket建立连接

//socket链接
connectWebsocket(str: string) {
  const that = this
  let isFirst = false;//首条非空数据
  const socketTask = wx.connectSocket({
    url: utils.generateUrl('wss://', ConfigUtil.Host, ConfigUtil.Path, 'GET'),
    success(res) {
      console.log('连接成功', res)
    },
    fail(err) {
      console.log(err)
      that.setData({
        sendState: 0
      })
    }
  });
  socketTask.onOpen(function () {
    let text = { "role": "user", "content": str }
    console.log('onOpen 发送数据 text=', text)
    socketTask.send({
      data: JSON.stringify(utils.sendParams(text, that.data.historys))
    })
  })
  socketTask.onMessage(function (res: any) {
    console.log(res.data)
    const result = JSON.parse(res.data)
    let code=result.header.code
    if (code != 0) {
      that.setData({
        sendState: 0
      })
      that.data.socketQueue.push(result.header.message)
      that.proMessage()
      return
    }

    let status = result.payload.choices.status
    let text=result.payload.choices.text[0].content
    if (text != undefined) {
      isFirst = true
    }
    if (isFirst) {//首条非空数据
      that.setData({
        sendState: 2
      })
    }
    if (status == 2) {//最后一条数据
      that.setData({
        sendState: 0
      })
    }
    if (text != undefined) {
      that.data.socketQueue.push(text)
      that.proMessage()
    }
  })
  socketTask.onError(function (res) {
    console.log('onError=', res)
  })
  socketTask.onClose((res) => {
    console.log('onClose', res)
    that.setData({
      sendState: 0
    })
  })

},

6.完整代码

https://download.csdn.net/download/wang_yong_hui_1234/90150447?spm=1001.2014.3001.5501

替换成自己的id就可以了
在这里插入图片描述

### 小程序实现大模型快速开发的框架与工具 为了通过小程序快速实现大模型的功能,可以借助一些现有的 AI Agent 框架来完成这一目标。这些框架不仅提供了预设组件和抽象概念,还集成了多种工具和算法,从而显著降低了开发难度。 #### 使用 AI Agent 框架的优势 AI Agent 框架是一种软件平台,旨在简化 AI Agent 的创建、部署和管理过程[^1]。这类框架通常会提供一系列模块化组件,允许开发者专注于核心逻辑的设计而无需过多关注底层细节。对于小程序而言,这种特性尤为重要,因为小程序本身资源有限,需要依赖高效的外部支持来运行复杂的机器学习任务。 #### 支持多模态数据处理的能力 某些先进的 AI Agent 框架特别强调对多模态数据的支持能力,即它们能帮助构建既可理解文本又能解析图像甚至识别语音的智能体[^2]。这意味着如果希望自己的小程序具备类似功能,则可以直接利用此类框架所提供的相应接口和服务,而不必单独训练各自的专用模型。 #### 技术选型建议 以下是几个适合用来加速基于小程序的大规模语言或其他类型深度学习项目的技术选项: - **Hugging Face Transformers**: 提供大量经过良好调优过的预训练模型以及简洁易懂API接入方式; - **TensorFlow Lite / PyTorch Mobile**: 这两个库专为移动设备优化设计,使得将大型神经网络压缩到适配手机端成为可能; - **Microsoft Bot Framework with Adaptive Cards**: 虽然主要面向聊天机器人领域,但它同样适用于任何交互式应用场景下的自然对话生成需求; 下面给出一段简单的 Python 示例代码展示如何加载并使用 HuggingFace transformer 预先训练好的 GPT-J 模型来进行文本补全操作: ```python from transformers import pipeline, set_seed set_seed(42) nlp = pipeline('text-generation', model='EleutherAI/gpt-j-6B') result = nlp("Once upon a time there was", max_length=50)[0]['generated_text'] print(result) ``` 此脚本首先初始化了一个名为 `pipeline` 的对象实例,它封装好了所有的必要参数配置以便于我们轻松调用指定名称(`gpt-j`)对应版本号(-6B表示六亿参数量级)的那个具体transformer架构变种作为内部引擎驱动整个流程运转起来;接着设置随机数种子确保每次执行都能得到一致的结果输出最后打印出来由该模型预测产生的延续句子片段.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值