当前位置:首页 » 《关注互联网》 » 正文

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

3 人参与  2024年11月01日 12:40  分类 : 《关注互联网》  评论

点击全文阅读


如今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://m.zhangshiyu.com/post/180930.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 林语熙周晏京(离婚后,老公天天跪求复合全集阅读)最新章节免费在线阅读_《离婚后,老公天天跪求复合全集阅读》最新热门小说 -
  • 顾绫雪嬴政《被始皇读心后,文武百官卷疯了!完结版阅读》完整版免费在线阅读_(顾绫雪嬴政)全集免费阅读 -
  • 情深意长皆成空完整版阅读(沈卿林砚辞)抖音热文_《情深意长皆成空完整版阅读》最新章节免费在线阅读 -
  • 姐姐为暴富重伤傅家金孙后火葬场了全集阅读小说(傅延江瑶)全文免费阅读无弹窗大结局_(姐姐为暴富重伤傅家金孙后火葬场了全集阅读免费阅读全文大结局)最新章节列表_笔趣阁(姐姐为暴富重伤傅家金孙后火葬场了全集阅读) -
  • 乔以诺萧瑾淮(不是你好是我好全集阅读)精彩试读_《不是你好是我好全集阅读》全本阅读 -
  • 白月光双双《重生后我成全老公和白月光,他却急了全集》全文免费阅读无弹窗大结局_(白月光双双)最新章节免费在线阅读 -
  • 苏小枫苏末小说免费笔趣阁_苏小枫苏末小说全章完本大结局
  • 死遁后他疯了最新小说全文阅读_最新免费小说沈轻洲林梦江之雪_完本小说(死遁后他疯了)
  • 免费小说《顾里宋婷婷小岳欧颖倩》已完结(顾里宋婷婷小岳欧颖倩)热门小说大结局全文阅读笔趣阁
  • 侄子为求富贵,变性后全家后悔最新小说_免费小说全文阅读(苏小枫苏末)_侄子为求富贵,变性后全家后悔苏小枫苏末小说推荐完结
  • 最新《沈轻洲林梦江之雪》小说(全集完整新上小说大结局(沈轻洲林梦江之雪))全文阅读笔趣阁
  • 拒绝嫁给姐夫后,我在八零年代暴富了(陈小棠沈正韩)阅读 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1