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

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.lryc.cn/news/500903.html

相关文章:

  • 微信小程序后台搭建—node+mysql
  • 断点续传+测试方法完整示例
  • C# 中的静态构造函数和实例构造函数的区别
  • 如何在UI自动化测试中创建稳定的定位器?
  • 【5G】5G技术组件 5G Technology Components
  • 四十一:Web传递消息时的编码格式
  • 【细如狗】记录一次使用MySQL的Binlog进行数据回滚的完整流程
  • 什么是云原生数据库 PolarDB?
  • Kafka Stream实战教程
  • BEPUphysicsint定点数3D物理引擎使用
  • Splatter Image运行笔记
  • python爬虫--某房源网站验证码破解
  • Micropython编译ESP32C3开发板版本过程详细步骤步骤
  • 【开源免费】基于SpringBoot+Vue.JS大创管理系统(JAVA毕业设计)
  • mysql 和 tidb的区别
  • 传输层5——TCP可靠传输的实现(重点!!)
  • 基于Python实现web网页内容爬取
  • Centos7和9安装mysql5.7和mysql8.0详细教程(超详细)
  • 星闪WS63E开发板的OpenHarmony环境构建
  • MongoDB数据建模小案例
  • MySQL(库的操作)
  • 【55 Pandas+Pyecharts | 实习僧网Python岗位招聘数据分析可视化】
  • java中23种设计模式的优缺点
  • 【JavaEE】多线程(7)
  • 如何高效的向AI大模型提问? - 提示工程Prompt Engineering
  • 4K高清壁纸网站推荐
  • EasyExcel注解使用
  • Visual Basic 6 关于应用的类库 - 开源研究系列文章
  • C#泛型
  • go语言的成神之路-标准库篇-fmt标准库