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

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

多模态Prompt工程是提升多模态模型推理精度的核心,与单一文本Prompt不同,多模态Prompt需结合文本指令与多模态数据(图片/音频)的特性,明确任务需求、约束条件与输出格式。本节将结合qwen-vl-plus与LangChain,讲解多模态Prompt工程的核心原则与最佳实践,配套Prompt模板,适配工业巡检、日常交互等多场景。

7.4.1  多模态Prompt核心原则

1. 指令明确

清晰说明多模态任务需求(如图像分析、跨模态问答),避免模糊表述,例如:“分析图片中管道是否存在泄漏,标注泄漏位置”而非“分析图片”。

2. 模态关联

将文本指令与多模态数据强关联,明确多模态数据的作用,例如:“基于提供的工业巡检图片,完成设备异常检测”。

3. 输出约束

明确输出格式、长度与语言风格,适配LangChain后续解析需求,例如:“输出结构化结果,包含异常类型、位置、处理建议,每部分不超过50字”。

4. 场景适配

结合具体场景(如工业巡检、医疗影像)优化Prompt,补充领域专业术语,提升推理精度。

7.4.2  最佳实践Prompt模板(适配LangChain)

结合qwen-vl-plus与工业巡检场景,提供3类常用Prompt模板,可直接集成到LangChain的PromptTemplate中,代码示例:

# 多模态Prompt模板最佳实践

from langchain_core.prompts import ChatPromptTemplate

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

# 模板1:工业巡检图像异常检测(结构化输出)

inspection_prompt = ChatPromptTemplate.from_template("""

你是专业的工业巡检多模态分析助手,基于以下图片和指令完成分析:

图片信息:{image_info}

分析指令:

1.  场景描述:简要说明图片中的设备类型、数量及周围环境(不超过80字);

2.  异常检测:判断设备是否存在泄漏、破损、磨损等异常,明确异常类型与位置;

3.  处理建议:针对异常情况,给出具体、可落地的处理建议(不超过100字);

4.  状态总结:一句话总结设备整体状态。

输出要求:分点输出,语言专业、简洁,避免冗余,适配工业巡检报告。

""")

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

# 模板2:跨模态问答(图片+文本提问)

qa_prompt = ChatPromptTemplate.from_template("""

基于提供的图片和问题,给出准确、简洁的回答:

图片信息:{image_info}

用户问题:{user_question}

要求:回答紧扣问题,结合图片信息,不添加无关内容,若图片中无相关信息,回答图片中未找到相关信息

""")

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

# 模板3:图像描述与文本生成(适配报告生成)

description_prompt = ChatPromptTemplate.from_template("""

基于提供的工业巡检图片,生成一份简短的图像描述报告:

图片信息:{image_info}

报告要求:

1.  标题:工业巡检图像描述报告;

2.  核心内容:包含设备类型、运行状态、是否存在异常、异常细节(若有);

3.  结尾:给出简要的巡检结论;

4.  总字数控制在200字以内,语言正式、专业。

""")

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

# 测试模板(结合qwen-vl-plus

from langchain_community.llms import QwenVLPlus

from langchain.document_loaders import ImageLoader

llm = QwenVLPlus(api_key=os.getenv("QWen_API_KEY"), model="qwen-vl-plus", temperature=0.7)

img_loader = ImageLoader("industrial_test.jpg")

img_doc = img_loader.load()[0]

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

# 调用巡检模板

chain = inspection_prompt | llm | StrOutputParser()

result = chain.invoke({"image_info": img_doc.page_content})

print("Prompt模板测试结果:")

print(result)

Logo

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

更多推荐