首页 > 其他分享 >花200块咨询费买的百度千帆大模型的流式数据解析方法

花200块咨询费买的百度千帆大模型的流式数据解析方法

时间:2024-01-20 10:11:57浏览次数:25  
标签:body 200 access 千帆 content let onMessage 费买 type

EventSource只能使用GET方法,所以只能使用fetch或者xhr来实现,该示例使用的fetch来实现。

//千帆流式接口js调用demo
function callWenXinWorkshopSSE(url, access_token, body, onMessage) {
    body.stream = true;
    const decoder = new TextDecoder("utf-8");
    let buffer = '';
    let dataMsgBuffer = '';
    const processMessage = (reader) => {
        reader.read().then(content => {
            buffer += decoder.decode(content.value, {stream: !content.done});
            const lines = buffer.split('\n');
            buffer = lines.pop();
            lines.forEach(line => {
                if (line == "") { //读取到空行,一个数据块发送完成
                    onMessage({
                        type: "DATA",
                        content: JSON.parse(dataMsgBuffer)
                    });
                    dataMsgBuffer = "";
                    return;
                }
                let [type] = line.split(":", 1);
                let content = line.substring(type.length + 1);
                if (type == 'data') { //数据块没有收到空行之前放入buffer中
                    dataMsgBuffer += content.trim();
                } else if (type == '' && content != '') { //服务端发送的注释,用于保证链接不断开
                    onMessage({
                        type: "COMMENT",
                        content: content.trim()
                    });
                } else {
                    onMessage({
                        type: type,
                        content: content.trim()
                    })
                }
            })
            if (!content.done) {
                processMessage(reader);
            } else {
                onMessage({
                    type: "END"
                })
            }
        })
    }
    fetch(`${url}?access_token=${access_token}`, {
        headers: {
            "Content-Type": "application/json"
        },
        method: "POST",
        body: JSON.stringify(body)
    })
        .then(response => response.body.getReader())
        .then(reader => processMessage(reader))
        .catch(error => onMessage({
            type: "ERROR",
            content: error
        }));
}

let url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions"
let access_token = "
let body = {
    "messages": [
        {
            "role": "user",
            "content": "给我推荐一些自驾游路线"
        }
    ]
}
callWenXinWorkshopSSE(url, access_token, body, (msg) => {
    if (msg.type == "DATA") {
        console.log(msg.content.result);
    } else if (msg.type == "END") {
        console.log("响应返回结束");
    } else {
        console.log(msg);
    }
})

  

标签:body,200,access,千帆,content,let,onMessage,费买,type
From: https://www.cnblogs.com/spikespiegel5112/p/17976090

相关文章

  • 提速40%!江波龙推出XP2200系列M.2 2280规格SSD:疾速7100MB/s
    江波龙FORESEEXP2200系列PCIeSSD推出M.22280规格。产品搭载主流232层3DTLC闪存颗粒,并采用基于12nm工艺的4通道高性能主控芯片,支持HMB主机高速缓冲技术,能够提供高达2400MT/s的I/O速率,进一步释放产品潜能。产品所用的主控芯片减少了一半的读写通道数量,从而显著降低25%的功耗并......
  • 洛谷题单指南-模拟和高精度-P1098 [NOIP2007 提高组] 字符串的展开
    原题链接:https://www.luogu.com.cn/problem/P1098题意解读:题目本身是一道模拟题,但是细节点较多,要拿100分,有以下注意点:1、-号两个需要同时为小写字母或者数字,才进行填充2、-号左边>=右边,直接输出-3、对待填充的内容的处理,可以先看是否填充*;小写字母和数字的填充都是前一位asci......
  • 洛谷题单指南-模拟和高精度-P1067 [NOIP2009 普及组] 多项式输出
    原题链接:https://www.luogu.com.cn/problem/P1067题意解读:模拟法依次输出多项式内容即可,但是需要考虑的周全,主要有以下关键点:1、系数为0时不输出多项式2、第一个符号,只有负号才输出3、次数不为0时,不输出为1的系数;次数为0时,输出所有系数4、次数为1时,不输出次数;次数为0时不输......
  • 华为这年终奖,总包得有200多万!
    前段时间在脉脉上看到华为某位员工晒出的工资,属实把我震惊了。......
  • [NOIP2007 普及组] 守望者的逃离
    [NOIP2007普及组]守望者的逃离题目背景NOIP2007普及组T3题目描述恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去。到那时,岛......
  • 【2024潇湘夜雨】WIN11_Pro_21H2.22000.2713软件选装纯净版1.15
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_21H2.22000.2713。2.增加部分优化方案,手工精简部分较多。3.OS版本号为22000.2713。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.15.0.5》网卡版、......
  • 梦幻内存!全何为AMD撕裂者打造192GB DDR5-7200
    1月16日消息,全何科技(V-Color)宣布,面向AMD锐龙线程撕裂者7000系列处理器,推出顶级的192GBDDR5内存套装,频率最高可达7200MHz。AMD撕裂者7000系列支持四通道DDR5内存,单系统可以插四根,虽然不及撕裂者PRO7000系列的八通道,但在消费级领域也是无敌的存在。全何新内存采用精选的SK海......
  • 开发遇到的问题总结---mysql建表报SQL 错误 [1067] [42000]: Invalid default value f
    报错内容:SQL错误[1067][42000]:Invaliddefaultvaluefor'begin_time'sql语句:CREATETABLE`tb_seckill_voucher`(`voucher_id`bigint(20)UNSIGNEDNOTNULLCOMMENT'关联的优惠券的id',`stock`int(8)NOTNULLCOMMENT'库存',`creat......
  • webserver2003解析
    webserver解析/etc/os-release查看操作系统发行版本netstat-tunal查看开放端口或者使用kalinmap-sV-p-192.168.218.131查看22/tcpopensshOpenSSH8.2p1Ubuntu4ubuntu0.4(UbuntuLinux;protocol2.0)80/tcpopenhttpApachehttpd2.4.41((Ubunt......
  • 洛谷题单指南-模拟和高精度-P1042 [NOIP2003 普及组] 乒乓球
    原题链接:https://www.luogu.com.cn/problem/P1042题意解读:分别针对11分制和21分制,输出每局比分。只需要判断一局的结束条件:得分高者如果达到11或者21,且比分间隔大于等于2分,则表示一局结束,可开始下一局,用模拟法即可解决。100分代码:#include<bits/stdc++.h>usingnamespaces......