通义千问接入进阶:流式、文件、图片、上下文

通义千问接入SSE

接入流式对话上下文对话图片对话文件对话

上篇文章有很多小伙伴再问:开启了流式(SSE)如何以API的形式返回数据呢?

这篇文章就来给大家解惑。

实现过程

如何生成key和模型类型请翻找之前的文章,这里就不一一讲述了,直接上代码

流式问答 上下文问答 千问long文件问答

php 代码封装

  /*** qwlong流式输出* @param $message* @param $fileId* @return void*/public function dashChat($message, $fileId=null, $messageList=null){try {$api_key = env("QwLongKey","输入自己的key");$url = env("QwLongUrl") ?? 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions';$data = ['model' => 'qwen-long','messages' => [['role' => 'system','content' => 'You are a helpful assistant.'],],'stream' => true];//可以根据逻辑传入上下文问答if ($messageList) {foreach ($messageList as $val){if ($val->type == 2){$data['messages'][] =  ['role' => 'system','content' => 'fileid://' . $val->file_id];} else {$data['messages'][] =['role' => 'user','content' => $val->question];$data['messages'][] =['role' => 'assistant','content' => $val->answer];}}}//文件回答 需要先把文件传到阿里云接口 将返回的文件id传入即可if ($fileId){$data['messages'][] =  ['role' => 'system','content' => 'fileid://' . $fileId];}$data['messages'][] =  ['role' => 'user','content' => $message];// 创建一个变量来存储流式传输的数据$response = '';$ch = curl_init($url);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer ' . $api_key,'Content-Type: application/json']);curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($curl, $data) use (&$response) {//$resData = json_decode($data);$result = processStreamedData($data);$response .= $result;//流式信息打印echo $result;ob_flush();flush();return strlen($data);});curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 执行请求$success = curl_exec($ch);// 检查是否有错误发生if (!$success) {echo "data: {\"error\": \"" . curl_error($ch) . "\"}\n\n";ob_flush();flush();}curl_close($ch);return $response;} catch (\Exception $exception) {echo "data: {\"error\": \"服务器错误: " . $exception->getMessage() . "\"}\n\n";ob_flush();flush();}}

流式信息返回

public function gainFlow(Request $request){$response = new StreamedResponse(function (){//发起会话$result = $this->dashChat('输入需要提问的问题');});//设置流式返回的header头$response->headers->set('Content-Type', 'text/event-stream');$response->headers->set('Cache-Control', 'no-cache');$response->headers->set('Connection', 'keep-alive');$response->headers->set('X-Accel-Buffering', 'no');return $response;}

这样我们就实现流式回答

返回结果截图

结论

根据上文可以实现类似于 chatgpt 和通义千问一样的流式对话

并且支持上下文问答文件问答图片问答等操作

– 欢迎点赞、关注、转发、收藏【我码玄黄】,gonghao同名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源大模型和闭源大模型,打法有何区别?

现阶段,各个公司都有自己的大模型产品,有的甚至不止一个。除了小部分开源外,大部分都选择了闭源。那么,头部开源模型厂商选择开源是出于怎样的初衷和考虑?未来大模型将如何发展?我们来看看本文的分享。 在对…

软件测试最全面试题及答案整理(2024最新版)

1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自己,不断…

Linux 压测工具---ab

安装 yum -y install httpd-tools 本文用于压测k8s集群内pod,k8s集群master可直接测试pod ip 命令: ab -n 10000 -c 100 http://10.42.8.212/ 其中,-n表示请求数,-c表示并发数,ip必须有”/“,表示此目录…

洗地机品牌哪个最好用?硬核推荐五大实力爆款洗地机

在这个忙碌的时代,家就是我们放松的港湾,但要保持它的清洁与舒适常常很不容易。每天拖着疲惫的身体回家,还要面对地板上那些难缠的灰尘、污渍,真是非常让人头疼。不过,洗地机的出现就像是给家务清洁装上了智能引擎&…

【云WAF为您的Web防御保驾护航】

在这个数字时代,网络就像是一张没有尽头的大网,将整个世界都联系在了一起。但是,在这个网络的背后,却潜藏着数不清的安全隐患。恶意攻击、数据泄漏、网站瘫痪……各种隐患就像是隐藏在暗处的毒蛇,时刻都会对没有任何防…

Redis深度解析:核心数据类型与键操作全攻略

文章目录 前言redis数据类型string1. 设置单个字符串数据2.设置多个字符串类型的数据3.字符串拼接值4.根据键获取字符串的值5.根据多个键获取多个值6.自增自减7.获取字符串的长度8.比特流操作key操作a.查找键b.设置键值的过期时间c.查看键的有效期d.设置key的有效期e.判断键是否…

Google重大更新--解读Android Auto认证4.3

Google在今年五月更新了Android Auto 4.2.2版本,而在2024年7月他们推出了Android Auto 4.3版本,这是自2023年9月以来对Android Auto 4.2版本的一次重大更新。 为了确保合规性和顺利认证,OEM和Tire1必须确保PDK组件版本与正在认证的主机的Rece…

three.js 后期处理,物体高亮

效果图 代码 引入资源文件,在初始化时创建后处理对象 // 用于边缘高亮的插件// 引入后处理扩展库EffectComposer.jsimport { EffectComposer } from "three/addons/postprocessing/EffectComposer.js";// 引入渲染器通道RenderPassimport { RenderPass }…

Kafka-服务端-网络层-源码流程

整体架构如下所示: responseQueue不在RequestChannel中,在Processor中,每个Processor内部有一个responseQueue 客户端发送的请求被Acceptor转发给Processor处理处理器将请求放到RequestChannel的requestQueue中KafkaRequestHandler取出reque…

深度解析Java世界中的对象镜像:浅拷贝与深拷贝的奥秘与应用

在Java编程的浩瀚宇宙中,对象拷贝是一项既基础又至关重要的技术。它直接关系到程序的性能、资源管理及数据安全性。然而,提及对象拷贝,不得不深入探讨其两大核心类型:浅拷贝(Shallow Copy)与深拷贝&#xf…

防爆智能手机如何解决危险环境下通信难题?

在化工厂、石油行业、矿山等危险环境中,通信安全一直是难题。传统手机因不具备防爆功能,可能引发火花、爆炸等安全风险,让工作人员在关键时刻难以及时沟通。但如今,防爆智能手机的出现彻底改变了这一现状! 安全通信&am…

手机如何充当电脑摄像头,新手使用教程分享(新)

手机如何充当电脑摄像头?随着科技的发展,智能手机已经成为我们日常生活中不可或缺的一部分。手机的摄像头除了拍摄记录美好瞬间之外,其实还有个妙用,那就是充当电脑的摄像头。手机摄像头充当电脑摄像头使用的话,我们就…

一分钟学习数据安全—自主管理身份SSI分布式加密密钥管理

在这篇之前,我们已经对SSI有了一个全局的了解。这个系列的文章可以作为一个学习笔记来参考,真正要实践其中的一些方案、协议,还需要参考专业的书籍和官方文档。作为一个SSI系列学习笔记的最后一篇,我们做一个简单的延伸&#xff0…

【中项第三版】系统集成项目管理工程师 | 第 9 章 项目管理概论① | 9.1 - 9.3

前言 第 9 章对应的内容选择题和案例分析都会进行考查,这一章节理论性较强,学习要以教材为准。本章分值预计在4-5分。 目录 9.1 PMBOK的发展 9.2 项目基本要素 9.2.1 项目基础 9.2.2 项目管理 9.2.3 项目成功的标准 9.2.4 项目、项目集、项目组合…

多态的优点

多态的优点 1、多态的优点1.1 可替换性(Substitutability)2、可扩充性(Extensibility) 2、总结 💖The Begin💖点点关注,收藏不迷路💖 1、多态的优点 在面向对象编程(OOP…

无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、云计算的发展趋势 2、无服务器计算简介 二、无服务…

红海云签约海新域集团,产业服务运营领军企业加速人力资源数字化转型

北京海新域城市更新集团有限公司(以下简称“海新域集团”)是北京市海淀国有资产投资集团有限公司一级监管企业,致力于成为国内领先的产业服务运营商。集团积极探索城市和产业升级新模式,通过对老旧、低效等空间载体重新定位规划、…

FPGA基本资源介绍

文章目录 FPGA资源介绍1.可编程输入输出单元(IOB)2.可配置逻辑块(CLB)3.数字时钟管理模块(DCM)4.嵌入式块RAM(BLOCK RAM / BRAM)4.1其他ram 5.丰富的布线资源6.底层内嵌功能单元7.内嵌专用硬核软核、硬核、以及固核的概念 FPGA资源介绍 1.可编程输入输出单元(IOB) 可编程输入…

C++视觉开发 五.答题卡识别

答题卡识别主要步骤 (1)反二值化,选项处理为前景(白色),其它处理为背景(黑色)。 (2)每个选项提取出来,计算各选项白色像素点个数。 (3)筛选出白色像素点最多的选项作为考生答案。 (4)与标准答案…

【机器学习】连续字段的特征变换

介绍 除了离散变量的重编码外,有的时候我们也需要对连续变量进行转化,以提升模型表现或模型训练效率。在之前的内容中我们曾介绍了关于连续变量标准化和归一化的相关内容,对连续变量而言,标准化可以消除量纲影响并且加快梯度下降…