news 2026/7/15 11:13:58

LangChain与qwen-vl-plus的集成实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangChain与qwen-vl-plus的集成实战

多模态AIAgent开发实践 邓立国、周驰岷、邓淇等 清华大学出版社【行情 报价 价格 评测】-京东

《多模态AI Agent开发实践》1~6章试读-CSDN博客

LangChain与通义千问Qwen-VL-Plus的集成方法是通过ChatOpenAI类配合阿里云DashScope兼容接口(compatible-mode/v1)实现API调用,分别使用LangChain的ChatPromptTemplate构建多模态消息、PydanticOutputParser实现结构化输出解析,完成端到端的多模态推理任务。本节将以“工业巡检图片异常检测”为实战场景,演示完整集成流程。

(1)本地图片预处理:通过Base64编码将图片转换为data:image/jpeg;base64,...内联格式,避免HTTP多部分传输兼容性问题,显著降低请求超时概率。

(2)结构化输出约束:基于Pydantic模型定义检测字段(异常类型、位置、处理建议),结合 OutputParser 自动解析JSON响应,确保结果可直接对接业务系统。

(3)兼容模式配置:正确设置base_url="https://dashscope.aliyuncs.com/compatible-mode/v1" 与DASHSCOPE_API_KEY,复用LangChain原生OpenAI接口规范,降低迁移成本。

(4)鲁棒性增强:配置request_timeout=180适配多模态推理耗时,结合temperature=0.3控制输出稳定性,满足工业场景对确定性的要求。

通过上述设计,开发者可以快速构建“图片输入→多模态理解→结构化结果输出”的自动化巡检流水线,同时为后续扩展(如批量处理、异步调用、领域微调)预留标准化接口。

【示例7.1】本示例通过LangChain集成Qwen-VL-Plus,加载工业巡检图片,检测设备异常,输出结构化分析结果(异常类型、异常位置、处理建议)。
1. 创建.env配置文件

#通义千问qwen-vl-plus配置

DASHSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx

DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

QWEN_VL_MODEL=qwen-vl-plus

# GPT-4V备用配置(可选)

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx

OPENAI_BASE_URL=https://api.openai.com/v1

2. 代码实现

# Practical_Integration_Case_of_LangChain_and_qwen-vl-plus.py

# -*- coding: utf-8 -*-

# LangChain集成qwen-vl-plus终极版(适配固定依赖·本地图片·不超时)

from dotenv import load_dotenv

import os

import base64

from langchain_community.chat_models import ChatOpenAI

from langchain_core.prompts import ChatPromptTemplate

from langchain_core.output_parsers import PydanticOutputParser

from pydantic import BaseModel, Field

#加载环境变量

load_dotenv()

# =====================本地图片转Base64(必须,解决超时核心)=====================

def encode_image(image_path):

with open(image_path, "rb") as f:

return base64.b64encode(f.read()).decode("utf-8")

#你的本地图片(直接放在同级目录)

image_path = "industrial_test.jpg"

base64_image = encode_image(image_path)

image_url = f"data:image/jpeg;base64,{base64_image}"

# =====================结构化输出(低版本兼容)=====================

class IndustrialResult(BaseModel):

scene_description: str = Field(description="场景描述")

abnormal_type: str = Field(description="异常类型")

abnormal_position: str = Field(description="异常位置")

processing_suggestion: str = Field(description="处理建议")

parser = PydanticOutputParser(pydantic_object=IndustrialResult)

format_instructions = parser.get_format_instructions()

escaped_format = format_instructions.replace("{", "{{").replace("}", "}}")

# ===================== qwen-vl-plus官方兼容配置(最稳,不超时)=====================

llm = ChatOpenAI(

model="qwen-vl-plus",

api_key=os.getenv("DASHSCOPE_API_KEY"),

base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",

temperature=0.3,

max_tokens=1500,

request_timeout=180, #超长时间

)

# =====================多模态Prompt =====================

prompt = ChatPromptTemplate.from_messages([

("user", [

{"type": "image_url", "image_url": {"url": image_url}},

f"""你是专业工业巡检分析师。严格按以下格式返回:

{escaped_format}

"""

])

])

# =====================运行=====================

chain = prompt | llm | parser

if __name__ == "__main__":

print("本地图片工业巡检启动...\n")

try:

result = chain.invoke({})

print("="*60)

print("📊检测结果")

print("="*60)

print(f"场景描述:{result.scene_description}")

print(f"异常类型:{result.abnormal_type}")

print(f"异常位置:{result.abnormal_position}")

print(f"处理建议:{result.processing_suggestion}")

except Exception as e:

print(f"错误:{str(e)}")

运行输出:

本地图片工业巡检启动...

============================================================

📊检测结果

============================================================

场景描述:两名穿着蓝色工作服和安全帽的工人在工业设施内进行巡检,周围布满了管道、阀门和电机等设备。

异常类型:无明显异常

异常位置:未发现异常位置

处理建议:继续按照标准巡检流程进行检查,确保所有设备运行正常。

3. 代码解析

本代码实现了基于LangChain框架调用阿里云Qwen-VL-Plus多模态模型,完成工业巡检图片的结构化异常检测。以下从6个核心维度进行技术拆解:

1)整体架构设计(Chain流水线)

[本地图片] → [Base64编码] → [多模态Prompt] → [ChatOpenAI(qwen-vl-plus)] → [Pydantic解析] → [结构化结果]。

2)本地图片处理机制

def encode_image(image_path):

with open(image_path, "rb") as f:

return base64.b64encode(f.read()).decode("utf-8")

image_url = f"data:image/jpeg;base64,{base64_image}"

技术要点:

  1. Base64内联传输:将图片编码为data:image/jpeg;base64,...格式,避免HTTP多部分传输的兼容性问题。
  2. 本地预编码:提前在客户端完成编码,减少模型端解码压力,降低请求超时概率。
  3. 格式兼容:Qwen-VL-Plus的OpenAI兼容接口原生支持该格式,无须额外转换。

3)结构化输出解析(Pydantic+OutputParser)

class IndustrialResult(BaseModel):

scene_description: str = Field(description="场景描述")

abnormal_type: str = Field(description="异常类型")

# ...

parser = PydanticOutputParser(pydantic_object=IndustrialResult)

format_instructions = parser.get_format_instructions()

escaped_format = format_instructions.replace("{", "{{").replace("}", "}}")

技术要点:

  • Pydantic模型定义:用类型注解与Field描述约束输出字段,实现“代码即文档”。
  • OutputParser自动解析:将模型返回的JSON字符串自动转换为Python对象,避免手动 json.loads。
  • 转义处理:{{}}转义防止Prompt模板引擎误解析JSON Schema中的{},保障格式指令完整传递。

4)Qwen-VL-Plus兼容配置(DashScope适配)

llm = ChatOpenAI(

model="qwen-vl-plus",

api_key=os.getenv("DASHSCOPE_API_KEY"),

base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", #🔑关键

temperature=0.3,

max_tokens=1500,

request_timeout=180, #🔑多模态需长超时

)

技术要点:

  • base_url:指向阿里云OpenAI兼容接口,必须使用compatible-mode/v1路径。
  • api_key:鉴权凭证,从DASHSCOPE_API_KEY环境变量读取。
  • request_timeout=180:防止图片解析超时,多模态推理耗时较长,建议≥120s。
  • temperature=0.3:控制输出随机性,工业场景需稳定性,建议0.1~0.3。
  • max_tokens=1500:限制输出长度,预留足够空间容纳结构化JSON。

5)多模态Prompt工程

prompt = ChatPromptTemplate.from_messages([

("user", [

{"type": "image_url", "image_url": {"url": image_url}}, #🖼图片输入

f"""你是专业工业巡检分析师。严格按以下格式返回:

{escaped_format}""" #📝文本指令

])

])

技术要点:

  • 多模态消息列表:LangChain支持image_url类型消息,自动识别并传递给支持多模态的模型。
  • 角色设定:“专业工业巡检分析师”激活模型领域知识,提升检测准确性。
  • 格式强约束:将JSON Schema指令嵌入Prompt,引导模型输出合规结构。
  • 指令前置:格式要求放在图片之后,符合Qwen-VL的“图文交错”理解偏好。

6)链式执行与错误处理

chain = prompt | llm | parser #构建执行链

try:

result = chain.invoke({}) #同步调用

#输出结果...

except Exception as e:

print(f"错误:{str(e)}")

技术要点:

  • invoke({}):统一入口执行,支持后续扩展异步/批处理。
  • 异常捕获:捕获网络超时、JSON解析失败、API限流等常见错误。

集成说明:本实战案例实现了通义千问Qwen-VL-Plus与LangChain的高效集成,通过 ChatOpenAI兼容接口与PydanticOutputParser结构化解析方案,将多模态推理结果(工业巡检图片)转换为标准化的结构化数据(异常类型、位置、处理建议),可直接对接智能体决策引擎或业务工单系统。与GPT-4V集成方案相比,Qwen-VL-Plus在中文工业术语理解、本地化部署合规性、调用成本方面具备显著优势,更适合国内制造业场景;而GPT-4V在复杂场景泛化能力与跨语言推理上略有领先,适合对全球多语言支持或极端长尾缺陷识别要求极高的场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 11:13:24

WarcraftHelper:魔兽争霸3终极兼容性修复与性能优化工具深度解析

WarcraftHelper:魔兽争霸3终极兼容性修复与性能优化工具深度解析 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏《魔兽争霸…

作者头像 李华
网站建设 2026/7/15 11:12:51

TPS650864 PMIC寄存器配置实战:电源时序、动态管理与I2C编程详解

1. 项目概述与核心价值在嵌入式硬件开发,尤其是涉及高性能处理器、FPGA或复杂SoC的系统中,电源设计往往是决定项目成败的基石。一颗芯片能否稳定运行,功耗和性能是否达标,很大程度上取决于为其供电的电源管理集成电路(…

作者头像 李华
网站建设 2026/7/15 11:11:39

C++控制台心跳动画:从原理到实现的完整指南

1. 项目概述与核心思路最近在重温一些经典的编程小项目,发现用C在控制台里做动画,尤其是那种带点“心跳”感觉的动态图案,是个特别有意思的练习。它不像图形界面编程那样需要依赖复杂的库,却能让你深入理解程序如何与终端交互、如…

作者头像 李华
网站建设 2026/7/15 11:10:38

星河AIOS+星火大模型:车规级本地大模型操作系统深度解析

1. 项目概述:这不是一次简单的车机升级,而是一次座舱交互范式的迁移“星河AIOS智能座舱搭载星火大模型亮相昊铂HL展车|2026北京车展”——这个标题里藏着三个关键信号:星河AIOS是操作系统层的全新代际命名,星火大模型不…

作者头像 李华
网站建设 2026/7/15 11:10:18

嘉立创SMT贴片全流程解析:从BOM坐标到一键下单的避坑指南

1. 新手必看:SMT贴片前的文件准备避坑指南 刚完成PCB设计的新手工程师最容易在文件准备阶段踩坑。我见过太多人因为BOM表或坐标文件错误,导致贴片后整批板子报废。先说说最基础的三个必备文件: BOM表(物料清单) &…

作者头像 李华
网站建设 2026/7/15 11:09:37

Arduino蓝牙舵机调参:从PWM原理到无线控制实践

在 RC 模型和机器人开发中,舵机控制精度直接影响转向、云台稳定性和整体操控体验。传统调试方式需要反复连接电脑、修改参数、烧录固件,效率低且不够直观。借助蓝牙模块实现无线调参,可以实时调整舵机角度、速度、死区等参数,快速…

作者头像 李华