多模态模型API调用封装
多模态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的封装方法,统一适配指定依赖。
基于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 QwenVLPlus
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# 1. 封装qwen-vl-plus多模态调用函数
def qwen_vl_plus_invoke(image_path, prompt_text):
# 初始化模型
llm = QwenVLPlus(
api_key=os.getenv("QWen_API_KEY"),
model="qwen-vl-plus",
temperature=0.7,
max_tokens=1000
)
# 加载图片
from langchain.document_loaders import ImageLoader
img_loader = ImageLoader(image_path)
img_doc = img_loader.load()[0]
# 构建多模态Prompt
prompt = 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.jpg"
prompt_text = "分析图片中的管道是否存在泄漏,若存在,说明泄漏位置;若不存在,确认管道状态。"
analysis_result = qwen_vl_plus_invoke(image_path, prompt_text)
print("封装函数调用结果:")
print(analysis_result)
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 ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
def gpt4v_invoke(image_path, prompt_text):
# 初始化GPT-4V模型(.env文件配置OPENAI_API_KEY=your_key)
llm = ChatOpenAI(
model="gpt-4-vision-preview",
api_key=os.getenv("OPENAI_API_KEY"),
temperature=0.7,
max_tokens=1000
)
# 构建多模态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

更多推荐



所有评论(0)