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

ops/2024/9/20 4:03:00/ 标签: vue.js, 人工智能, 前端

如今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.ppmy.cn/ops/113243.html

相关文章

我的demo保卫萝卜中的技术要点

管理类&#xff1a; GameManager&#xff08;单例&#xff09;&#xff0c;GameController(单例)&#xff1b; 一些其他的管理类&#xff08;PlayerManager,AudioSourceManager,FactoryManager&#xff09;作为GameManager的成员变量存在&#xff08;这样也可以保证只有一个存…

MySQL 数据库与表的创建指南

MySQL 数据库与表的创建指南 在进行 MySQL 开发时&#xff0c;了解如何创建数据库和表是基础。本文将详细介绍如何通过 MySQL 的 SQL 语句创建数据库和表&#xff0c;并解释每个步骤中的关键点。 1. 什么是 MySQL&#xff1f; MySQL 是目前最流行的开源关系型数据库管理系统…

C++——string类

1.初识string string属于C标准库&#xff0c;而不属于STL&#xff0c;STL也属于C标准库 string是管理字符的顺序表&#xff0c;用来管理字符数组 string是模板&#xff0c;只是库直接给它typedef了&#xff0c;直接实例化了 string是动态开辟的字符数组&#xff0c;指向的空间在…

Mycat搭建分库分表

分库分表解决的问题 单表数据量过大带来的性能和存储容量的限制的问题&#xff1a; 索引效率下降读写瓶颈存储容量限制事务性能问题分库分表架构 再搭建一对主从复制节点&#xff0c;3307主节点&#xff0c;3309从节点配置数据源 dw1 , dr1,创建集群c1创建逻辑库 CREATE DATAB…

图书管理系统(面向对象的编程练习)

图书管理系统&#xff08;面向对象的编程练习&#xff09; 1.系统演示2.设计框架讲解3.代码的详细讲解3.1 多本书籍的实现3.2 不同操作人员的实现3.3 不同work操作的实现 1.系统演示 下面主要展示系统的删除图书功能和显示图书功能&#xff0c;帮助大家在开始写代码前先了解图…

85-MySQL怎么判断要不要加索引

在MySQL中&#xff0c;决定是否为表中的列添加索引通常基于查询性能的考量。以下是一些常见的情况和策略&#xff1a; 查询频繁且对性能有影响的列&#xff1a;如果某个列经常用于查询条件&#xff0c;且没有创建索引&#xff0c;查询性能可能会下降。 在WHERE、JOIN和ORDER B…

AI应用开发平台Dify本地Ubuntu环境部署结合内网穿透远程管理大模型

文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署大语言模型应用开发平台Dify,并结合cpolar内网穿透工具实现公网环境远程访问…

系统 IO

"裸奔"层次&#xff1a;不带操作系统的编程 APP(应用程序) -------------------------------- Hardware(硬件) 特点&#xff1a;简单&#xff0c;应用程序直接操作硬件(寄存器) 缺点&#xff1a; 1. 搞应用开发的必须要了解硬件的实现细节&#xff0c;能够看懂原理图…

【数据结构】十大经典排序算法总结与分析

文章目录 前言1. 十大经典排序算法分类2. 相关概念3. 十大经典算法总结4. 补充内容4.1 比较排序和非比较排序的区别4.2 稳定的算法就真的稳定了吗&#xff1f;4.3 稳定的意义4.4 时间复杂度的补充4.5 空间复杂度补充 结语 前言 排序算法是《数据结构与算法》中最基本的算法之一…

QtConcorrent学习、以及与QThread之间的联系

目录 一、QtConcorrent 概述 1、功能 2、特点 3、使用场景 4、QtConcurrent::run 5、应用示例 5、挑战和解决方案 6、QtConcurrent的重要性和价值 二、QFuture 1、主要特点和功能 2、应用示例 三、QtConcorrent与QThread 1、抽象级别和易用性 2. 线程管理和资源利…

C++速通LeetCode简单第6题-环形链表

快慢指针真的很好用&#xff01; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:bool hasCycle(ListNode *head) {//快慢指针ListNode* fast…

2024.9.19

[ABC266F] Well-defined Path Queries on a Namori 题面翻译 题目描述 给定一张有 N N N 个点、 N N N 条边的简单连通无向图和 Q Q Q 次询问&#xff0c;对于每次询问&#xff0c;给定 x i , y i x_i,y_i xi​,yi​&#xff0c;表示两点的编号&#xff0c;请你回答第 x i …

微信小程序开发第三课

1 wxml语法 1.1 模版语法 # 1 在页面 xx.js 的 Page() 方法的 data 对象中进行声明定义 # 2 在xx.wxml 中使用 {{}} 包裹&#xff0c;显示数据 # 3 可以显示如下&#xff0c;不能编写js语句或js方法-变量-算数运算-三元运算-逻辑判断# 4 只是单纯通过赋值&#xff0c;js中…

跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例

在数字化时代&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术正以其独特的空间分析和可视化能力&#xff0c;为游戏产业带来革命性的变革。《黑神话&#xff1a;悟空》作为中国首款3A级别的动作角色扮演游戏&#xff0c;不仅在游戏设计和技术上取得了突破&#xff0c…

【华为杯】第二十一届中国研究生数学建模竞赛

“华为杯”第二十一届中国研究生数学建模竞赛即将开始&#xff0c;梦想科研社给大家整理一些比赛信息&#xff0c;在正式开赛后&#xff0c;我们也会持续分享一些课题的分析以及代码&#xff0c;有需要的可以联系我们获取资料信息哦 一、时间节点 1.加密赛题开始下载时间&…

大数据新视界 --大数据大厂之SaaS模式下的大数据应用:创新与变革

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

计算机三级网络技术总结(二)

RPR使用统计复用的方法传输IP分组IEEE802.16a用于固定结点接入ADSL技术为速率非对称型&#xff0c;上行速率为64kbps~640kbpsRAID是磁盘阵列技术在一定程度上可以提高磁盘存储容量但不能提高容错能力中继器工作在物理层VTP有三种工作模式:VTP Server、VTP Client 和VTP Transpa…

Spring4-IoC2-基于注解管理bean

目录 开启组件扫描 使用注解定义bean Autowired注入 场景一&#xff1a;属性注入 场景二&#xff1a;set注入 场景三&#xff1a;构造方法注入 场景四&#xff1a;形参注入 场景五&#xff1a;只有一个构造函数&#xff0c;无注解 场景六&#xff1a;Autowired和Quali…

通信工程学习:什么是HSS归属用户服务器

HSS&#xff1a;归属用户服务器 HSS&#xff08;归属用户服务器&#xff0c;Home Subscriber Server&#xff09;是IP多媒体子系统&#xff08;IMS&#xff09;中控制层的一个重要组成部分&#xff0c;它扮演着存储和管理用户相关信息的核心角色。以下是关于HSS归属用户服务器的…

计算机毕业设计选题推荐-校园车辆管理系统-Java/Python项目实战(亮点:数据可视化分析、账号锁定)

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…