俩步引入科大讯飞星火模型助手

122 阅读1分钟

一. 创建助手

  1. 先去这个地方注册个账号实名一下xinghuo.xfyun.cn/botcenter/c…
  2. 然后创建个助手该填的填一下
  3. 拿到APPID,接口地址,API Secret,API Key四样东西 image.png

二. 项目中引入

  1. npm安装 crypto-js 终端跑命令 cnpm install crypto-js
  2. 写一个方法用户鉴权获取请求链接 API_KEY,API_SECRET,URL 换成自己的
export function getWebsocketUrl(): Promise<string> {
  return new Promise((resolve, reject) => {
    var apiKey = API_KEY;  // 换自己的
    var apiSecret = API_SECRET;  // 换自己的
    let url = URL;  // 换自己的
    var host = location.host;
    // @ts-ignore
    var date = new Date().toGMTString();
    var algorithm = "hmac-sha256";
    var headers = "host date request-line";
    var signatureOrigin = `host: ${host}\ndate: ${date}\nGET v1.1/chat HTTP/1.1`;
    var signatureSha = CryptoJS.HmacSHA256(signatureOrigin, apiSecret);
    var signature = CryptoJS.enc.Base64.stringify(signatureSha);
    var authorizationOrigin = `api_key="${apiKey}", algorithm="${algorithm}", headers="${headers}", signature="${signature}"`;
    var authorization = btoa(authorizationOrigin);
    url = `${url}?authorization=${authorization}&date=${date}&host=${host}`;
    resolve(url);
  });
}
  1. 先调上面的方法拿到请求地址,然后用该地址连接Websocket发送
this.state.url.value = await getWebsocketUrl();  // 拿到请求请求地址

// 发送方法
sendMsg() {

  let params = {   // 请求要带的参数
    header: {
      app_id: APPID,
    },
    parameter: {
      chat: {
        domain: "general",
        temperature: 0.5,
        max_tokens: 1024,
      },
    },
    payload: {
      message: {
        text: [{ role: "user", content: "这里替换成内容" }],   // content为请求的内容,也就是问题
      },
    },
  };

  this.socket = new WebSocket(url as string);
  // 连接成功的回调
  this.socket.onopen = function (event) {
    console.log("WebSocket 已连接", event);
    that.socket?.send(JSON.stringify(params));   // 这个地方发送请求
  };

  // 收到消息的回调
  this.socket.onmessage = function (event) {
    console.log("收到服务器内容:");   // 这个地方可以拿到服务器的响应
  };

  // 连接错误的回调
  this.socket.onerror = function (event) {
    console.log("WebSocket 错误", event);
  };

  // 连接关闭的回调
  this.socket.onclose = function (event) {
    console.log("WebSocket 连接已关闭", event);
  };
}
  1. 成了!!!

这里解释了为什么要这样干,包含了官方给的例子www.xfyun.cn/doc/spark/W…

总结一下,先去讯飞星火官网编辑一个助手拿到需要的参数信息,然后根据要求拿到websocket连接地址,然后发起请求就成了!!!