AI Agent 从入门到封神:24 讲打造你的超级智能体~系列文章08:多模态Agent的构建与应用

📅 2026/7/5 6:09:58 👁️ 阅读次数 📝 编程学习
AI Agent 从入门到封神:24 讲打造你的超级智能体~系列文章08:多模态Agent的构建与应用

多模态Agent来了!让你的智能体同时"看"图、"听"音、"读"视频 🖼️🎵🎬

导读:2025年,Agent不再只是"文字处理器"——它能看图片听语音读视频!多模态Agent正在成为下一个技术高地。本文带你从零构建一个能处理图片、音频和视频的多模态Agent,让你的智能体真正拥有"五感"!🦸


一、什么是多模态Agent?🤔

1.1 从单模态到多模态

阶段能力代表局限
📝文本Agent只能处理文字早期ChatGPT看不懂图片
🖼️视觉Agent文字+图片GPT-4V不能听和看视频
🎵听觉Agent文字+音频Whisper+GPT不能看图
🌈多模态Agent文字+图片+音频+视频GPT-4o、Gemini全能感知!

🌈 多模态Agent

📝 文本输入

🧠 多模态大模型

🖼️ 图片输入

🎵 音频输入

🎬 视频输入

📤 统一输出

1.2 多模态Agent的应用场景

场景输入输出价值
📸图片分析产品照片质量检测报告自动质检
📊图表理解数据截图数据分析报告自动读图
🎙️语音助手语音指令执行操作免手操作
🎬视频分析监控视频异常事件报告智能监控
📄文档处理扫描件PDF结构化数据自动录入

二、多模态模型选型 📊

2.1 支持多模态的主流模型

模型文本图片音频视频价格(百万Token)推荐度
GPT-4o$2.5入/$10出⭐⭐⭐⭐⭐
Claude 3.5$3入/$15出⭐⭐⭐⭐
Gemini 1.5 Pro$1.25入/$5出⭐⭐⭐⭐⭐
Qwen-VL-Max¥0.02入/¥0.06出⭐⭐⭐⭐
DeepSeek-VL2¥1入/¥2出⭐⭐⭐⭐

💡选型建议:需要全模态(含音频视频)选GPT-4o或Gemini;只需要图片理解选Qwen-VL或DeepSeek-VL更省钱。


三、图片理解Agent实战 📸

3.1 基础:让Agent看懂图片

fromlangchain_openaiimportChatOpenAIfromlangchain_core.messagesimportHumanMessage llm=ChatOpenAI(model="gpt-4o")# 发送图片 + 文字给Agentmessage=HumanMessage(content=[{"type":"text","text":"请分析这张图片的内容,描述你看到了什么"},{"type":"image_url","image_url":{"url":"https://example.com/photo.jpg",# 也可以用本地图片的base64编码# "url": f"data:image/jpeg;base64,{base64_image}"}},])response=llm.invoke([message])print(response.content)# 输出:这张图片展示了一个...

3.2 进阶:构建图片分析Agent

fromlangchain.toolsimporttoolfromlangchain_openaiimportChatOpenAIfromlanggraph.prebuiltimportcreate_react_agentimportbase64@tooldefanalyze_image(image_path:str,task:str)->str:"""分析图片内容。支持识别物体、文字OCR、场景描述等任务。 Args: image_path: 图片文件路径或URL task: 分析任务类型,如'描述内容'、'提取文字'、'识别物体' """llm=ChatOpenAI(model="gpt-4o")# 读取图片ifimage_path.startswith("http"):image_data={"url":image_path}else:withopen(image_path,"rb")asf:encoded=base64.b64encode(f.read()).decode()image_data={"url":f"data:image/jpeg;base64,{encoded}"}response=llm.invoke([HumanMessage(content=[{"type":"text","text":f"请执行以下图片分析任务:{task}"},{"type":"image_url","image_url":image_data}])])returnresponse.content@tooldefcompare_images(image1_path:str,image2_path:str)->str:"""比较两张图片的异同。 Args: image1_path: 第一张图片路径 image2_path: 第二张图片路径 """# 类似逻辑,发送两张图片让模型比较pass# 创建多模态Agentagent=create_react_agent(model=ChatOpenAI(model="gpt-4o"),tools=[analyze_image,compare_images],prompt="你是一个视觉分析专家,能精准分析图片内容。")

3.3 多模态Agent应用场景表

应用输入Agent动作输出
🛒电商商品分析商品图片识别品类、提取属性商品描述JSON
📊图表数据提取图表截图OCR+数据理解结构化数据表
🏥医学影像辅助X光/CT图标注异常区域辅助诊断报告
🚗车牌识别道路监控图识别车牌号车牌号码
📝手写识别手写笔记照片OCR+理解数字化文本

四、语音交互Agent实战 🎙️

4.1 语音处理流程

🎤 语音输入

ASR语音识别

📝 文本

🧠 Agent处理

📝 回答文本

TTS语音合成

🔊 语音输出

4.2 语音Agent代码实现

fromlangchain.toolsimporttoolimportopenai@tooldefspeech_to_text(audio_file_path:str)->str:"""将语音文件转换为文字。支持mp3、wav、m4a等格式。 Args: audio_file_path: 音频文件路径 """withopen(audio_file_path,"rb")asaudio:transcript=openai.audio.transcriptions.create(model="whisper-1",file=audio,language="zh")returntranscript.text@tooldeftext_to_speech(text:str,output_path:str)->str:"""将文字转换为语音文件。 Args: text: 要转换的文字内容 output_path: 输出音频文件路径 """response=openai.audio.speech.create(model="tts-1",voice="alloy",# 可选:alloy, echo, fable, onyx, nova, shimmerinput=text)response.stream_to_file(output_path)returnf"语音文件已保存到:{output_path}"# 语音Agent的完整流程defvoice_agent_process(audio_input_path):"""完整的语音交互流程"""# Step 1: 语音转文字text=speech_to_text.invoke({"audio_file_path":audio_input_path})print(f"📝 识别结果:{text}")# Step 2: Agent处理result=agent.invoke({"messages":[("user",text)]})response_text=result["messages"][-1].contentprint(f"🤖 Agent回答:{response_text}")# Step 3: 文字转语音speech_output=text_to_speech.invoke({"text":response_text,"output_path":"/tmp/response.mp3"})print(f"🔊{speech_output}")

五、视频理解Agent实战 🎬

5.1 视频处理策略

视频太长,不能直接全部发给模型。常用策略:

策略原理适用场景优缺点
📸关键帧提取每隔N秒截取一帧监控分析✅简单 ❌可能漏掉关键信息
🎬片段采样均匀采样N个片段视频摘要✅全面 ❌Token消耗大
🎯事件检测先检测变化再分析异常检测✅高效 ❌需要预处理

5.2 视频分析代码

importcv2fromlangchain.toolsimporttool@tooldefextract_key_frames(video_path:str,interval_seconds:int=5)->str:"""从视频中按间隔提取关键帧图片。 Args: video_path: 视频文件路径 interval_seconds: 提取间隔(秒) """cap=cv2.VideoCapture(video_path)fps=cap.get(cv2.CAP_PROP_FPS)frame_interval=fps*interval_seconds frames=[]frame_count=0whileTrue:ret,frame=cap.read()ifnotret:breakifframe_count%frame_interval==0:path=f"/tmp/frame_{frame_count}.jpg"cv2.imwrite(path,frame)frames.append(path)frame_count+=1cap.release()returnf"提取了{len(frames)}帧关键帧,路径:{frames}"@tooldefanalyze_video_content(video_path:str,task:str)->str:"""分析视频内容。自动提取关键帧并分析。 Args: video_path: 视频文件路径 task: 分析任务,如'描述视频内容'、'检测异常'、'生成摘要' """# 提取关键帧frames=extract_key_frames.invoke({"video_path":video_path,"interval_seconds":3})# 将关键帧发给多模态模型分析llm=ChatOpenAI(model="gpt-4o")content=[{"type":"text","text":f"请分析这些视频帧,任务:{task}"}]forframe_pathineval(frames.split("路径:")[1]):withopen(frame_path,"rb")asf:encoded=base64.b64encode(f.read()).decode()content.append({"type":"image_url","image_url":{"url":f"data:image/jpeg;base64,{encoded}"}})response=llm.invoke([HumanMessage(content=content)])returnresponse.content

六、多模态Agent的System Prompt设计 📝

multimodal_prompt=""" # 角色定义 你是一个多模态AI助手"万象",能够理解和处理文字、图片、音频、视频等多种信息。 # 能力 - 📝 文本理解:分析、总结、翻译文字内容 - 🖼️ 图片分析:识别物体、提取文字、描述场景、分析图表 - 🎵 语音处理:语音转文字、文字转语音 - 🎬 视频理解:提取关键帧、分析视频内容、生成视频摘要 # 工作原则 1. 收到图片时,先描述看到了什么,再回答用户问题 2. 处理音频时,先转写为文字,确认理解正确后再处理 3. 分析视频时,提取关键帧并综合多帧信息 4. 对于不确定的视觉内容,诚实说明并给出置信度 # 输出格式 分析结果使用以下结构: - 📋 **内容概述**:一句话总结 - 🔍 **详细分析**:分点描述 - 💡 **关键发现**:重要信息 - ⚠️ **注意事项**:不确定的地方 """

七、多模态Agent的性能与成本 📊

7.1 Token消耗对比

输入类型Token消耗处理时间成本估算
纯文字(100字)~50 tokens0.5s¥0.001
一张图片~1000 tokens2s¥0.02
1分钟音频~500 tokens(转写后)5s¥0.05
1分钟视频(10帧)~10000 tokens15s¥0.2

7.2 成本优化策略

策略效果实现方式
🔄图片压缩Token减少60%降低分辨率到1024px
📸智能抽帧Token减少80%只提取有变化的帧
💰分级处理成本减少50%简单任务用便宜模型
🗂️缓存机制重复查询零成本缓存已分析的结果

八、本期小结 📝

模态核心能力关键技术推荐模型
📝文本理解与生成LLM所有模型
🖼️图片识别与分析多模态LLMGPT-4o、Qwen-VL
🎵音频语音识别与合成Whisper + TTSWhisper + 各TTS
🎬视频内容理解关键帧+多模态GPT-4o、Gemini

🔥多模态是Agent的进化方向。未来的Agent不只是"文字处理器",而是能看、听、说的全能助手。掌握多模态Agent开发,就是站在了AI应用的最前沿!


📢 下期预告:大模型基座篇完结!下一篇进入工具与协议篇——《MCP协议详解:AI Agent的"USB-C接口"》。MCP到底是什么?为什么它被称为Agent领域的"游戏规则改变者"?敬请期待!🔌


📌三连走起!多模态Agent,让AI拥有五感!💪

📚专栏第8/24期,大模型基座篇完结!下一篇进入工具与协议篇!

作者:高炉炼铁智能化技术研究者,专注钢铁冶金与人工智能 交叉领域。

👍 如果觉得有帮助,请点赞、收藏、转发!
版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)
🔔 关注专栏,不错过后续精彩内容