多模态模型API调用封装 📅 2026/7/15 9:48:10 多模态AIAgent开发实践 邓立国、周驰岷、邓淇等 清华大学出版社【行情 报价 价格 评测】-京东《多模态AI Agent开发实践》1~6章试读-CSDN博客langchain-community 0.4.X版本提供了多模态模型的统一API调用接口可对qwen-vl-plus、GPT-4V等模型的API调用进行封装简化调用流程同时适配.env文件API密钥管理确保调用的规范性与可复用性。本节将重点讲解qwen-vl-plus的API调用封装兼顾GPT-4V的封装方法统一适配指定依赖。7.1.1 qwen-vl-plus API封装基于LangChain的LLM类与qwen-vl-plus封装实现多模态输入的统一调用封装后可直接集成到LangChain的Chain、Agent等组件中代码示例# qwen-vl-plus API调用封装from dotenv import load_dotenv; import os; load_dotenv()from langchain_community.llms import QwenVLPlusfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParser# 1.封装qwen-vl-plus多模态调用函数def qwen_vl_plus_invoke(image_path, prompt_text):#初始化模型llm QwenVLPlus(api_keyos.getenv(QWen_API_KEY),modelqwen-vl-plus,temperature0.7,max_tokens1000)#加载图片from langchain.document_loaders import ImageLoaderimg_loader ImageLoader(image_path)img_doc img_loader.load()[0]#构建多模态Promptprompt ChatPromptTemplate.from_template(你是一个工业巡检多模态分析助手基于提供的图片和指令完成分析图片信息{image_info}分析指令{prompt_text}要求分析结果清晰、准确重点突出异常情况若有语言简洁专业。)#构建调用链chain prompt | llm | StrOutputParser()#执行调用result chain.invoke({image_info: img_doc.page_content, prompt_text: prompt_text})return result# 2.测试封装函数if __name__ __main__:image_path industrial_test.jpgprompt_text 分析图片中的管道是否存在泄漏若存在说明泄漏位置若不存在确认管道状态。analysis_result qwen_vl_plus_invoke(image_path, prompt_text)print(封装函数调用结果)print(analysis_result)7.1.2 GPT-4V API封装GPT-4V的封装逻辑与qwen-vl-plus类似需要安装openai依赖命令为pip install openai并通过LangChain的ChatOpenAI类封装代码示例适配指定依赖# GPT-4V API调用封装from dotenv import load_dotenv; import os; load_dotenv()from langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserdef gpt4v_invoke(image_path, prompt_text):#初始化GPT-4V模型.env文件配置OPENAI_API_KEYyour_keyllm ChatOpenAI(modelgpt-4-vision-preview,api_keyos.getenv(OPENAI_API_KEY),temperature0.7,max_tokens1000)#构建多模态Prompt图片路径需为网络可访问路径或Base64编码prompt ChatPromptTemplate.from_messages([(user, [{type: image_url, image_url: {url: image_path}}, prompt_text])])chain prompt | llm | StrOutputParser()result chain.invoke({})return result