http对接deepseek,uniapp对接deepseek

uniapp   2025-03-21 15:08   44   0  
const requestTask = uni.request({
      url: 'https://maas-api.cn-huabei-1.xf-yun.com/v1/chat/completions',
      method: "POST",
        data: {
        "model": "xdeepseekv3",
        "messages": [{"role": "user","content": "cehsi"}],
        "stream": true
        },
        header: {
            'Content-Type': 'application/json',
            'Authorization': 'Bearer 你的apikey,
        },
      enableChunked: true, // 开启分片接收
      responseType: 'arraybuffer', // 数据格式
        success: (res) => {
            console.log("0",res.data);
        },
      fail: (error) => {
       
      }
    });
    requestTask.onChunkReceived (res => {
      let mesg = this.decode(res.data)
      if (mesg) {
        console.log("分片接收",mesg);
      }
    })

// 解析数据方法
decodeUTF8(data) {
        // 将二进制数据转为Uint8数组
        const uint8Array = new Uint8Array(data);
        // 传统方式转换字符串(兼容旧环境)
        let string = '';
        for (let i = 0; i < uint8Array.length; i++) {
            string += String.fromCharCode(uint8Array[i]);
        }
        // 双重解码处理特殊字符(如中文)
        return decodeURIComponent(escape(string));
    }
    decode(data) {
        const text = this.decodeUTF8(data);
        const lines = text.split('\n');
        let result = '';
       
        for (let line of lines) {
            if (line.startsWith('data: ')) {
                const jsonData = line.slice(6).trim();
               
                // 结束标识处理
                if (jsonData === '[DONE]') return result;
               
                // 清理控制字符(防止JSON解析失败)
                const cleanedData = jsonData.replace(/[\u0000-\u001F\u007F-\u009F]/g, '');
               
                try {
                    const parsedData = JSON.parse(cleanedData);
                    // 提取AI生成内容
                    result += parsedData.choices[0].delta.content || '';
                } catch (e) {
                    console.error('解析失败:', e);
                }
            }
        }
        return result;
    },


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。