结合文本与图像
统一的多模态提示。
结合文本与图像 是 CoddyKit 上的免费 AI Prompt Engineering 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Prompt Engineering 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Prompt Engineering 课程共包含 4 节课。
统一多模态提示词
多模态提示词并不是文本加上一张附加图像,而是一个单一的交错序列,其中图像词元和文本词元位于同一上下文中,并彼此进行注意力计算。模型并不是“先看图片再读文本”——它处理的是融合后的词元流。
- 图像区块会被投影到与文本词元相同的嵌入空间中。
- 顺序很重要:将问题放在图像之前,与将问题放在图像之后相比,会激发不同的注意力模式。
- 您是在编写一个具有两种表面形式的提示词,而不是两个提示词。
交错顺序与锚定
图像相对于指令的位置会改变模型的行为。将指令放在图像之后,模型就能根据已经编码的内容来理解问题;将指令放在图像之前,则会把图像变成预先陈述任务的证据。
对于多图像提示词,请在行内标记每张图像,以便后续文本能够明确引用它([Image 1]、[Image 2])。
messages = [
{'role': 'user', 'content': [
{'type': 'text', 'text': 'You will see two product photos.'},
{'type': 'text', 'text': 'Image 1:'},
{'type': 'image', 'source': img_a},
{'type': 'text', 'text': 'Image 2:'},
{'type': 'image', 'source': img_b},
{'type': 'text', 'text': 'Which has better lighting? Cite the image label.'}
]}
]编码前明确任务
视觉编码器是有损的:与隐含任务无关的细节可能会在池化过程中被丢弃。如果在图像之前说明任务,您就能引导模型关注重要的区域。
- 通用的图像说明请求只能得到通用特征。
- 具体问题(“数一下电路板上的电阻”)会将表征预算集中到相关子区域。
需要精细细节时,请优先明确任务。
分辨率与切块预算
大多数视觉模型会将高分辨率图像切分成固定大小的图块,每个图块都会消耗词元。2000x2000 的图像可能会被分成许多图块,而每个图块还会经过下采样。词元预算是多模态提示中的隐性约束。
- 发送前请裁剪到感兴趣的区域——不要指望模型自行放大。
- 对于内容密集的文档,请发送页面裁剪图,而不是一张完整页面图像。
- 请了解您的服务提供商支持的最大图块数;超过该限制后,细小文字会变得无法读取。
def estimate_image_tokens(w, h, tile=512, per_tile=256):
import math
tiles = math.ceil(w / tile) * math.ceil(h / tile)
return tiles * per_tile + per_tile # + thumbnail作为视觉结构化模式的文本
将图像与文本通道中的显式输出模式结合起来。图像提供内容,文本提供契约。这比自由形式的描述可靠得多。
请要求输出以预期实体为键的 JSON,并指示模型对不可见字段输出 null——这样可以抑制幻觉细节。
instruction = (
'Extract from the receipt image. Return JSON: '
'{"merchant": str|null, "total": number|null, '
'"date": str|null, "line_items": [{"name": str, "price": number}]}. '
'Use null when a field is not legible. Do not invent values.'
)使用指示语消除歧义
指示性引用(“这个”、“左边的那个”、“高亮显示的框”)会将文本绑定到图像区域。当您可以预先标注图像时(绘制方框、添加箭头),文本引用会比单独使用空间语言可靠得多。
- 空间词(“右上方”)在图像旋转或裁剪后容易出错。
- 叠加编号标记并写上“对象 #3”则没有歧义。
- 预处理图像以添加标记,是一种合理的提示工程手段。
混合模态少样本示例
您可以提供图像到文本的示例,以固定格式和推理风格。每个示例都是一个交错排列的(图像、理想答案)对。模型会从这些演示中归纳出映射关系。
请确保示例图像能够代表真实分布——来自不同领域的示例会教给模型错误的特征选择方式。
shots = [
('image', chart_a), ('text', 'Trend: upward. Peak: Q3. Anomaly: none.'),
('image', chart_b), ('text', 'Trend: flat. Peak: Q1. Anomaly: Q4 dip.'),
('image', target_chart), ('text', 'Trend:') # model completes
]将主张锚定到像素
对于高风险的信息提取,请要求模型标明每条主张在图像中的来源位置。近似边界框或图像中引用的文字可以作为可验证的证据,并显著减少自信编造。
- “对于每个值,请引用您读到的确切标签文字。”
- “请为每个字段提供一个近似的归一化方框 [x0,y0,x1,y1]。”
证据锚定会将不透明的答案转变为可审计的答案。
需要防范的失败模式
多模态模型会以一些典型方式失败:
- 小字体或特殊字体会导致OCR 偏移——模型容易混淆 1/7 和 0/O 这样的字符。
- 面对超过约 6 个相似对象时会出现计数崩溃。
- 图像说明偏差:描述典型场景,而不是实际场景。
- 文本通道覆盖:一个自信但错误的文本主张可能会压制正确的视觉证据。
请要求模型先从图像中推导结论,再与任何文本断言进行协调,以减轻这些问题。
冲突协调提示
当文本上下文与图像冲突时,您必须明确决定优先级——模型没有值得信赖的默认策略。请直接说明:“如果图像与所提供的元数据矛盾,请相信图像,并标记这一差异。”
这句话会将静默错误转变为显式且可见的冲突,下游流水线可以将其路由给审核人员。
policy = (
'You are given metadata AND a photo. '
'When they disagree, prefer the photo as ground truth. '
'Emit {"value": ..., "conflict": bool, "note": str}.'
)架构化融合流水线
生产环境中的多模态提示是一条流水线,而不是一次调用:
- 预处理:裁剪、标注,并缩小到预算范围内。
- 融合:将内容与以任务为先的指令和输出模式交错排列。
- 锚定:要求提供每条主张的证据。
- 协调:说明不同模态之间的优先级。
- 验证:解析 JSON,检查空值和冲突标记。
每个阶段都能缩小单靠提示无法控制的失败范围。
快速检查
您必须从高分辨率的合同扫描件中提取小字内容,并且需要可靠的数字。
回顾:融合文本与图像
统一的多模态提示是一条交错的词元流。关键做法包括:通过以任务为先的框定来引导视觉编码器,通过裁剪实现对分辨率和切块的关注,使用带可为空字段的显式输出模式,为每条主张提供像素锚定,并在发生冲突时指定模态优先级。请将其视为一条流水线——预处理、融合、锚定、协调、验证——这样视觉提示中脆弱的部分就会变得可控。
用 AI 导师学习 AI Prompt Engineering — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 53
- 课程
- 199
常见问题解答
「结合文本与图像」课时是免费的吗?
是的 — 「结合文本与图像」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Prompt Engineering 课程的其余内容,请升级到 CoddyKit PRO。 AI Prompt Engineering 课程共包含 4 节课。
「结合文本与图像」这节课中我会学到什么?
统一的多模态提示。 你通过在浏览器中直接运行的动手代码来练习 AI Prompt Engineering,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Prompt Engineering 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Prompt Engineering 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「结合文本与图像」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Prompt Engineering 课中编写并运行代码吗?
能。每节 AI Prompt Engineering 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 结合文本与图像
- 跨模态建立依据
- 音频、文本与视觉协同
- 多模态输出控制