<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>视觉语言模型 on Chico's Tech Blog</title><link>https://realtime-ai.chat/tags/%E8%A7%86%E8%A7%89%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/</link><description>Recent content in 视觉语言模型 on Chico's Tech Blog</description><image><title>Chico's Tech Blog</title><url>https://github.com/chicogong.png</url><link>https://github.com/chicogong.png</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 22 Apr 2026 11:00:00 +0800</lastBuildDate><atom:link href="https://realtime-ai.chat/tags/%E8%A7%86%E8%A7%89%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>视觉理解模型用在 Agent 里</title><link>https://realtime-ai.chat/posts/vision-agents/</link><pubDate>Wed, 22 Apr 2026 11:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/vision-agents/</guid><description>VLM 让 Agent 长出一只眼睛——能看截图、读图表、做质检。但视觉定位的可靠性、坐标的坑、视觉 token 的成本,决定了什么时候该看、什么时候别看。</description><content:encoded><![CDATA[<p>让一个 2026 年最强的视觉 Agent 去操作一个专业软件——比如 Photoshop 或者一个企业 ERP——它定位界面元素的准确率,大概在 <strong>40%</strong> 左右。</p>
<p>这个数字来自 ScreenSpot-Pro 这个专门测「高分辨率专业软件」的基准。换句话说:你让它点一个按钮,它有一半多的概率点歪。消费级 App 的大图标、空间宽敞的界面,模型能做到八九成;一旦换成密密麻麻的工具栏、4K 屏上一个 20 像素的小图标,准确率断崖式往下掉。</p>
<p>这件事值得先摆在前面说,因为「多模态 LLM 能看图了」这句话,很容易让人以为 Agent 的眼睛已经够用了。它确实能看,但「看见」和「看准」是两回事。这篇就讲清楚:视觉能力到底让 Agent 多了什么本事,这只眼睛在哪些地方靠谱、哪些地方会骗你,以及一个工程上最该想清楚的问题——什么时候该让 Agent 看,什么时候别看。</p>
<h2 id="多了一只眼睛agent-能做什么新事">多了一只眼睛,Agent 能做什么新事</h2>
<p>在 VLM 成熟之前,Agent 想跟外部世界打交道,只有一条路:把世界翻译成文本或结构化数据再喂进去。网页要先抽成 DOM,文档要先 OCR 成纯文本,图表要先有人把数据导成 CSV。这条路有个根本问题——<strong>翻译这一步本身就会丢信息,而且不是每样东西都翻译得了</strong>。</p>
<p>视觉能力补的就是这块。具体讲,它解锁了四类以前做不了、或者做得很别扭的事。</p>
<p><strong>第一类是看着屏幕操作 UI。</strong> 这是讨论最多的方向,也就是 computer use / GUI agent。Agent 截一张屏,VLM 看图,然后输出「点击坐标 (840, 312)」这样的动作。它的价值在于<strong>绕开了接口</strong>:很多老软件没有 API,很多 SaaS 的 API 覆盖不全,桌面应用更是基本无接口可言。只要它有界面,视觉 Agent 理论上就能操作——它走的是和人一样的入口。</p>
<p><strong>第二类是读「长得不像文本」的文档。</strong> 发票、合同、财报、扫描件、PDF 里的复杂表格——这些东西的信息一半在文字里,一半在<strong>版式</strong>里。哪个数字对应哪个表头、合同里哪段是被框出来的特别条款、一张表里的合并单元格,纯 OCR 抽完文字,这些空间关系就丢了。VLM 直接看版面,LlamaParse 这类工具就是这个思路:不是先 OCR 再理解,而是让模型边看版式边理解,遇到嵌在文档里的图表和表格还能自己纠错。</p>
<p><strong>第三类是看图表。</strong> 一张柱状图、一条趋势线,数据点没有标注的时候,纯文本模型完全无能为力。VLM 能直接读出「第三季度比第二季度涨了大概 15%」。更进一步的做法像 ChartAgent,把图表分析拆成一串可观察的步骤,配上元素检测、实例分割、OCR 这些工具,让 Agent 动态调用——本质是承认「光靠看不够准,得配把尺子」。</p>
<p><strong>第四类是视觉质检和定位。</strong> 产线上挑次品、检查 UI 渲染有没有错位、看监控画面里有没有异常——这类任务的输入天生就是图像,根本没有「结构化数据」这个中间态。以前要专门训一个 CV 模型,现在一个通用 VLM 加几句 prompt 就能起步。</p>
<p>把这四类摆在一起看,会发现视觉能力的真正意义不是「多一个输入通道」,而是<strong>让 Agent 能处理那些压根没有结构化表示的世界</strong>。世界上大部分信息本来就不是 JSON。</p>
<h2 id="视觉-groundingagent-能看见但能指准吗">视觉 grounding:Agent 能「看见」,但能「指准」吗</h2>
<p>这是整件事里最容易被低估的难点。</p>
<p>「描述一张图」和「指出图里某个东西在哪个像素」,对模型来说是两种难度完全不同的任务。前者是理解,后者是 <strong>grounding(视觉定位)</strong>——把一句自然语言指令,落到图像上一个精确的坐标。Agent 要操作 UI,靠的就是后者:它得说出「那个『提交』按钮的中心在 (840, 312)」,而不是「我看到一个提交按钮」。</p>
<pre class="mermaid">flowchart TB
  A[截图 + 指令<br/>点击 保存] --> B[VLM]
  B --> C{grounding}
  C -->|看见了元素| D[理解: 有个保存按钮]
  C -->|指对了像素| E[定位: 中心在 840,312]
  D -.缺这步 Agent 就点空.-> E
  E --> F[执行点击]
  style C fill:#fde7c2,stroke:#e8b23c
  style E fill:#fde7c2,stroke:#e8b23c
</pre><p>现在主流模型——SeeClick、CogAgent、UI-TARS 这一系——的做法,是把坐标当成<strong>文本 token</strong> 直接生成出来:模型「说」出 <code>840</code> 和 <code>312</code> 这两个数。这个范式能用,但有个天然的别扭:坐标本质是连续的几何量,你硬让一个语言模型用「吐 token」的方式去逼近它,误差就藏在每一位数字里。</p>
<p>2025 到 2026 年的研究基本在围着这个痛点打。R-VLM 的思路是「先粗看再细看」:先框出一个大概区域,把那块放大,再在放大图上精确定位,准确率比当时的 SOTA 高了 13%。还有工作干脆质疑「生成式出坐标」这条路本身,转去试扩散类的视觉语言模型,靠并行生成和迭代修正来提精度。</p>
<p>但你要的不是论文里的相对提升,是一个能用的绝对数字。结论前面说了:消费级、大图标的界面,grounding 已经够用;<strong>专业软件、高分屏、密集小元素,目前还远没到能放手的程度</strong>。一个直接的工程推论是——元素越小越危险。所有基准都呈现同一条规律:目标框越小,准确率越低。所以做视觉 Agent,选界面、控分辨率,本身就是在控成功率。</p>
<h2 id="截图理解的三个坑">截图理解的三个坑</h2>
<p>就算模型本身的 grounding 能力到位,工程落地时还有三个坑,踩中任何一个都会让 Agent 莫名其妙地点错。</p>
<p><strong>坑一:分辨率和缩放。</strong> VLM 不是按你的原图分辨率看图的。每家都有自己的处理方式——有的把图切成固定大小的 patch,有的限制最长边(比如某些模型 <code>high</code> 模式下最长边压到 2048 像素)。这意味着:你截了一张 3840×2160 的 4K 图,模型内部很可能先把它缩小了再看。缩小之后,小图标糊成一团,模型再聪明也指不准。<strong>模型返回的坐标是基于「它看到的那张缩小图」的,你必须按缩放比例换算回真实屏幕坐标</strong>——这一步算错,点击就系统性偏移。</p>
<p><strong>坑二:坐标系不统一。</strong> 真实屏幕坐标、模型内部归一化坐标(0~1)、截图本身的像素坐标、再加上高 DPI 屏幕的逻辑像素和物理像素之差——一条链路上同时存在好几套坐标系。Agent 点歪,十有八九不是模型「看错了」,而是某一处坐标换算串了系。这种 bug 特别阴险,因为它常常是「偏一点点」,看着像模型不准,实际是工程问题。</p>
<p><strong>坑三:密集 UI 和动态界面。</strong> 工具栏挤、下拉菜单叠、元素之间只差几个像素——这种界面 grounding 本来就难。再叠加动态:截图的瞬间和点击的瞬间之间,界面可能已经变了(弹窗、加载、动画)。Agent 拿着一张「过期的截图」去点一个已经移位的按钮,就会点空。截图和动作之间的这点时间差,在慢界面上足够出事。</p>
<p>这三个坑合起来给一个朴素的建议:<strong>能拿到结构化信息时,优先用结构化信息。</strong> 网页有 DOM,就优先用 DOM 定位元素,视觉只在 DOM 拿不到、或者 DOM 对不上视觉(比如 canvas 渲染的界面)时兜底。把视觉当成「最后一条路」,而不是「默认那条路」。</p>
<h2 id="视觉-token一笔容易被忽略的账">视觉 token:一笔容易被忽略的账</h2>
<p>视觉能力不是免费的,而且这笔账的波动大得超出直觉。</p>
<p>同一张 JPEG,在不同厂商的 API 里,消耗的 token 数能从 87 一路飙到 6000 多——还没等模型吐出一个字。原因就是上面说的:每家把图转 token 的方式不一样。一张 1000×1000 的图,在 Claude 这边大概 1300 多 token,在 Gemini 那边可能只要 200 多。一张高分辨率图轻松吃掉 2000+ token。</p>
<table>
  <thead>
      <tr>
          <th>场景</th>
          <th>视觉 token 的代价</th>
          <th>工程提示</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>单张消费级 UI 截图</td>
          <td>几百到一千 token</td>
          <td>基本可接受</td>
      </tr>
      <tr>
          <td>单张高分屏 / 专业软件截图</td>
          <td>2000+ token</td>
          <td>考虑裁剪到相关区域</td>
      </tr>
      <tr>
          <td>截图理解的多步任务</td>
          <td>每步一张图,逐步累加</td>
          <td>token 随步数线性涨,是大头</td>
      </tr>
      <tr>
          <td>把整段视频抽帧喂进去</td>
          <td>帧数 × 单帧成本</td>
          <td>几乎一定要先降采样</td>
      </tr>
  </tbody>
</table>
<p>真正的成本陷阱不在「单张图贵不贵」,而在 <strong>Agent 是多步的</strong>。一个 GUI Agent 完成一个任务可能要截二三十张图,每张都是上千 token,这些图还会随着对话历史一遍遍重新参与计算。一个十几步的视觉任务,token 消耗很容易是同样一个纯文本任务的十倍以上。视觉 token 普遍比文本 token 贵 2~10 倍,两个因素一叠加,账单就上去了。</p>
<p>省钱的手段也清楚:别每步都喂全屏,裁剪到相关区域再喂;历史里的旧截图该丢就丢,不必让二十步前的图还躺在上下文里;不追求实时的任务走批量接口,普遍还能再省一半。但最根本的那条,还是下一节要说的——先想清楚这一步到底要不要看。</p>
<h2 id="什么时候该用视觉什么时候别用">什么时候该用视觉,什么时候别用</h2>
<p>把前面所有的取舍收成一条决策线。我的判断很直接:<strong>视觉是兜底手段,不是默认手段。</strong></p>
<p>判断要不要用视觉,先问一个问题——这个任务有没有靠谱的结构化表示?</p>
<pre class="mermaid">flowchart TD
  A[一个任务步骤] --> B{有没有可靠的<br/>结构化数据?}
  B -->|有: API / DOM / 数据库| C[用结构化数据<br/>更稳更便宜更好测]
  B -->|没有 / 不完整 / 对不上| D{信息在版式<br/>或像素里吗?}
  D -->|是: 截图 / 扫描件 / 图表| E[用视觉<br/>这是它的主场]
  D -->|否| C
  style C fill:#d6e8d5,stroke:#5a9e5a
  style E fill:#fde7c2,stroke:#e8b23c
</pre><p><strong>该用视觉的情况</strong>:目标软件没有 API;信息的关键部分在版式里(发票、复杂表格、合同);输入天生是图像(质检、监控、图表判读);或者 DOM 拿到的东西和用户实际看到的对不上(canvas 渲染、被 CSS 改过的界面)。这些场景里,视觉不是「锦上添花」,是唯一可行的路。</p>
<p><strong>别用视觉、老老实实用结构化数据的情况</strong>:有现成 API,就调 API——它返回的是确定的数据结构,不会「点歪」;网页交互优先走 DOM,选择器定位比像素定位稳得多;需要精确数值的场景(对账、计算、金额),让模型「读图」读出一个数字,远不如直接从数据源取——VLM 读图表是为了「看懂趋势」,不是为了「抄准数字」。</p>
<p>一条经验法则:<strong>视觉负责理解「这是什么」,结构化数据负责拿到「精确的值」。</strong> 让 VLM 看一眼报表知道「这是季度营收、整体在涨」,这是它的强项;但具体涨了 14.3% 还是 14.7%,去数据库里查。把这两件事分开,Agent 才会既灵活又可靠。</p>
<p>最后提醒一个反直觉的点:给 Agent 加视觉,常常不是让它变强,而是让它<strong>变得更难调试</strong>。纯文本 / 结构化的链路,出错了你能一步步看 trace;视觉链路出错,你得回去看那张截图、想模型当时「看到」了什么、再排查是不是坐标换算的问题。所以别因为「VLM 能看图」就到处加视觉。<strong>先确认这一步真的没有结构化的路可走,再让 Agent 睁开眼睛。</strong> 这只眼睛很有用,但它该是有意识地用,不是默认开着。</p>
]]></content:encoded></item><item><title>多模态AI：当机器学会「看图说话」</title><link>https://realtime-ai.chat/posts/multimodal-ai-breakthrough/</link><pubDate>Fri, 12 Dec 2025 10:00:00 +0800</pubDate><guid>https://realtime-ai.chat/posts/multimodal-ai-breakthrough/</guid><description>多模态 AI 最新进展:GPT-4V、Gemini、CLIP 等视觉语言模型如何让机器「看图说话」,理解图像并给出建议。</description><content:encoded><![CDATA[<h2 id="开场一个神奇的对话">开场：一个神奇的对话</h2>
<p><strong>2025年某天，你和AI的对话</strong>：</p>
<blockquote>
<p>你：[上传一张冰箱照片]<br>
你：&ldquo;帮我看看能做什么菜&rdquo;</p>
<p>AI：&ldquo;我看到你冰箱里有：鸡蛋、西红柿、青椒、米饭&hellip;<br>
推荐做番茄炒蛋盖饭！步骤如下&hellip;&rdquo;</p>
<p>你：&ldquo;等等，我不吃辣&rdquo;</p>
<p>AI：&ldquo;好的，那把青椒换成黄瓜，做黄瓜炒蛋&hellip;&rdquo;</p></blockquote>
<p><strong>这不是科幻，这是2025年的现实。</strong></p>
<p>AI不仅能&quot;看懂&quot;你的冰箱，还能理解上下文、给出建议、甚至根据你的偏好调整方案。</p>
<p><strong>这就是多模态AI的魔力。</strong></p>
<hr>
<h2 id="第一章什么是多模态ai">第一章：什么是多模态AI？</h2>
<h3 id="11-从单一感官到全感官">1.1 从「单一感官」到「全感官」</h3>
<p><strong>传统AI（单模态）</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 只能处理文字</span>
</span></span><span class="line"><span class="cl"><span class="n">text_ai</span> <span class="o">=</span> <span class="n">GPT3</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">text_ai</span><span class="o">.</span><span class="n">chat</span><span class="p">(</span><span class="s2">&#34;今天天气怎么样？&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># ✅ 能回答</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">text_ai</span><span class="o">.</span><span class="n">chat</span><span class="p">(</span><span class="s2">&#34;[图片: 窗外风景]&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># ❌ 看不懂图片</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>多模态AI</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 能处理文字、图片、音频、视频</span>
</span></span><span class="line"><span class="cl"><span class="n">multimodal_ai</span> <span class="o">=</span> <span class="n">GPT4V</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 文字 ✅</span>
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">multimodal_ai</span><span class="o">.</span><span class="n">chat</span><span class="p">(</span><span class="s2">&#34;今天天气怎么样？&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 图片 ✅</span>
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">multimodal_ai</span><span class="o">.</span><span class="n">chat</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">text</span><span class="o">=</span><span class="s2">&#34;这是什么？&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">image</span><span class="o">=</span><span class="s2">&#34;photo.jpg&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 音频 ✅</span>
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">multimodal_ai</span><span class="o">.</span><span class="n">chat</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">text</span><span class="o">=</span><span class="s2">&#34;这段音乐是什么风格？&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">audio</span><span class="o">=</span><span class="s2">&#34;music.mp3&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 视频 ✅</span>
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">multimodal_ai</span><span class="o">.</span><span class="n">chat</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">text</span><span class="o">=</span><span class="s2">&#34;视频里的人在做什么？&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">video</span><span class="o">=</span><span class="s2">&#34;video.mp4&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="12-多模态的模态是什么">1.2 多模态的「模态」是什么？</h3>
<p><strong>模态（Modality）</strong> = 信息的表现形式</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">Modality</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;AI能理解的信息类型&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="n">types</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;文本&#34;</span><span class="p">:</span> <span class="s2">&#34;Text&#34;</span><span class="p">,</span>           <span class="c1"># 文字、代码</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;图像&#34;</span><span class="p">:</span> <span class="s2">&#34;Image&#34;</span><span class="p">,</span>          <span class="c1"># 照片、图表、截图</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;音频&#34;</span><span class="p">:</span> <span class="s2">&#34;Audio&#34;</span><span class="p">,</span>          <span class="c1"># 语音、音乐、声音</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;视频&#34;</span><span class="p">:</span> <span class="s2">&#34;Video&#34;</span><span class="p">,</span>          <span class="c1"># 动态画面</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;3D&#34;</span><span class="p">:</span> <span class="s2">&#34;3D Model&#34;</span><span class="p">,</span>         <span class="c1"># 三维模型</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;传感器&#34;</span><span class="p">:</span> <span class="s2">&#34;Sensor Data&#34;</span>   <span class="c1"># 温度、压力等</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>多模态AI = 能同时理解和处理多种模态的AI</strong></p>
<hr>
<h2 id="第二章多模态ai的超能力">第二章：多模态AI的「超能力」</h2>
<h3 id="21-超能力一跨模态理解">2.1 超能力一：跨模态理解</h3>
<p><strong>例子：图生文（Image-to-Text）</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">openai</span> <span class="kn">import</span> <span class="n">OpenAI</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">OpenAI</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 上传图片，AI生成描述</span>
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">chat</span><span class="o">.</span><span class="n">completions</span><span class="o">.</span><span class="n">create</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">model</span><span class="o">=</span><span class="s2">&#34;gpt-4-vision-preview&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">messages</span><span class="o">=</span><span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;role&#34;</span><span class="p">:</span> <span class="s2">&#34;user&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;content&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="p">{</span><span class="s2">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;text&#34;</span><span class="p">,</span> <span class="s2">&#34;text&#34;</span><span class="p">:</span> <span class="s2">&#34;详细描述这张图片&#34;</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">                <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="s2">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;image_url&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                    <span class="s2">&#34;image_url&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                        <span class="s2">&#34;url&#34;</span><span class="p">:</span> <span class="s2">&#34;https://example.com/photo.jpg&#34;</span>
</span></span><span class="line"><span class="cl">                    <span class="p">}</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">choices</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">content</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出: &#34;这是一张在海边拍摄的日落照片。天空呈现出橙红色的渐变，</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        海面波光粼粼，远处有一艘帆船...&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>真实案例</strong>：</p>
<table>
  <thead>
      <tr>
          <th>输入图片</th>
          <th>AI描述</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>🍕 披萨照片</td>
          <td>&ldquo;一份意式玛格丽特披萨，上面有新鲜罗勒叶、马苏里拉奶酪和番茄酱&hellip;&rdquo;</td>
      </tr>
      <tr>
          <td>📊 数据图表</td>
          <td>&ldquo;这是一个柱状图，显示2020-2025年的销售趋势，2025年达到峰值&hellip;&rdquo;</td>
      </tr>
      <tr>
          <td>🐱 猫咪照片</td>
          <td>&ldquo;一只橘色的短毛猫，正趴在窗台上晒太阳，表情慵懒&hellip;&rdquo;</td>
      </tr>
  </tbody>
</table>
<h3 id="22-超能力二跨模态生成">2.2 超能力二：跨模态生成</h3>
<p><strong>例子：文生图（Text-to-Image）</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># DALL-E 3 / Midjourney / Stable Diffusion</span>
</span></span><span class="line"><span class="cl"><span class="n">prompt</span> <span class="o">=</span> <span class="s2">&#34;一只穿着宇航服的猫在月球上弹吉他，赛博朋克风格，8K高清&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">image</span> <span class="o">=</span> <span class="n">generate_image</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 生成符合描述的图片</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>更多跨模态生成</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">CrossModalGeneration</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;跨模态生成能力&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="n">capabilities</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;文 → 图&#34;</span><span class="p">:</span> <span class="s2">&#34;DALL-E, Midjourney, Stable Diffusion&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;文 → 音&#34;</span><span class="p">:</span> <span class="s2">&#34;MusicGen, AudioLDM&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;文 → 视频&#34;</span><span class="p">:</span> <span class="s2">&#34;Sora, Runway Gen-2&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;图 → 文&#34;</span><span class="p">:</span> <span class="s2">&#34;GPT-4V, Claude 3.5&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;音 → 文&#34;</span><span class="p">:</span> <span class="s2">&#34;Whisper, Qwen-Audio&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;视频 → 文&#34;</span><span class="p">:</span> <span class="s2">&#34;Gemini 2.0, GPT-4V&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="23-超能力三多模态推理">2.3 超能力三：多模态推理</h3>
<p><strong>例子：看图做数学题</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 上传一张手写数学题的照片</span>
</span></span><span class="line"><span class="cl"><span class="n">image</span> <span class="o">=</span> <span class="s2">&#34;math_problem.jpg&#34;</span>  <span class="c1"># 图片内容: &#34;解方程 2x + 5 = 13&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">gpt4v</span><span class="o">.</span><span class="n">chat</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">text</span><span class="o">=</span><span class="s2">&#34;解这道题，并给出详细步骤&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">image</span><span class="o">=</span><span class="n">image</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出:</span>
</span></span><span class="line"><span class="cl"><span class="c1"># &#34;这是一个一元一次方程：</span>
</span></span><span class="line"><span class="cl"><span class="c1">#  步骤1: 2x + 5 = 13</span>
</span></span><span class="line"><span class="cl"><span class="c1">#  步骤2: 2x = 13 - 5</span>
</span></span><span class="line"><span class="cl"><span class="c1">#  步骤3: 2x = 8</span>
</span></span><span class="line"><span class="cl"><span class="c1">#  步骤4: x = 4</span>
</span></span><span class="line"><span class="cl"><span class="c1">#  答案: x = 4&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>更复杂的推理</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 场景：医疗诊断</span>
</span></span><span class="line"><span class="cl"><span class="n">inputs</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;X光片&#34;</span><span class="p">:</span> <span class="s2">&#34;chest_xray.jpg&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;病历&#34;</span><span class="p">:</span> <span class="s2">&#34;患者男性，65岁，咳嗽两周...&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;血液检测&#34;</span><span class="p">:</span> <span class="s2">&#34;blood_test.pdf&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">diagnosis</span> <span class="o">=</span> <span class="n">multimodal_ai</span><span class="o">.</span><span class="n">analyze</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出: &#34;根据X光片显示的肺部阴影、病史和血液指标，</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        建议进一步做CT检查排除肺部感染...&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="第三章2025年的多模态ai明星">第三章：2025年的多模态AI明星</h2>
<h3 id="31-gpt-4vopenai">3.1 GPT-4V（OpenAI）</h3>
<p><strong>特点</strong>：视觉理解能力最强</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 实战：分析商品评论的配图</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">openai</span> <span class="kn">import</span> <span class="n">OpenAI</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">OpenAI</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">analyze_product_review</span><span class="p">(</span><span class="n">image_url</span><span class="p">,</span> <span class="n">review_text</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;分析带图片的商品评论&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">chat</span><span class="o">.</span><span class="n">completions</span><span class="o">.</span><span class="n">create</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">        <span class="n">model</span><span class="o">=</span><span class="s2">&#34;gpt-4-vision-preview&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="n">messages</span><span class="o">=</span><span class="p">[</span>
</span></span><span class="line"><span class="cl">            <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;role&#34;</span><span class="p">:</span> <span class="s2">&#34;user&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;content&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                    <span class="p">{</span>
</span></span><span class="line"><span class="cl">                        <span class="s2">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;text&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                        <span class="s2">&#34;text&#34;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&#34;用户评论：</span><span class="si">{</span><span class="n">review_text</span><span class="si">}</span><span class="se">\n</span><span class="s2">请结合图片分析这个评论是否真实可信&#34;</span>
</span></span><span class="line"><span class="cl">                    <span class="p">},</span>
</span></span><span class="line"><span class="cl">                    <span class="p">{</span>
</span></span><span class="line"><span class="cl">                        <span class="s2">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;image_url&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                        <span class="s2">&#34;image_url&#34;</span><span class="p">:</span> <span class="p">{</span><span class="s2">&#34;url&#34;</span><span class="p">:</span> <span class="n">image_url</span><span class="p">}</span>
</span></span><span class="line"><span class="cl">                    <span class="p">}</span>
</span></span><span class="line"><span class="cl">                <span class="p">]</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="n">max_tokens</span><span class="o">=</span><span class="mi">500</span>
</span></span><span class="line"><span class="cl">    <span class="p">)</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">choices</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">content</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 使用示例</span>
</span></span><span class="line"><span class="cl"><span class="n">review</span> <span class="o">=</span> <span class="s2">&#34;这个键盘手感超好，RGB灯效炫酷！&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">image</span> <span class="o">=</span> <span class="s2">&#34;https://example.com/keyboard.jpg&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">analysis</span> <span class="o">=</span> <span class="n">analyze_product_review</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">review</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">analysis</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出: &#34;图片显示的确实是一款机械键盘，RGB背光清晰可见，</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        与评论描述一致。从键帽磨损程度看，应该是新品。</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        评论可信度：高&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>应用场景</strong>：</p>
<ul>
<li>📸 图片内容审核</li>
<li>🛒 电商商品分析</li>
<li>📄 文档OCR + 理解</li>
<li>🎨 艺术作品鉴赏</li>
</ul>
<h3 id="32-gemini-20google">3.2 Gemini 2.0（Google）</h3>
<p><strong>特点</strong>：原生多模态，支持超长视频</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">google.generativeai</span> <span class="k">as</span> <span class="nn">genai</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">genai</span><span class="o">.</span><span class="n">configure</span><span class="p">(</span><span class="n">api_key</span><span class="o">=</span><span class="s2">&#34;YOUR_API_KEY&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Gemini的杀手锏：理解长视频</span>
</span></span><span class="line"><span class="cl"><span class="n">model</span> <span class="o">=</span> <span class="n">genai</span><span class="o">.</span><span class="n">GenerativeModel</span><span class="p">(</span><span class="s1">&#39;gemini-2.0-flash&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 上传一个1小时的会议录像</span>
</span></span><span class="line"><span class="cl"><span class="n">video_file</span> <span class="o">=</span> <span class="n">genai</span><span class="o">.</span><span class="n">upload_file</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">&#34;meeting.mp4&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 让AI总结会议内容</span>
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">generate_content</span><span class="p">([</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;请总结这次会议的关键决策和行动项&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">video_file</span>
</span></span><span class="line"><span class="cl"><span class="p">])</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出: &#34;会议主要讨论了Q4产品路线图：</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        1. 决定推迟Feature A的发布至明年Q1</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        2. 增加移动端开发资源</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        3. 行动项：@张三 本周完成技术方案</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        ...&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>Gemini的优势</strong>：</p>
<table>
  <thead>
      <tr>
          <th>能力</th>
          <th>说明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>长上下文</td>
          <td>支持100万token（约750小时音频）</td>
      </tr>
      <tr>
          <td>原生多模态</td>
          <td>不是&quot;拼接&quot;，而是从底层设计</td>
      </tr>
      <tr>
          <td>实时交互</td>
          <td>支持语音对话</td>
      </tr>
      <tr>
          <td>多语言</td>
          <td>支持100+种语言</td>
      </tr>
  </tbody>
</table>
<h3 id="33-claude-35anthropic">3.3 Claude 3.5（Anthropic）</h3>
<p><strong>特点</strong>：最强的视觉推理能力</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">anthropic</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">anthropic</span><span class="o">.</span><span class="n">Anthropic</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Claude擅长复杂的视觉推理</span>
</span></span><span class="line"><span class="cl"><span class="n">message</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">messages</span><span class="o">.</span><span class="n">create</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">model</span><span class="o">=</span><span class="s2">&#34;claude-3-5-sonnet-20241022&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">max_tokens</span><span class="o">=</span><span class="mi">1024</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">messages</span><span class="o">=</span><span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;role&#34;</span><span class="p">:</span> <span class="s2">&#34;user&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;content&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">                <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="s2">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;image&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                    <span class="s2">&#34;source&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                        <span class="s2">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;base64&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                        <span class="s2">&#34;media_type&#34;</span><span class="p">:</span> <span class="s2">&#34;image/jpeg&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                        <span class="s2">&#34;data&#34;</span><span class="p">:</span> <span class="n">base64_image</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                    <span class="p">},</span>
</span></span><span class="line"><span class="cl">                <span class="p">},</span>
</span></span><span class="line"><span class="cl">                <span class="p">{</span>
</span></span><span class="line"><span class="cl">                    <span class="s2">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;text&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                    <span class="s2">&#34;text&#34;</span><span class="p">:</span> <span class="s2">&#34;这个电路图有什么问题？&#34;</span>
</span></span><span class="line"><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="cl">            <span class="p">],</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">content</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出: &#34;电路图中存在以下问题：</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        1. R2电阻的阻值标注错误（应该是10kΩ而不是1kΩ）</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        2. C1电容的极性接反了</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        3. 缺少保护二极管</span>
</span></span><span class="line"><span class="cl"><span class="c1">#        建议修改...&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>Claude的杀手锏</strong>：</p>
<ul>
<li>🧠 <strong>深度推理</strong>：能理解复杂的图表、代码截图</li>
<li>📊 <strong>数据分析</strong>：从图表中提取数据并分析</li>
<li>🔍 <strong>细节捕捉</strong>：能发现图片中的细微错误</li>
</ul>
<h3 id="34-qwen-vl阿里">3.4 Qwen-VL（阿里）</h3>
<p><strong>特点</strong>：开源、中文友好</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">transformers</span> <span class="kn">import</span> <span class="n">AutoModelForCausalLM</span><span class="p">,</span> <span class="n">AutoTokenizer</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 加载Qwen-VL模型</span>
</span></span><span class="line"><span class="cl"><span class="n">model</span> <span class="o">=</span> <span class="n">AutoModelForCausalLM</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;Qwen/Qwen-VL-Chat&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">device_map</span><span class="o">=</span><span class="s2">&#34;auto&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">trust_remote_code</span><span class="o">=</span><span class="kc">True</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">tokenizer</span> <span class="o">=</span> <span class="n">AutoTokenizer</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;Qwen/Qwen-VL-Chat&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">trust_remote_code</span><span class="o">=</span><span class="kc">True</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 中文图片问答</span>
</span></span><span class="line"><span class="cl"><span class="n">query</span> <span class="o">=</span> <span class="n">tokenizer</span><span class="o">.</span><span class="n">from_list_format</span><span class="p">([</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span><span class="s1">&#39;image&#39;</span><span class="p">:</span> <span class="s1">&#39;https://example.com/image.jpg&#39;</span><span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="p">{</span><span class="s1">&#39;text&#39;</span><span class="p">:</span> <span class="s1">&#39;图片里的人在做什么？&#39;</span><span class="p">},</span>
</span></span><span class="line"><span class="cl"><span class="p">])</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">response</span><span class="p">,</span> <span class="n">history</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">chat</span><span class="p">(</span><span class="n">tokenizer</span><span class="p">,</span> <span class="n">query</span><span class="o">=</span><span class="n">query</span><span class="p">,</span> <span class="n">history</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出: &#34;图片中有两个人在打羽毛球，背景是室内体育馆&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>Qwen-VL的优势</strong>：</p>
<ul>
<li>✅ 完全开源（可本地部署）</li>
<li>✅ 中文理解优秀</li>
<li>✅ 支持细粒度定位（能标注图片中的具体位置）</li>
</ul>
<hr>
<h2 id="第四章多模态ai的黑科技应用">第四章：多模态AI的「黑科技」应用</h2>
<h3 id="41-应用一智能购物助手">4.1 应用一：智能购物助手</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">SmartShoppingAssistant</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;拍照即可搜索商品&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span> <span class="o">=</span> <span class="n">GPT4V</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">search_engine</span> <span class="o">=</span> <span class="n">TaobaoAPI</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="nf">find_product</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">image</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;&#34;&#34;通过图片找商品&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 1: AI识别商品</span>
</span></span><span class="line"><span class="cl">        <span class="n">description</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">describe</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="c1"># &#34;这是一双白色的Nike Air Force 1运动鞋，鞋码约为42&#34;</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 2: 提取关键信息</span>
</span></span><span class="line"><span class="cl">        <span class="n">keywords</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">extract_keywords</span><span class="p">(</span><span class="n">description</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="c1"># [&#34;Nike&#34;, &#34;Air Force 1&#34;, &#34;白色&#34;, &#34;42码&#34;]</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 3: 搜索商品</span>
</span></span><span class="line"><span class="cl">        <span class="n">products</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">search_engine</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">keywords</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 4: 匹配相似度</span>
</span></span><span class="line"><span class="cl">        <span class="n">best_match</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">vision_model</span><span class="o">.</span><span class="n">find_most_similar</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">            <span class="n">image</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="n">image</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">products</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="n">best_match</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 使用</span>
</span></span><span class="line"><span class="cl"><span class="n">assistant</span> <span class="o">=</span> <span class="n">SmartShoppingAssistant</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">result</span> <span class="o">=</span> <span class="n">assistant</span><span class="o">.</span><span class="n">find_product</span><span class="p">(</span><span class="s2">&#34;shoe_photo.jpg&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;找到商品：</span><span class="si">{</span><span class="n">result</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">，价格：¥</span><span class="si">{</span><span class="n">result</span><span class="o">.</span><span class="n">price</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>真实案例</strong>：</p>
<ul>
<li>📱 <strong>Google Lens</strong>：拍照搜索任何东西</li>
<li>🛍️ <strong>淘宝拍立淘</strong>：拍照找同款</li>
<li>👗 <strong>小红书识图</strong>：找穿搭灵感</li>
</ul>
<h3 id="42-应用二ai医生助手">4.2 应用二：AI医生助手</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">MedicalAIAssistant</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;辅助医生诊断&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="nf">analyze_xray</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xray_image</span><span class="p">,</span> <span class="n">patient_info</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;&#34;&#34;分析X光片&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># 多模态输入</span>
</span></span><span class="line"><span class="cl">        <span class="n">inputs</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;image&#34;</span><span class="p">:</span> <span class="n">xray_image</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;text&#34;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&#34;&#34;&#34;
</span></span></span><span class="line"><span class="cl"><span class="s2">                患者信息：
</span></span></span><span class="line"><span class="cl"><span class="s2">                - 年龄：</span><span class="si">{</span><span class="n">patient_info</span><span class="p">[</span><span class="s1">&#39;age&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">
</span></span></span><span class="line"><span class="cl"><span class="s2">                - 性别：</span><span class="si">{</span><span class="n">patient_info</span><span class="p">[</span><span class="s1">&#39;gender&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">
</span></span></span><span class="line"><span class="cl"><span class="s2">                - 症状：</span><span class="si">{</span><span class="n">patient_info</span><span class="p">[</span><span class="s1">&#39;symptoms&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">
</span></span></span><span class="line"><span class="cl"><span class="s2">                - 病史：</span><span class="si">{</span><span class="n">patient_info</span><span class="p">[</span><span class="s1">&#39;history&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">
</span></span></span><span class="line"><span class="cl"><span class="s2">            &#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># AI分析</span>
</span></span><span class="line"><span class="cl">        <span class="n">analysis</span> <span class="o">=</span> <span class="n">multimodal_ai</span><span class="o">.</span><span class="n">analyze</span><span class="p">(</span><span class="n">inputs</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;findings&#34;</span><span class="p">:</span> <span class="n">analysis</span><span class="o">.</span><span class="n">findings</span><span class="p">,</span>      <span class="c1"># 发现的异常</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;diagnosis&#34;</span><span class="p">:</span> <span class="n">analysis</span><span class="o">.</span><span class="n">diagnosis</span><span class="p">,</span>    <span class="c1"># 初步诊断</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;confidence&#34;</span><span class="p">:</span> <span class="n">analysis</span><span class="o">.</span><span class="n">confidence</span><span class="p">,</span>  <span class="c1"># 置信度</span>
</span></span><span class="line"><span class="cl">            <span class="s2">&#34;recommendations&#34;</span><span class="p">:</span> <span class="n">analysis</span><span class="o">.</span><span class="n">recommendations</span>  <span class="c1"># 建议</span>
</span></span><span class="line"><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 使用示例</span>
</span></span><span class="line"><span class="cl"><span class="n">patient</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;age&#34;</span><span class="p">:</span> <span class="mi">45</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;gender&#34;</span><span class="p">:</span> <span class="s2">&#34;男&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;symptoms&#34;</span><span class="p">:</span> <span class="s2">&#34;胸痛、咳嗽&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;history&#34;</span><span class="p">:</span> <span class="s2">&#34;吸烟20年&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">result</span> <span class="o">=</span> <span class="n">assistant</span><span class="o">.</span><span class="n">analyze_xray</span><span class="p">(</span><span class="s2">&#34;chest_xray.jpg&#34;</span><span class="p">,</span> <span class="n">patient</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;发现：</span><span class="si">{</span><span class="n">result</span><span class="p">[</span><span class="s1">&#39;findings&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;建议：</span><span class="si">{</span><span class="n">result</span><span class="p">[</span><span class="s1">&#39;recommendations&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出:</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 发现：左肺下叶可见片状阴影</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 建议：建议进行CT检查以进一步确认，排除肺部感染或肿瘤</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>注意</strong>：AI只是辅助工具，最终诊断必须由专业医生做出！</p>
<h3 id="43-应用三智能监控">4.3 应用三：智能监控</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">SmartSecuritySystem</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;智能安防系统&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">video_model</span> <span class="o">=</span> <span class="n">Gemini2</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">alert_system</span> <span class="o">=</span> <span class="n">AlertSystem</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">async</span> <span class="k">def</span> <span class="nf">monitor_camera</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">camera_stream</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;&#34;&#34;实时监控摄像头&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="c1"># 获取视频帧</span>
</span></span><span class="line"><span class="cl">            <span class="n">frame</span> <span class="o">=</span> <span class="k">await</span> <span class="n">camera_stream</span><span class="o">.</span><span class="n">get_frame</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="c1"># AI分析</span>
</span></span><span class="line"><span class="cl">            <span class="n">analysis</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">video_model</span><span class="o">.</span><span class="n">analyze</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">                <span class="n">frame</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="n">prompt</span><span class="o">=</span><span class="s2">&#34;检测是否有异常行为：打架、摔倒、闯入等&#34;</span>
</span></span><span class="line"><span class="cl">            <span class="p">)</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="c1"># 发现异常</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="n">analysis</span><span class="o">.</span><span class="n">has_anomaly</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">                <span class="c1"># 生成详细报告</span>
</span></span><span class="line"><span class="cl">                <span class="n">report</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">video_model</span><span class="o">.</span><span class="n">generate_report</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">                    <span class="n">frame</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                    <span class="n">prompt</span><span class="o">=</span><span class="sa">f</span><span class="s2">&#34;详细描述发生了什么：</span><span class="si">{</span><span class="n">analysis</span><span class="o">.</span><span class="n">anomaly_type</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">                <span class="p">)</span>
</span></span><span class="line"><span class="cl">                
</span></span><span class="line"><span class="cl">                <span class="c1"># 发送警报</span>
</span></span><span class="line"><span class="cl">                <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">alert_system</span><span class="o">.</span><span class="n">send_alert</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">                    <span class="nb">type</span><span class="o">=</span><span class="n">analysis</span><span class="o">.</span><span class="n">anomaly_type</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                    <span class="n">description</span><span class="o">=</span><span class="n">report</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                    <span class="n">image</span><span class="o">=</span><span class="n">frame</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                    <span class="n">timestamp</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">                <span class="p">)</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>  <span class="c1"># 每秒分析一次</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 部署</span>
</span></span><span class="line"><span class="cl"><span class="n">system</span> <span class="o">=</span> <span class="n">SmartSecuritySystem</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="k">await</span> <span class="n">system</span><span class="o">.</span><span class="n">monitor_camera</span><span class="p">(</span><span class="n">camera</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>实际效果</strong>：</p>
<table>
  <thead>
      <tr>
          <th>传统监控</th>
          <th>AI监控</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>需要人工24小时盯着屏幕</td>
          <td>AI自动监控，只在异常时报警</td>
      </tr>
      <tr>
          <td>只能事后回看录像</td>
          <td>实时检测并预警</td>
      </tr>
      <tr>
          <td>无法理解复杂场景</td>
          <td>能识别&quot;打架&quot;&ldquo;摔倒&quot;等行为</td>
      </tr>
  </tbody>
</table>
<h3 id="44-应用四教育辅导">4.4 应用四：教育辅导</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">AITutor</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;AI家教&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="nf">help_with_homework</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">homework_image</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;&#34;&#34;帮助解答作业&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 1: OCR识别题目</span>
</span></span><span class="line"><span class="cl">        <span class="n">problem</span> <span class="o">=</span> <span class="n">vision_model</span><span class="o">.</span><span class="n">extract_text</span><span class="p">(</span><span class="n">homework_image</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 2: 理解题目类型</span>
</span></span><span class="line"><span class="cl">        <span class="n">problem_type</span> <span class="o">=</span> <span class="n">vision_model</span><span class="o">.</span><span class="n">classify</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">            <span class="n">homework_image</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">            <span class="n">categories</span><span class="o">=</span><span class="p">[</span><span class="s2">&#34;数学&#34;</span><span class="p">,</span> <span class="s2">&#34;物理&#34;</span><span class="p">,</span> <span class="s2">&#34;化学&#34;</span><span class="p">,</span> <span class="s2">&#34;语文&#34;</span><span class="p">,</span> <span class="s2">&#34;英语&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">        <span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 3: 生成解答</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="n">problem_type</span> <span class="o">==</span> <span class="s2">&#34;数学&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="c1"># 识别手写公式</span>
</span></span><span class="line"><span class="cl">            <span class="n">equation</span> <span class="o">=</span> <span class="n">vision_model</span><span class="o">.</span><span class="n">parse_math</span><span class="p">(</span><span class="n">homework_image</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="c1"># 逐步求解</span>
</span></span><span class="line"><span class="cl">            <span class="n">solution</span> <span class="o">=</span> <span class="n">math_solver</span><span class="o">.</span><span class="n">solve_step_by_step</span><span class="p">(</span><span class="n">equation</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="k">return</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;problem&#34;</span><span class="p">:</span> <span class="n">equation</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;steps&#34;</span><span class="p">:</span> <span class="n">solution</span><span class="o">.</span><span class="n">steps</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;answer&#34;</span><span class="p">:</span> <span class="n">solution</span><span class="o">.</span><span class="n">answer</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;explanation&#34;</span><span class="p">:</span> <span class="n">solution</span><span class="o">.</span><span class="n">explanation</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="k">elif</span> <span class="n">problem_type</span> <span class="o">==</span> <span class="s2">&#34;英语&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="c1"># 识别作文</span>
</span></span><span class="line"><span class="cl">            <span class="n">essay</span> <span class="o">=</span> <span class="n">vision_model</span><span class="o">.</span><span class="n">extract_text</span><span class="p">(</span><span class="n">homework_image</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="c1"># 批改作文</span>
</span></span><span class="line"><span class="cl">            <span class="n">feedback</span> <span class="o">=</span> <span class="n">english_tutor</span><span class="o">.</span><span class="n">grade_essay</span><span class="p">(</span><span class="n">essay</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="k">return</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;score&#34;</span><span class="p">:</span> <span class="n">feedback</span><span class="o">.</span><span class="n">score</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;grammar_errors&#34;</span><span class="p">:</span> <span class="n">feedback</span><span class="o">.</span><span class="n">grammar_errors</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;suggestions&#34;</span><span class="p">:</span> <span class="n">feedback</span><span class="o">.</span><span class="n">suggestions</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">                <span class="s2">&#34;corrected_version&#34;</span><span class="p">:</span> <span class="n">feedback</span><span class="o">.</span><span class="n">corrected_essay</span>
</span></span><span class="line"><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 使用</span>
</span></span><span class="line"><span class="cl"><span class="n">tutor</span> <span class="o">=</span> <span class="n">AITutor</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">result</span> <span class="o">=</span> <span class="n">tutor</span><span class="o">.</span><span class="n">help_with_homework</span><span class="p">(</span><span class="s2">&#34;homework.jpg&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>真实产品</strong>：</p>
<ul>
<li>📱 <strong>小猿搜题</strong>：拍照搜题</li>
<li>📝 <strong>作业帮</strong>：AI批改作业</li>
<li>🎓 <strong>Khan Academy</strong>：个性化辅导</li>
</ul>
<hr>
<h2 id="第五章多模态ai的技术原理简化版">第五章：多模态AI的技术原理（简化版）</h2>
<h3 id="51-核心架构">5.1 核心架构</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">MultimodalAI</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;&#34;&#34;多模态AI的基本架构&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="c1"># 各模态的编码器</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">text_encoder</span> <span class="o">=</span> <span class="n">TextEncoder</span><span class="p">()</span>      <span class="c1"># BERT, GPT</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">image_encoder</span> <span class="o">=</span> <span class="n">ImageEncoder</span><span class="p">()</span>    <span class="c1"># ViT, CLIP</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">audio_encoder</span> <span class="o">=</span> <span class="n">AudioEncoder</span><span class="p">()</span>    <span class="c1"># Whisper</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">video_encoder</span> <span class="o">=</span> <span class="n">VideoEncoder</span><span class="p">()</span>    <span class="c1"># VideoMAE</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># 融合层</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">fusion_layer</span> <span class="o">=</span> <span class="n">MultimodalFusion</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># 解码器</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">decoder</span> <span class="o">=</span> <span class="n">UnifiedDecoder</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="nf">process</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">inputs</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;&#34;&#34;处理多模态输入&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 1: 各模态编码</span>
</span></span><span class="line"><span class="cl">        <span class="n">embeddings</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="s2">&#34;text&#34;</span> <span class="ow">in</span> <span class="n">inputs</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="n">text_emb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_encoder</span><span class="p">(</span><span class="n">inputs</span><span class="p">[</span><span class="s2">&#34;text&#34;</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">            <span class="n">embeddings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">text_emb</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="s2">&#34;image&#34;</span> <span class="ow">in</span> <span class="n">inputs</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="n">image_emb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">image_encoder</span><span class="p">(</span><span class="n">inputs</span><span class="p">[</span><span class="s2">&#34;image&#34;</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">            <span class="n">embeddings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">image_emb</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="s2">&#34;audio&#34;</span> <span class="ow">in</span> <span class="n">inputs</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="n">audio_emb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">audio_encoder</span><span class="p">(</span><span class="n">inputs</span><span class="p">[</span><span class="s2">&#34;audio&#34;</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">            <span class="n">embeddings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">audio_emb</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 2: 融合</span>
</span></span><span class="line"><span class="cl">        <span class="n">fused_embedding</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fusion_layer</span><span class="p">(</span><span class="n">embeddings</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># Step 3: 解码生成输出</span>
</span></span><span class="line"><span class="cl">        <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">decoder</span><span class="p">(</span><span class="n">fused_embedding</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="k">return</span> <span class="n">output</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="52-关键技术clip">5.2 关键技术：CLIP</h3>
<p><strong>CLIP = 连接图像和文字的桥梁</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># CLIP的训练方式</span>
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">CLIP</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">image_encoder</span> <span class="o">=</span> <span class="n">ViT</span><span class="p">()</span>  <span class="c1"># Vision Transformer</span>
</span></span><span class="line"><span class="cl">        <span class="bp">self</span><span class="o">.</span><span class="n">text_encoder</span> <span class="o">=</span> <span class="n">Transformer</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="nf">train</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">image_text_pairs</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;&#34;&#34;对比学习&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="n">image</span><span class="p">,</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">image_text_pairs</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="c1"># 编码</span>
</span></span><span class="line"><span class="cl">            <span class="n">image_emb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">image_encoder</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            <span class="n">text_emb</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_encoder</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="c1"># 目标：匹配的图文对相似度高，不匹配的相似度低</span>
</span></span><span class="line"><span class="cl">            <span class="n">similarity</span> <span class="o">=</span> <span class="n">cosine_similarity</span><span class="p">(</span><span class="n">image_emb</span><span class="p">,</span> <span class="n">text_emb</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="c1"># 损失函数</span>
</span></span><span class="line"><span class="cl">            <span class="n">loss</span> <span class="o">=</span> <span class="n">contrastive_loss</span><span class="p">(</span><span class="n">similarity</span><span class="p">,</span> <span class="n">is_match</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">            
</span></span><span class="line"><span class="cl">            <span class="c1"># 反向传播</span>
</span></span><span class="line"><span class="cl">            <span class="n">loss</span><span class="o">.</span><span class="n">backward</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 使用CLIP</span>
</span></span><span class="line"><span class="cl"><span class="n">clip</span> <span class="o">=</span> <span class="n">CLIP</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 图片搜索</span>
</span></span><span class="line"><span class="cl"><span class="n">image</span> <span class="o">=</span> <span class="n">load_image</span><span class="p">(</span><span class="s2">&#34;cat.jpg&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">texts</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&#34;一只猫&#34;</span><span class="p">,</span> <span class="s2">&#34;一只狗&#34;</span><span class="p">,</span> <span class="s2">&#34;一辆车&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 计算相似度</span>
</span></span><span class="line"><span class="cl"><span class="n">similarities</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="n">clip</span><span class="o">.</span><span class="n">similarity</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">best_match</span> <span class="o">=</span> <span class="n">texts</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="n">similarities</span><span class="p">)]</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">best_match</span><span class="p">)</span>  <span class="c1"># 输出: &#34;一只猫&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="53-训练数据规模">5.3 训练数据规模</h3>
<p><strong>多模态AI需要海量数据</strong>：</p>
<table>
  <thead>
      <tr>
          <th>模型</th>
          <th>训练数据规模</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>CLIP</td>
          <td>4亿图文对</td>
      </tr>
      <tr>
          <td>GPT-4V</td>
          <td>未公开（估计万亿级token）</td>
      </tr>
      <tr>
          <td>Gemini 2.0</td>
          <td>未公开（包含YouTube全部视频）</td>
      </tr>
      <tr>
          <td>Qwen-VL</td>
          <td>15亿图文对</td>
      </tr>
  </tbody>
</table>
<p><strong>为什么需要这么多数据？</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 多模态AI要学习的映射关系</span>
</span></span><span class="line"><span class="cl"><span class="n">mappings</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;图片中的猫&#34;</span> <span class="err">↔</span> <span class="s2">&#34;文字&#39;猫&#39;&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;笑脸表情&#34;</span> <span class="err">↔</span> <span class="s2">&#34;开心的情绪&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;红色&#34;</span> <span class="err">↔</span> <span class="s2">&#34;热情、危险、停止&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;钢琴声&#34;</span> <span class="err">↔</span> <span class="s2">&#34;优雅、古典&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># ... 数十亿种映射关系</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="第六章多模态ai的挑战">第六章：多模态AI的挑战</h2>
<h3 id="61-挑战一幻觉hallucination">6.1 挑战一：幻觉（Hallucination）</h3>
<p><strong>问题</strong>：AI有时会&quot;看到&quot;不存在的东西</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 真实案例</span>
</span></span><span class="line"><span class="cl"><span class="n">image</span> <span class="o">=</span> <span class="s2">&#34;empty_room.jpg&#34;</span>  <span class="c1"># 一个空房间的照片</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">ai</span><span class="o">.</span><span class="n">describe</span><span class="p">(</span><span class="n">image</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 错误输出: &#34;房间里有一张桌子和两把椅子&#34;</span>
</span></span><span class="line"><span class="cl"><span class="c1"># （实际上房间是空的！）</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>原因</strong>：</p>
<ul>
<li>AI基于概率预测，会&quot;脑补&quot;常见物品</li>
<li>训练数据中的偏见</li>
</ul>
<p><strong>解决方案</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 使用置信度阈值</span>
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">ai</span><span class="o">.</span><span class="n">describe</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">min_confidence</span><span class="o">=</span><span class="mf">0.8</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 或者要求AI标注不确定的部分</span>
</span></span><span class="line"><span class="cl"><span class="n">response</span> <span class="o">=</span> <span class="n">ai</span><span class="o">.</span><span class="n">describe</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">image</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">instruction</span><span class="o">=</span><span class="s2">&#34;如果不确定，请说&#39;不确定&#39;而不是猜测&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="62-挑战二计算成本">6.2 挑战二：计算成本</h3>
<p><strong>多模态AI非常&quot;烧钱&rdquo;</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 成本对比</span>
</span></span><span class="line"><span class="cl"><span class="n">costs</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;纯文本&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;GPT-4&#34;</span><span class="p">:</span> <span class="s2">&#34;$0.03 / 1K tokens&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;Claude&#34;</span><span class="p">:</span> <span class="s2">&#34;$0.015 / 1K tokens&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">},</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;多模态&#34;</span><span class="p">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;GPT-4V&#34;</span><span class="p">:</span> <span class="s2">&#34;$0.01 / image + $0.03 / 1K tokens&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;Gemini Pro Vision&#34;</span><span class="p">:</span> <span class="s2">&#34;$0.0025 / image&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 处理1000张图片 + 对话</span>
</span></span><span class="line"><span class="cl"><span class="n">text_only_cost</span> <span class="o">=</span> <span class="mf">0.03</span> <span class="o">*</span> <span class="mi">10</span>  <span class="c1"># $0.30</span>
</span></span><span class="line"><span class="cl"><span class="n">multimodal_cost</span> <span class="o">=</span> <span class="mf">0.01</span> <span class="o">*</span> <span class="mi">1000</span> <span class="o">+</span> <span class="mf">0.03</span> <span class="o">*</span> <span class="mi">10</span>  <span class="c1"># $10.30</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;多模态成本是纯文本的 </span><span class="si">{</span><span class="n">multimodal_cost</span> <span class="o">/</span> <span class="n">text_only_cost</span><span class="si">:</span><span class="s2">.0f</span><span class="si">}</span><span class="s2"> 倍&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 输出: 多模态成本是纯文本的 34 倍</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="63-挑战三隐私和安全">6.3 挑战三：隐私和安全</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 风险场景</span>
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">PrivacyRisks</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">risks</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;人脸识别 → 隐私泄露&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;医疗图像 → 敏感信息&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;监控视频 → 滥用风险&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;深度伪造 → 虚假信息&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1"># 防护措施</span>
</span></span><span class="line"><span class="cl">    <span class="n">protections</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;数据脱敏&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;本地部署（不上传云端）&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;访问控制&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;水印技术&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="第七章未来展望">第七章：未来展望</h2>
<h3 id="71-2026年预测">7.1 2026年预测</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">future_capabilities</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;2026&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;实时多模态对话（像人类一样边看边聊）&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;3D场景理解（理解空间关系）&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;情感识别（从表情、语气判断情绪）&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;跨模态生成（说一句话，生成视频）&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">],</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;2027&#34;</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;具身智能（机器人 + 多模态AI）&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;全感官AI（视觉+听觉+触觉+嗅觉）&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;实时翻译（包括手语、表情）&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="s2">&#34;AI导演（自动拍摄剪辑视频）&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="72-终极目标通用人工智能agi">7.2 终极目标：通用人工智能（AGI）</h3>
<p><strong>多模态是通向AGI的必经之路</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 人类的智能 = 多模态</span>
</span></span><span class="line"><span class="cl"><span class="n">human_intelligence</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;视觉&#34;</span><span class="p">:</span> <span class="s2">&#34;看&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;听觉&#34;</span><span class="p">:</span> <span class="s2">&#34;听&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;触觉&#34;</span><span class="p">:</span> <span class="s2">&#34;摸&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;嗅觉&#34;</span><span class="p">:</span> <span class="s2">&#34;闻&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;味觉&#34;</span><span class="p">:</span> <span class="s2">&#34;尝&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;综合&#34;</span><span class="p">:</span> <span class="s2">&#34;理解世界&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># AI要达到人类水平，必须也是多模态的</span>
</span></span><span class="line"><span class="cl"><span class="n">agi</span> <span class="o">=</span> <span class="n">MultimodalAI</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">vision</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">audio</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">touch</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>  <span class="c1"># 未来</span>
</span></span><span class="line"><span class="cl">    <span class="n">smell</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>  <span class="c1"># 未来</span>
</span></span><span class="line"><span class="cl">    <span class="n">taste</span><span class="o">=</span><span class="kc">True</span>   <span class="c1"># 未来</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="结语感知的革命">结语：感知的革命</h2>
<p><strong>多模态AI不仅仅是技术进步，它改变了AI与世界的交互方式。</strong></p>
<h3 id="从读到看">从「读」到「看」</h3>
<ul>
<li><strong>以前</strong>：AI只能读文字（像盲人）</li>
<li><strong>现在</strong>：AI能看、能听、能理解（像正常人）</li>
</ul>
<h3 id="从工具到伙伴">从「工具」到「伙伴」</h3>
<ul>
<li><strong>以前</strong>：AI是搜索引擎（你问我答）</li>
<li><strong>现在</strong>：AI是助手（能主动观察、理解、建议）</li>
</ul>
<h3 id="开发者的新机会">开发者的新机会</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 你可以做的事情</span>
</span></span><span class="line"><span class="cl"><span class="n">opportunities</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;开发多模态应用（医疗、教育、安防）&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;训练垂直领域的多模态模型&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;创建多模态数据集&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;研究新的融合算法&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;探索新的应用场景&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>多模态AI的时代才刚刚开始。</strong></p>
<p><strong>你准备好了吗？</strong></p>
<hr>
<p><strong>快速开始</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 1. 试用GPT-4V</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">openai</span> <span class="kn">import</span> <span class="n">OpenAI</span>
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">OpenAI</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 上传图片，开始对话</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 2. 试用Gemini</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">google.generativeai</span> <span class="k">as</span> <span class="nn">genai</span>
</span></span><span class="line"><span class="cl"><span class="n">genai</span><span class="o">.</span><span class="n">configure</span><span class="p">(</span><span class="n">api_key</span><span class="o">=</span><span class="s2">&#34;YOUR_KEY&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 上传视频，让AI总结</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 3. 本地部署Qwen-VL</span>
</span></span><span class="line"><span class="cl"><span class="c1"># git clone https://github.com/QwenLM/Qwen-VL</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 完全免费，可商用</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>相关资源</strong>：</p>
<ul>
<li><a href="https://platform.openai.com/docs/guides/vision">OpenAI Vision Guide</a></li>
<li><a href="https://ai.google.dev/">Google Gemini</a></li>
<li><a href="https://github.com/QwenLM/Qwen-VL">Qwen-VL GitHub</a></li>
<li><a href="https://arxiv.org/abs/2103.00020">CLIP Paper</a></li>
</ul>
]]></content:encoded></item></channel></rss>