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

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

通义千问接入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;
    }

这样我们就实现流式回答

返回结果截图

image.png

结论

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

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



相关文章
|
4月前
|
自然语言处理 测试技术 开发工具
通义灵码上下文能力解析:自由组合需求描述,生成结果更高效
通义灵码提供智能会话能力,支持智能问答、文件编辑和智能体三种模式,帮助开发者解决编码问题,进行代码修复、调试及运行错误排查。它具备多文件修改、自主决策等能力,可端到端完成编码任务。在智能会话中,支持丰富的上下文(如代码文件、目录、图片、Git Commit 等),并允许用户自由组合提示词与上下文。插件可通过链接下载。此外,还支持多种上下文类型(#file、#folder、#image 等),便于开发者精准表达需求。
|
7月前
|
机器学习/深度学习 并行计算 API
Qwen2.5-1M: 支持100万Tokens上下文的开源Qwen模型
两个月前,Qwen团队升级了 Qwen2.5-Turbo,使其支持最多一百万个Tokens的上下文长度。今天,Qwen正式推出开源的 Qwen2.5-1M 模型及其对应的推理框架支持。
1258 28
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【AI大模型新资讯】从信息蜂房到上下文工程
1. **信息蜂房**:借鉴“信息茧房”概念,倡导多元交流与群体智慧,推动内容生态协同发展。 2. **ROLL**:高效强化学习库,专为大语言模型优化,提升训练效率与多场景应用能力。 3. **AI游戏引擎**:以AI驱动生成式游戏,实时响应玩家想象,重塑游戏创作与体验方式。 4. **质陪解决方案**:融合AI质检与陪练系统,全面评估销售行为,助力企业提升服务质量与销售能力。 5. **上下文工程**:构建动态信息环境,为大模型提供任务所需完整背景,决定AI智能体成败关键。
|
4月前
|
传感器 测试技术 开发工具
通义灵码添加上下文能力怎么用?一篇看懂
Qwen3系列混合推理模型已全面开源,其中Qwen3-235B-A22B在多项测试中表现卓越。通义灵码现已支持Qwen3,并上线编程智能体,具备自主决策与工具使用能力,可完成编码任务。开发者可通过多种方式添加上下文(如代码文件、图片、Git提交等),增强交互效果。体验地址:https://lingma.aliyun.com/download。
372 35
|
5月前
|
人工智能 中间件 程序员
大模型上下文协议 MCP 带来了哪些货币化机会
本文探讨了MCP(Model-Calling Protocol)的兴起及其对AI生态的影响。自2月中旬起,MCP热度显著提升,GitHub Star和搜索指数均呈现加速增长趋势。MCP通过标准化协议连接大模型与外部工具,解决了碎片化集成问题,推动AI应用货币化及生态繁荣。文章分析了MCP与Function Calling的区别,指出MCP更适用于跨平台、标准化场景,而Function Calling在特定实时任务中仍具优势。此外,MCP促进了 supply端(如云厂商、大模型、中间件服务商)和消费端(终端用户)的变革,尤其以Devin和Manus为代表,分别改变了程序员和普通用户的交互方式。
649 37
大模型上下文协议 MCP 带来了哪些货币化机会
|
4月前
|
存储 机器学习/深度学习 人工智能
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
本文探讨了多模态RAG系统的最优实现方案,通过模态特定处理与后期融合技术,在性能、准确性和复杂度间达成平衡。系统包含文档分割、内容提取、HTML转换、语义分块及向量化存储五大模块,有效保留结构和关系信息。相比传统方法,该方案显著提升了复杂查询的检索精度(+23%),并支持灵活升级。文章还介绍了查询处理机制与优势对比,为构建高效多模态RAG系统提供了实践指导。
1033 0
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
|
4月前
|
前端开发 JavaScript API
体验通义灵码2.5版本上下文工程目录及多文件选择
体验通义灵码2.5版本上下文工程目录及多文件选择
266 11
|
5月前
|
机器学习/深度学习 人工智能 编解码
月之暗面开源16B轻量级多模态视觉语言模型!Kimi-VL:推理仅需激活2.8B,支持128K上下文与高分辨率输入
月之暗面开源的Kimi-VL采用混合专家架构,总参数量16B推理时仅激活2.8B,支持128K上下文窗口与高分辨率视觉输入,通过长链推理微调和强化学习实现复杂任务处理能力。
346 5
月之暗面开源16B轻量级多模态视觉语言模型!Kimi-VL:推理仅需激活2.8B,支持128K上下文与高分辨率输入
|
8月前
|
人工智能 自然语言处理 数据处理
FlexRAG:不再局限于文本的 RAG!中科院开源多模态 RAG 助手,支持多数据类型、上下文压缩和多种检索器类型
FlexRAG 是中科院推出的高性能多模态 RAG 框架,支持多数据类型、上下文压缩和多模态数据处理,显著提升生成模型的表现。
960 17
FlexRAG:不再局限于文本的 RAG!中科院开源多模态 RAG 助手,支持多数据类型、上下文压缩和多种检索器类型

热门文章

最新文章