当前位置: 首页 > article >正文

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实现通义千问集成-流式输出内容提取和实现


http://www.kler.cn/a/429983.html

相关文章:

  • 深度解析 Python 网络框架:Django、Tornado、Flask 和 Twisted
  • HTML实战课堂之简单的拜年程序
  • MiniMind - 从0训练语言模型
  • 获得PostgreSQL中级认证后,可以从事哪些工作岗位?
  • 人工智能-数据分析及特征提取思路
  • DEV C++软件下载
  • 鸿蒙特色实战2
  • 商业银行基于容器云的分布式数据库架构设计与创新实践
  • JavaScript 数组的高级用法与最佳实践
  • 如何解决 java.nio.charset.CoderMalfunctionError: 编码器故障错误问题?亲测有效的解决方法!
  • 分布式搜索引擎之elasticsearch基本使用1
  • Java快速分组技术解析
  • 1.1 Beginner Level学习之“编写简单的发布服务器和订阅服务器”(第十二节)
  • 逆波兰算法详解及应用(计算数学表达式)
  • 自动驾驶领域常用的软件与工具
  • 使用Docker安装Qdrant向量数据库
  • 013-SpringBoot 定义优雅的全局异常处理方式
  • ubuntu20.04安装anygrasp_sdk
  • 个人IP建设:简易指南
  • sql常见50道查询练习题
  • 【DataWorks最佳实践】权限及安全-风险识别规则响应案例
  • 手机端常见 BUG 深度剖析:成因、表现与解决之道
  • Android 屏蔽安全模式+去掉系统安全模式(SAFE MODE)
  • Orleans使用KafkaStream
  • SQL,根据数据的时间跨度进行不同粒度的统计
  • JavaScript 单例模式的创建与应用