C#实现一个HttpClient集成通义千问-流式输出内容提取

返回对象处理

返回对象分析

根据流式返回的数据处理

在这里插入图片描述

内容对象

{
  "choices": [
    {
      "delta": { "content": "", "role": "assistant" },
      "index": 0,
      "logprobs": null,
      "finish_reason": null,
    },
  ],
  "object": "chat.completion.chunk",
  "usage": null,
  "created": 1733319748,
  "system_fingerprint": null,
  "model": "qwen2-vl-7b-instruct",
  "id": "chatcmpl-34615907-7d35-9f8a-993b-af7c94ea8717",
}

最后一条显示token的内容

{
  "choices": [],
  "object": "chat.completion.chunk",
  "usage": { "prompt_tokens": 29, "completion_tokens": 100, "total_tokens": 129 },
  "created": 1733319748,
  "system_fingerprint": null,
  "model": "qwen2-vl-7b-instruct",
  "id": "chatcmpl-34615907-7d35-9f8a-993b-af7c94ea8717",
}

将上面两个json内容合并生成一个对象类,主要就是choices字段和usage字段合并两个类就行了

具体操作就是复制json内容,切换到一个空的类文件中,然后在“编辑”→“选择性粘贴”→“将JSON 粘贴为类”操作,自动生产类,

在这里插入图片描述

将上面两个json都生成一遍,合并主类为StreamObject,得到json类如下

    public class StreamObject
    {
        public Choice[] choices { get; set; }
        public string _object { get; set; }
        public Usage usage { get; set; }
        public int created { get; set; }
        public object system_fingerprint { get; set; }
        public string model { get; set; }
        public string id { get; set; }
    }

    public class Choice
    {
        public Delta delta { get; set; }
        public object finish_reason { get; set; }
        public int index { get; set; }
        public object logprobs { get; set; }
    }

    public class Delta
    {
        public string content { get; set; }
    }

    public class Usage
    {
        public int prompt_tokens { get; set; }
        public int completion_tokens { get; set; }
        public int total_tokens { get; set; }
    }

流式对象反序列化

对返回的数据进行反序列化,然后判断choices数量,获取里面的content内容

额外的:可以sleep一下,可以看到像对话一样流式输出的效果了

在这里插入图片描述

 var streamObject = JsonSerializer.Deserialize<StreamObject>(data);
 if (streamObject.choices.Count() > 0)
 {
     var contentRes = streamObject.choices[0].delta.content;
     Console.Write(contentRes);
 }

效果:

显示提取出的内容

在这里插入图片描述

视频教程

.Net+AI开发入门HttpClient实现通义千问集成-流式输出内容提取和实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海盗Sharp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值