多模态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在复杂场景泛化能力与跨语言推理上略有领先,适合对全球多语言支持或极端长尾缺陷识别要求极高的场景。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐