【vue】vue3+ts对接科大讯飞大模型3.5智能AI

如今ai步及生活的方方面面,你是否也想在自己的网站接入ai呢?今天分享科大讯飞大模型3.5智能AI对接。

请添加图片描述

获取APPID、APISecret、APIKey

  • 讯飞开放平台注册登录
  • 控制台创建自己的应用
  • 复制备用
    在这里插入图片描述
    准备工作做好,直接开始上代码了。

源码参考

<script setup lang="ts">import { NButton } from 'naive-ui';import CryptoJs from 'crypto-js';import { ref, unref, h } from 'vue';import { useMessage } from 'naive-ui';const message = useMessage();const {GLOBAL_SPARK_AI_APPID,GLOBAL_SPARK_AI_APISECRET,GLOBAL_SPARK_AI_APIKEY,} = import.meta.env;const getWebsocketUrl = () => {let url = 'wss://spark-api.xf-yun.com/v3.5/chat';const host = 'spark-api.xf-yun.com';const apiKeyName = 'api_key';const date = new Date().toGMTString();const algorithm = 'hmac-sha256';const headers = 'host date request-line';let signatureOrigin = `host: ${host}\ndate: ${date}\nGET /v3.5/chat HTTP/1.1`;let signatureSha = CryptoJs.HmacSHA256(signatureOrigin,GLOBAL_SPARK_AI_APISECRET);let signature = CryptoJs.enc.Base64.stringify(signatureSha);let authorizationOrigin = `${apiKeyName}="${GLOBAL_SPARK_AI_APIKEY}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"`;let authorization = btoa(authorizationOrigin);// 将空格编码return `${url}?authorization=${authorization}&date=${encodeURI(date)}&host=${host}`;};const url = getWebsocketUrl();const isLoading = ref(false);const sMsg = ref();const chartContentRef = ref<HTMLDivElement>();const sendMsg = () => {if (unref(isLoading)) {message.warning('加载中...');return;}if (!unref(sMsg)) {message.warning('请输入内容');return;}const userMsg = document.createElement('div');userMsg.classList.add('msg-user');const msgMain = document.createElement('div');msgMain.innerHTML = unref(sMsg);userMsg.appendChild(msgMain);chartContentRef.value?.appendChild(userMsg);const socket = new WebSocket(url);socket.addEventListener('open', (e) => {isLoading.value = true;const params = {header: {app_id: GLOBAL_SPARK_AI_APPID,uid: '星火网页测试',},parameter: {chat: {domain: 'generalv3.5',temperature: 0.5,max_tokens: 1024,},},payload: {// 如果想获取结合上下文的回答,需要开发者每次将历史问答信息一起传给服务端,如下示例// 注意:text里面的所有content内容加一起的tokens需要控制在8192以内,开发者如有较长对话需求,需要适当裁剪历史信息message: {text: [{ role: 'user', content: '你是谁' }, //# 用户的历史问题{ role: 'assistant', content: '我是AI助手' }, //# AI的历史回答结果// ....... 省略的历史对话{ role: 'user', content: unref(sMsg) }, //# 最新的一条问题,如无需上下文,可只传最新一条问题],},},};socket.send(JSON.stringify(params));});let resMsgText = '';const resMsg = document.createElement('div');resMsg.classList.add('msg-ai');const resMsgMain = document.createElement('div');resMsg.appendChild(resMsgMain);chartContentRef.value?.appendChild(resMsg);socket.addEventListener('message', ({ data }) => {isLoading.value = false;resMsgText += JSON.parse(data).payload.choices.text[0].content;resMsgMain.innerHTML = resMsgText;});};
</script><template><div class="container"><div class="chat-content" ref="chartContentRef"></div><div class="ask-content"><textarea v-model="sMsg"></textarea><div class="opt"><n-button type="primary" size="large" @click="sendMsg">发送</n-button></div></div></div>
</template><style lang="less" scoped>.container {height: 100%;display: flex;flex-direction: column;background: #f2f2f2;.chat-content {flex: 1;overflow-y: scroll;.msg-ai {background: white;text-align: left;}.msg-user {margin-bottom: 10px;text-align: right;}}.ask-content {height: 150px;background: white;border: 1px solid #eee;padding: 8px;position: relative;textarea {border: none;width: 100%;height: 100%;padding: 10px;background: #f2f2f2;outline: none;}.opt {text-align: right;position: absolute;inset: auto 10px 10px auto;}}}
</style>

相关链接

  • 讯飞开放平台
  • 参考教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/53183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件自动定时启动器-添加可执行文件软件,设置启动的时间,也可以设置关闭的时间-供大家学习研究参考

点击添加软件&#xff0c;可以添加可执行文件软件&#xff0c;设置启动的时间&#xff0c;也可以设置关闭的时间 注意&#xff0c;时间为00&#xff1a;00&#xff1a;00 等于没设置&#xff0c;这个时间不在设置范围&#xff0c;其他任何时间都可以。 下载地址&#xff1a; h…

飞驰云联FTP替代方案:安全高效文件传输的新选择

FTP协议广泛应用各行业的文件传输场景中&#xff0c;由于FTP应用获取门槛低、使用普遍&#xff0c;因此大部分企业都习惯使用FTP进行文件传输。然而面临激增的数据量和网络安全威胁的不断演变&#xff0c;FTP在传输安全性与传输性能上有所欠缺&#xff0c;无法满足企业现在的高…

tomcat服务器

tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器。Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样&#xff0c;具有处理 HTML 页面的功能&#xff0c;然而由于其处理静态 HTML 的能力远不及 Apache 或者 Nginx&#x…

【Vue】VueRouter路由

系列文章目录 第七章 VueRouter路由 文章目录 系列文章目录第一节&#xff1a;VueRouter基础一、安装&#xff1a;二、基本使用&#xff1a;1. 创建路由代码&#xff1a;Single Page Application&#xff1a;SPA2. 使用路由3. 展示路由&#xff1a; 二、嵌套路由三、路由传参1…

【自动驾驶】控制算法(九)深度解析车辆纵向控制 | 从算法基础到 Carsim 仿真实践

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

计算机网络33——文件系统

1、chmod 2、chown 需要有root权限 3、link 链接 4、unlink 创建临时文件&#xff0c;用于非正常退出 5、vi vi可以打开文件夹 ../是向外一个文件夹 6、ls ls 可以加很多路径&#xff0c;路径可以是文件夹&#xff0c;也可以是文件 ---------------------------------…

科创孵化昌平,创新创业求发展

昌平区&#xff0c;作为北京市科技创新和产业发展的新高地&#xff0c;近年来在多个前沿领域展现出蓬勃的生命力和巨大的发展潜力。在这片充满活力的土地上&#xff0c;青年创业者们正以前所未有的热情和智慧&#xff0c;投身于创新创业的大潮中&#xff0c;共同书写着昌平区发…

qt操作excel(QAxObject详细介绍)

一.QAxObject 概念介绍 QAxObject 是 Qt 框架中的一个类&#xff0c;专门用于与 ActiveX 控件和 COM&#xff08;组件对象模型&#xff09;对象进行交互。它为开发者提供了一种方便的方式来使用 Windows 平台上的 COM 组件&#xff0c;使得在 Qt 应用程序中调用这些组件的功能…

使用requestAnimationFrame实现精准倒计时

实现精准倒计时是一个常见的需求&#xff0c;尤其是在开发活动预告、限时优惠、赛事计时等场景中。实现精准倒计时的关键在于精确计算剩余时间&#xff0c;并确保时间更新的频率足够高&#xff0c;以保证显示时间的准确性。以下是一些实现精准倒计时的方法和技巧&#xff1a; …

python植物大战僵尸项目源码【免费】

植物大战僵尸是一款经典的塔防游戏&#xff0c;玩家通过种植各种植物来抵御僵尸的进攻。 源码下载地址&#xff1a; 植物大战僵尸项目源码 提取码: 8muq

Broadcast:Android中实现组件及进程间通信

目录 一&#xff0c;Broadcast和BroadcastReceiver 1&#xff0c;简介 2&#xff0c;广播使用 二&#xff0c;静态注册和动态注册 三&#xff0c;无序广播和有序广播 1&#xff0c;有序广播的使用 2&#xff0c;有序广播的截断 3&#xff0c;有序广播的信息传递 四&am…

基于Python flask的淘宝商品数据分析可视化系统,包括大屏和主题分析,还有回归预测

背景介绍 随着电子商务的迅猛发展&#xff0c;平台上积累了大量的用户行为和商品交易数据。这些数据蕴含着极大的商业价值&#xff0c;可以为市场趋势预测、商品优化以及用户行为分析提供重要的参考。淘宝作为全球最大的在线购物平台之一&#xff0c;拥有海量的商品和用户数据…

文件操作

1.文件的打开和关闭 文件在读写之前应该先打开文件&#xff0c;在使用结束之后应该关闭文件。 在编写程序的时候&#xff0c;在打开文件的同时&#xff0c;都会返回一个FILE*的指针变量指向该文件&#xff0c;也相当于建立了指针和文件的关系。ANSI C规定使用fopen函数来打开文…

《计算机网络名词解释》

1.计算机网络 计算机网络就是指&#xff0c;将分布在不同地理位置、具有独立功能旳多台计算机及其外部设备&#xff0c;用通信设备和通信线路连接起来&#xff0c;在网络操作系统和通信合同及网络管理软件旳管理协调下&#xff0c;实现资源共享、信息传递旳系统。 2.通信链路…

DockerLinux安装DockerDocker基础

Linux软件安装 yum命令安装 通过yum命令安装软件,是直接把软件安装到Linux系统中 安装和卸载都比较麻烦,因为软件和系统是强关联的 Docker docker是一种容器技术,可以解决软件和系统强关联关系,使得软件的安装和卸载更方便,它可以将我们的应用以及依赖进行打包,制作出一个镜…

5万字讲解大模型语言高效推理研究(清华综述)

1.1背景介绍 近年来&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;受到学术界和工业界的广泛关注&#xff0c;得益于其在各种语言生成任务上的出色表现&#xff0c;大语言模型推动了各种人工智能应用&#xff08;例如ChatGPT、Copilot等&#xf…

使用Mockito进行单元测试

1、单元测试介绍 Mockito和Junit是用于单元测试的常用框架。单元测试即&#xff1a;从最小的可测试单元&#xff08;如函数、方法或类&#xff09;开始&#xff0c;确保每个单元都能按预期工作。单元测试是白盒测试的核心部分&#xff0c;它有助于发现单元内部的错误。 单元测试…

iOS 巨魔神器,Geranium 天竺葵:6大功能,个个都解决痛点

嘿&#xff0c;这是黑猫。如果你装了巨魔&#xff0c;却只知道安装第三方APP&#xff0c;那就是暴殄天物。巨魔的价值不仅是应用侧载&#xff0c;还有强大的玩机工具生态——这也是我花费大量时间&#xff0c;去制作巨魔精选IPA合集的原因。 通过巨魔商店安装的APP&#xff0c…

Qt:智能指针QScopedPointer 的使用(以及如何写一个QScopedPointer )

前言 本文讲述QScopedPointer 的使用&#xff0c;以及自己如何写一个QScopedPointer . 正文 QScopedPointer 的常用方法 以下是 QScopedPointer 的一些常用方法及其详细说明&#xff1a; 构造函数&#xff1a; QScopedPointer<T> ptr(new T);用于创建一个 QScopedPoi…

k8s环境配置

9.11 安装k8s 1、创建主机&#xff0c;设置ip&#xff0c;hostname,firewalld selinux, Networkmanage 2、设置主机之间的免密 编号主机名称IP1k8s-master192.168.1.142k8s-node1192.168.1.123k8s-node2192.168.1.13 3、yum源配置 四个源镜像 3、清空及建立缓存 4、主机…