ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【番外】05:Python 和 LabVIEW 对接 千问(Qwen)

【番外】05:Python 和 LabVIEW 对接 千问(Qwen) 文章目录前言1. 文本生成2. 视觉理解3. 图片生成前言本文将讲解阿里云大模型——千问Qwen的对接方法。经研究发现部分千问 API 的对接方式同样是基于 OpenAI 框架因此可以与上一篇 DeepSeek 的文章对比参考。【番外】04Python 和 LabVIEW 对接 DeepSeek API1. 文本生成在 Python 中可以通过 OpenAI 的格式来访问 千问Qwen 模型。使用前需要先登录阿里云百炼平台申请一个 api_key 新用户会赠送一些额度。网址https://bailian.console.aliyun.comPython 代码fromopenaiimportOpenAI# 注意: 不同地域的base_url不通用下方示例使用北京地域的 base_url# - 华北2北京: https://dashscope.aliyuncs.com/compatible-mode/v1# - 美国弗吉尼亚: https://dashscope-us.aliyuncs.com/compatible-mode/v1# - 新加坡: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1请将WorkspaceId替换为业务空间ID# - 德国法兰克福: https://{WorkspaceId}.eu-central-1.maas.aliyuncs.com/compatible-mode/v1请将WorkspaceId替换为业务空间IDclientOpenAI(api_keyQWEN_API_KEY,# 替换成自己的 api_key.base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1,)completionclient.chat.completions.create(modelqwen3.7-plus,messages[{role:user,content:你是谁}])print(completion.choices[0].message.content)协议参数OpenAI 底层调用的是 HTTPS 请求。1请求链接是 “base_url 业务场景路径”例如在对话场景下需在base_url后拼接 “/chat/completions”2请求方式为 POST3头部 中的 authorization 要传入验证信息格式为 “Bearer 空格 api_key”4体部是 JSON 格式字符串传入 model 类型和 messages 列表。URL:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions Method:POST Header:content-type:application/jsonauthorization:Bearer api_keyBody:b {model: qwen3.7-plus, messages: [ {role: user, content: 你是谁} ] } 发送请求后千问 服务器返回 JSON 作为响应结果格式如下其中choices 是具体响应内容choices[0][“message”][“content”] 是AI的回答。{model:qwen3.7-plus,id:chatcmpl-d8ed7607-cea3-9367-b1a1-2cdb0ae5068d,choices:[{message:{content:我是通义千问Qwen由阿里巴巴集团通义实验室自主研发的大语言模型。作为一个 AI 助手我致力于为你提供清晰、准确、有帮助的回答与协助。请问今天有什么我可以帮你的吗,reasoning_content:用户问“你是谁”。\n我是一个人工智能助手由通义实验室研发名字叫通义千问Qwen。\n我需要回答我是通义千问由阿里巴巴集团通义实验室自主研发的大语言模型。\n\n起草回答\n我是通义千问Qwen由阿里巴巴集团通义实验室自主研发的大语言模型。我是一个人工智能助手致力于为你提供清晰、准确、有帮助的回答和协助。有什么我可以帮你的吗\n\n检查约束\n- 身份纯净用户问了“你是谁”所以我可以介绍自己。\n- 语言同步中文。\n\n回答\n我是通义千问Qwen由阿里巴巴集团通义实验室自主研发的大语言模型。作为一个 AI 助手我致力于为你提供清晰、准确、有帮助的回答与协助。请问今天有什么我可以帮你的吗,role:assistant},index:0,finish_reason:stop}],created:1781355505,object:chat.completion,usage:{total_tokens:232,completion_tokens:220,prompt_tokens:12,completion_tokens_details:{reasoning_tokens:170,text_tokens:220},prompt_tokens_details:{cached_tokens:0,text_tokens:12}}}LabVIEW 代码搞清楚协议参数后就可以用 LabVIEW 进行等效的 HTTPS 请求。1VI 框图与上一篇文章几乎一样只需将 URL 和 model 对应改成 千问模型的值即可2中文字符同样需要 UTF8 转换JSON 与 LabVIEW 簇的转化也同理。多轮对话千问模型的多轮对话与 DeepSeek 逻辑一样需要把所有历史问答 本次新问题一起写入messages 数组中。Python代码如下fromopenaiimportOpenAI clientOpenAI(api_keyQWEN_API_KEY,# 替换成自己的 api_key.base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1)messages[]whileTrue:qinput(Q: )question{role:user,content:q}messages.append(question)responseclient.chat.completions.create(modelqwen3.7-plus,messagesmessages,)answerresponse.choices[0].message messages.append(answer)print(A: answer.content)print(\n)2. 视觉理解视觉理解模型可以根据您传入的图片或视频进行回答支持单图或多图的输入适用于图像描述、视觉问答、物体定位等多种任务。本文以图片理解为例。通过 image_url 变量上传图片。可以是在线图片URL链接也可以是本地图片的 base64 编码。对于多图模式只须在 content 数组中插入多个 {“type”: “image_url”, image_url: {“url”:“XXX”}} 结构。Python 代码fromopenaiimportOpenAIimportbase64defencode_image(image_path):withopen(image_path,rb)asimage_file:returnbase64.b64encode(image_file.read()).decode(utf-8)base64_imageencode_image(rD:\example.jpg)clientOpenAI(api_keyQWEN_API_KEY,# 替换成自己的 api_key.base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1)completionclient.chat.completions.create(modelqwen3.7-plus,messages[{role:user,content:[{type:image_url,image_url:{url:fdata:image/jpeg;base64,{base64_image}},#image_url: {url: https://link/to/the/picture.jpg}},{type:text,text:图中描绘的是什么景象?},],}],)print(completion.choices[0].message.content)LabVIEW 代码读取图片文件二进制流再经过 base64 编码替换掉请求体中的相应字段即可。Base64Encode.vi 位于 LabVIEW 20XX\vi.lib\httpClient\ 路径下。3. 图片生成千问的 图片生成 API不是基于 OpenAI 访问而是需要依赖 dashscope 库。千问文生图模型均支持同步调用其中qwen-image-plus、qwen-image模型支持异步调用。本文以同步调用为例。Python 代码importjsonimportosimportdashscopefromdashscopeimportMultiModalConversation dashscope.base_http_api_urlhttps://dashscope.aliyuncs.com/api/v1api_keyQWEN_API_KEY,# 替换成自己的 api_key.messages[{role:user,content:[{text:冬日北京的都市街景青灰瓦顶、朱红色外墙的两间相邻中式商铺比肩而立檐下悬挂印有剪纸马的暖光灯笼在阴天漫射光中投下柔和光晕映照湿润鹅卵石路面泛起细腻反光。左侧为书法店靛蓝色老旧的牌匾上以遒劲行书刻着“文字渲染”。店门口的玻璃上挂着一幅字自上而下用田英章硬笔写着“专业幻灯片 中英文海报 高级信息图”落款印章为“1k token”朱砂印。店内的墙上可以模糊的辨认有三幅竖排的书法作品第一幅写着“阿里巴巴”第二幅写着“通义千问”第三幅写着“图像生成”。一位白发苍苍的老人背对着镜头观赏。右侧为花店牌匾上以鲜花做成文字“真实质感”店内多层花架陈列红玫瑰、粉洋牡丹和绿植门上贴了一个圆形花边标识标识上写着“2k resolution”门口摆放了一个彩色霓虹灯上面写着“细腻刻画 人物 自然 建筑”。两家店中间堆放了一个雪人举了一老式小黑板上面用粉笔字写着“Qwen-Image-2.0 正式发布”。街道左侧年轻情侣依偎在一起女孩是瘦脸身穿米白色羊绒大衣肉色光腿神器。女孩举着心形透明气球气球印有白色的字“生图编辑二合一”。里面有一个毛茸茸的卡皮巴拉玩偶。男孩身着剪裁合体的深灰色呢子外套内搭浅色高领毛衣。街道右侧一个后背上写着“更小模型更快速度”的骑手疾驰而过。整条街光影交织、动静相宜。}]}]responseMultiModalConversation.call(api_keyapi_key,modelqwen-image-2.0-pro,messagesmessages,result_formatmessage,streamFalse,watermarkFalse,prompt_extendTrue,negative_prompt低分辨率低画质肢体畸形手指畸形画面过饱和蜡像感人脸无细节过度光滑画面具有AI感。构图混乱。文字模糊扭曲。,size2048*2048)ifresponse.status_code200:print(json.dumps(response,ensure_asciiFalse))print(response.output.choices[0].message.content[0][image])else:print(fHTTP返回码{response.status_code})print(f错误码{response.code})print(f错误信息{response.message})返回内容 response 是个类似 JSON 的结构体。如果请求成功那么生成图片的 URL response.output.choices[0].message.content[0][“image”]协议参数URL https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation Method:POST Header:content-type:application/jsonauthorization:Bearer api_keyBody:{model:qwen-image-2.0-pro,input:{messages:[{role:user,content:[{text:冬日北京的...}]}]},parameters:{negative_prompt:低分辨率低画质肢体畸形...,prompt_extend:true,watermark:false,size:2048*2048}}返回结构如下{output:{choices:[{finish_reason:stop,message:{content:[{image:https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.png?Expiresxxx}],role:assistant}}]},usage:{height:2048,image_count:1,width:2048},request_id:d0250a3d-b07f-49e1-bdc8-6793f4929xxx}LabVIEW 代码对于返回的图片 URL可以通过 GET 请求将图片下载到本地并打开浏览。如下图
返回列表