记录一下使用json解析大模型SSE流式返回时遇到的解析失败问题【json.decoder.JSONDecodeError: Expecting value: line 1 column 1 】

首先,来看一下大模型流式返回的SSE数据格式

在这里插入图片描述

可以看到SSE格式会返回event:data:字段,这就是典型的SSE的数据格式。

下面是最开始解析大模型流式返回时的代码:

在这里插入图片描述

这一版代码使用json库直接解析上面的SSE数据格式,此时发生了报错

在这里插入图片描述

为什么会报错呢?因为json库只能解析json格式,而不是解析SSE数据格式

那么什么是json格式呢?简单来说,就是由两个大括号括起来,内部是一些键值对(单个json数据,多个json数据则是由中括号括起来,中括号内部是多个单个json数据,每个json数据由逗号分隔),如下:

{
        "bot_id": "74812695288********",
        "user_id": "123456789",
        "stream": True,
        "auto_save_history": True,
        "additional_messages": [
            {
                "role": "user",
                "content": prompt,
                "content_type": "text"
            }
        ]
    }

通过将JSON数据格式和本文最上面的SSE数据格式对比,我们可以知道:SSE格式比JSON格式的数据多了两个字符串event:data:,因此直接使用JSON库来解析是无法正确解析的。

此时,我们需要先将data:去掉,才可以去正确解析SSE数据流中的data:部分(这里的解析指的是json.dumps,即将字典等Python对象转化为JSON字符串),代码如下:

在这里插入图片描述

此时再次运行,便没有了上面的报错信息

总之遇到报错【json.decoder.JSONDecodeError: Expecting value: line 1 column 1 】,就要检查三点

  • json数据是否为空
  • json格式是否正确(例如本例)
  • json格式是否完整(是否少大括号,中括号,逗号等)

ps:随手记录一下,没有太多注意排版,还请见谅,希望能对各位有所帮助~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值