AI Agent 从入门到封神:24 讲打造你的超级智能体~系列文章08:多模态Agent的构建与应用
📅 2026/7/5 6:09:58
👁️ 阅读次数
📝 编程学习
多模态Agent来了!让你的智能体同时"看"图、"听"音、"读"视频 🖼️🎵🎬
导读:2025年,Agent不再只是"文字处理器"——它能看图片、听语音、读视频!多模态Agent正在成为下一个技术高地。本文带你从零构建一个能处理图片、音频和视频的多模态Agent,让你的智能体真正拥有"五感"!🦸
一、什么是多模态Agent?🤔
1.1 从单模态到多模态
| 阶段 | 能力 | 代表 | 局限 |
|---|---|---|---|
| 📝文本Agent | 只能处理文字 | 早期ChatGPT | 看不懂图片 |
| 🖼️视觉Agent | 文字+图片 | GPT-4V | 不能听和看视频 |
| 🎵听觉Agent | 文字+音频 | Whisper+GPT | 不能看图 |
| 🌈多模态Agent | 文字+图片+音频+视频 | GPT-4o、Gemini | 全能感知! |
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 语音处理流程
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 tokens | 0.5s | ¥0.001 |
| 一张图片 | ~1000 tokens | 2s | ¥0.02 |
| 1分钟音频 | ~500 tokens(转写后) | 5s | ¥0.05 |
| 1分钟视频(10帧) | ~10000 tokens | 15s | ¥0.2 |
7.2 成本优化策略
| 策略 | 效果 | 实现方式 |
|---|---|---|
| 🔄图片压缩 | Token减少60% | 降低分辨率到1024px |
| 📸智能抽帧 | Token减少80% | 只提取有变化的帧 |
| 💰分级处理 | 成本减少50% | 简单任务用便宜模型 |
| 🗂️缓存机制 | 重复查询零成本 | 缓存已分析的结果 |
八、本期小结 📝
| 模态 | 核心能力 | 关键技术 | 推荐模型 |
|---|---|---|---|
| 📝文本 | 理解与生成 | LLM | 所有模型 |
| 🖼️图片 | 识别与分析 | 多模态LLM | GPT-4o、Qwen-VL |
| 🎵音频 | 语音识别与合成 | Whisper + TTS | Whisper + 各TTS |
| 🎬视频 | 内容理解 | 关键帧+多模态 | GPT-4o、Gemini |
🔥多模态是Agent的进化方向。未来的Agent不只是"文字处理器",而是能看、听、说的全能助手。掌握多模态Agent开发,就是站在了AI应用的最前沿!
📢 下期预告:大模型基座篇完结!下一篇进入工具与协议篇——《MCP协议详解:AI Agent的"USB-C接口"》。MCP到底是什么?为什么它被称为Agent领域的"游戏规则改变者"?敬请期待!🔌
📌三连走起!多模态Agent,让AI拥有五感!💪
📚专栏第8/24期,大模型基座篇完结!下一篇进入工具与协议篇!
作者:高炉炼铁智能化技术研究者,专注钢铁冶金与人工智能 交叉领域。
👍 如果觉得有帮助,请点赞、收藏、转发!
版权归作者所有,未经许可请勿抄袭,套用,商用(或其它具有利益性行为)。
🔔 关注专栏,不错过后续精彩内容
编程学习
技术分享
实战经验