拓冰建站拓冰建站
首页 / 资讯中心 / 正文

AGENT学习-9.多模态

大模型多模态Multimodal大模型多模态Multimodal | 菜鸟教程什么是多模态多模态Multimodal大模型让 AI 同时处理文本、图像、音频、视频等多种信息形式是当前大模型最核心的发展方向之一普通大模型通常只能处理一种信息——文本如果给传统 AI 一张图片并问它图片里有几只猫如果不支持多模态该模型就做不到。因此多模态Multimodal这一概念应运而生。用一句话理解多模态 一个模型同时理解和生成多种信息形式。模态模态Modality就是信息的表现形式。不同的模态对应不同的输入与输出下表列出常见模态及其典型应用模态输入示例输出示例典型应用Text文本小说、聊天记录回答、文章问答、写作、翻译Image图像照片、截图图片理解、生成图OCR、视觉问答Audio音频语音、音乐转写文字、合成语音会议摘要、语音助手Video视频视频流视频分析、时间轴教学总结、内容检索Sensor传感器GPS、温度控制信号机器人、自动驾驶Action动作鼠标点击、键盘输入执行动作GUI Agent、自动化模型支持的模态越多能力就越接近人多模态大模型发展过程从只能处理文字到能看、能听、能输出视频多模态大模型经历了三个清晰的阶段。第一阶段语言模型LLM这一阶段模型的输入和输出都是文字代表产品包括 OpenAI GPT 系列、Anthropic Claude、Google Gemini。它们能写代码、写文章、做翻译、回答问题能力很强但有一个根本限制看不见。第二阶段视觉语言模型VLMVLM 在 LLM 基础上增加了看图能力典型用法是上传一张网页截图问为什么布局错了模型回答CSS 冲突。这一阶段模型开始具备图像理解、OCR、图表理解等能力。第三阶段原生多模态模型原生多模态模型不再把图和文当作两个拼接的模块而是从训练开始就统一处理图像、声音、视频、文本。它具备完整能力看、听、说、推理、执行这也是当前业界的主流方向。多模态模型的内部工作多模态模型的内部工作可以概括为一句话把所有数据转成统一向量空间。例如一只猫、cat、cat.png 三种表达虽然来自不同模态编码后在向量空间里会落在接近区域。整体流程如下图所示核心思想把任何模态都映射到同一个高维向量空间让 Transformer 用统一的方式理解它们上图展示了从输入到输出的完整链路下面拆解每一步第一步编码不同模态要先转成数字模型才能处理。模态原始数据编码后文本你好[2034, 789] 一组 token id图像像素矩阵视觉特征向量音频波形频谱特征向量第二步统一语义空间编码后的关键一步是让猫、cat、cat.png 在向量空间里彼此接近。这就是跨模态理解的本质把不同模态的特征投影到同一个空间里。第三步生成输出在统一空间里推理之后模型按需把结果还原成不同模态。输出可以是文本、图像、音频、视频中的任意一种。例如上传一张图片 → 描述 → 再生成一段介绍视频这是完整的多模态生成链。Attention机制Transformer 的核心公式是 Attention(Q, K, V)含义是模型自己判断该关注什么。Transformer 能统一多模态核心原因只有一个Attention 机制。举个例子当用户问图片里谁在打篮球时模型会 ​ 先看图识别出图中所有人物 识别出图中的篮球 判断谁和篮球之间的关系 综合上下文输出答案这种自主决定关注点的能力让 Transformer 天然适合处理多模态输入输入模型在关注什么纯文字句子之间的语义关联图片 文字图像区域和文字描述的对应视频 文字时间轴片段和问题的关联多模态模型能力图像理解输入截图模型输出页面问题、UI 分析或 OCR 结果。程序员最常用的场景是截图报错让 AI 定位问题。图像生成输入生成未来城市这样的文字描述模型返回 AI 图片。典型应用海报、封面、游戏素材、产品草图。语音交互说话即输入模型实时回答能力覆盖 ASR语音转文字、TTS文字转语音、对话。视频理解上传一段教学视频模型输出总结、时间轴、可问答的关键片段。Agent 智能体输入帮我做 PPT模型开始执行完整行动链搜索资料 → 生成大纲 → 制作幻灯片 → 修改 → 导出。Agent 是把看、听、说和动手执行结合的最终形态。多模态模型相关术语术语含义举例Token词元模型处理的最小单位文本按词切分你好世界 → 你[世界]Embedding嵌入把信息转成数字坐标的过程猫 → [0.12, 0.78, 0.33, ...]Context上下文当前对话的历史与背景信息用户说苹果上下文手机 iPhone而非水果Attention注意力决定模型关注输入哪一部分看图时模型先看人再看篮球Inference推理模型根据输入生成输出的过程用户输入问题后模型思考并回答多模态学习线路搭建一个多模态大模型1.创建项目# 创建项目 mkdir multimodal-demo ​ # 进入项目目录 cd multimodal-demo ​ # 安装 OpenAI 官方 SDK兼容多种多模态模型 pip install openai先创建一个项目 multimodal-demo并使用 openai 库来测试在multimodal-demo目录下上传一张图片cat-cartoon.webp2.编写调用代码import base64 import os from io import BytesIO from openai import OpenAI from PIL import Image ​ # 方舟配置 ARK_API_KEY ark-xxxx # 这里填写你的 Key ARK_BASE_URL https://ark.cn-beijing.volces.com/api/coding/v3 # 推荐使用通用 v3 接口 MODEL_ENDPOINT doubao-seed-2.0-pro # 支持多模态的模型 ​ # 初始化客户端 client OpenAI( api_keyARK_API_KEY, base_urlARK_BASE_URL, timeout60 ) ​ def prepare_image_base64(image_path: str, max_size: int 1024) - str: 读取本地图片处理透明通道缩放并转换为 base64 字符串 if not os.path.exists(image_path): raise FileNotFoundError(f找不到测试图片: {image_path}) with Image.open(image_path) as img: # 1. 处理 RGBA 透明背景 if img.mode RGBA: background Image.new(RGB, img.size, (255, 255, 255)) background.paste(img, maskimg.split()[-1]) img background elif img.mode ! RGB: img img.convert(RGB) # 2. 等比例缩放防大图撑爆 Payload/Token img.thumbnail((max_size, max_size)) # 3. 转 Base64 buf BytesIO() img.save(buf, formatJPEG, quality85) # 适当压缩质量 b64 base64.b64encode(buf.getvalue()).decode(utf-8) return fdata:image/jpeg;base64,{b64} ​ def multimodal_chat(img_path: str, prompt: str): 多模态对话测试 try: print(f正在处理图片: {img_path} ...) img_b64 prepare_image_base64(img_path) print(正在发送请求至火山引擎方舟平台...) res client.chat.completions.create( modelMODEL_ENDPOINT, messages[ { role: user, content: [ {type: text, text: prompt}, {type: image_url, image_url: {url: img_b64}} ] } ], temperature0.7, max_tokens1024 ) print(\n *10 识别结果 *10) print(res.choices[0].message.content) print(*30) return res ​ except FileNotFoundError as e: print(f【错误】{e}) except Exception as e: print(f【API 请求失败】请检查网络或 Endpoint/Key 是否正确。错误信息:\n{e}) return None ​ if __name__ __main__: # 测试配置 image_file ./cat-cartoon.webp question 详细描述这张图片里的内容分析画面主体、色彩和场景 # 模拟创建一个临时测试图若本地没有相应图片方便快速肉眼 debug if not os.path.exists(image_file): print(f未检测到 {image_file}正在生成一张临时测试图...) Image.new(RGB, (200, 200), color (73, 109, 137)).save(image_file) multimodal_chat(image_file, question)本实例采用的是节方舟的 Coding Plan他们的 doubao-seed-2.0-pro 模型支持多模态。把上面这段代码保存为test.py3.运行 Pyhton输出结果如下运行 Pyhton输出结果如下 在发送请求至火山引擎方舟平台... ​ 识别结果 这是一张**Q版萌系卡通风格的数字角色插画**整体背景为纯净的纯白色没有任何环境元素所有视觉重心都集中在中心的小猫主体上是典型的独立角色立绘/吉祥物设计。 --- ### 一、画面主体详细描述 主体是一只端正坐姿的卡通幼橘猫是经过萌化设计的家养橘白虎斑猫形象整体气质乖巧天真、亲人友好 1. **比例与姿态**采用萌系设计特有的大头短身比例头部占整体高度的60%左右 ...打开浏览器控制台就能看到模型对图片的文字描述。整个链路是用户上传图片 → 浏览器把图片 URL 传给 OpenAI SDK → 多模态模型理解图片 → 返回文字描述 → 打印到控制台。4.常见扩展想做什么怎么改改成上传本地文件用户上传图片后读取后转为 base64再赋给image_file支持连续多轮对话把历史问答追加到messages数组换成其它厂商模型构造 OpenAI 客户端时指定baseURL如 Qwen、OpenAI、Anthropic 兼容端点处理语音把type: image_url换成type: input_audio并提供 base64 音频
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门