[提示词工程] Day 26: 多模态提示 & 工具调用提示 — 从纯文本对话到多通道交互

Day 26: 提示词工程学习笔记

2026-04-23 · 技巧 #51 多模态提示 · #52 工具调用提示 · 前沿技巧专题

今天学习两个前沿技巧,它们代表了提示工程从"纯文本对话"到"多通道交互"的进化:多模态提示打开了输入通道(看图、听音、看视频),工具调用提示打开了输出通道(搜索、计算、操作数据库)。两者结合,就是 Agent 系统的全貌。

技巧 #51: 多模态提示

多模态提示是指在同一个提示中组合使用文本、图像、音频、视频等多种模态的信息,让模型能够理解、分析和生成跨模态的内容。随着 GPT-4V、Gemini、Claude 3 等多模态大模型的普及,多模态提示已经成为提示工程最前沿、最令人兴奋的方向之一。

为什么多模态提示重要?因为人类的世界从来不只是文字。我们通过看图理解结构,通过听声音感知情绪,通过视频观察动态。当模型只处理文字时,它缺失了大量现实世界的信号。多模态提示弥补了这个鸿沟。

三种基本范式

范式一:图文联合理解

最常见的多模态提示是将图像和文本组合在一起。关键技巧:指令必须明确指向图像中的具体信息。模糊的"请看图回答"效果远不如"请从图像左上角的价目表中提取"。

[图像:一张餐厅菜单的照片]

请根据这张菜单:
1. 列出所有素食选项
2. 哪道菜最辣?从配料判断
3. 估算两人用餐的预算范围

范式二:图像比较与推理

让模型对比多张图像,执行推理分析。例如对比不同年份的城市天际线,识别新增建筑、拆除建筑和整体高度变化。

范式三:文档与图表解析

将截图、扫描件、图表作为输入,让模型执行结构化提取。可以要求 JSON 格式输出,并对有歧义的数字标记 confidence 字段。

图像提示的三个进阶技巧

技巧一:空间定位引导 — 明确告诉模型看图像的哪个区域,如"请关注图像右下角的局部放大图"。

技巧二:多步骤视觉推理 — 将视觉任务拆解为步骤:先描述整体布局→识别家具→评估风格→提出改善建议。引导模型逐步观察,避免遗漏。

技巧三:视觉锚点 + 文本约束 — 用文本锚定视觉理解的边界。例如"请仅根据包装上实际印刷的信息回答,不要猜测或补充常识"。防止模型用先验知识替代视觉证据。

音频与视频提示(新兴领域)

音频提示可以分析对话录音,提取客户诉求、客服回应质量、情绪变化曲线。视频提示可以按时间线总结教程内容,识别哪些步骤被省略了。目前这些功能还不如图像提示成熟,但趋势已经很明显。

三个常见陷阱

陷阱一:过度信任视觉识别

模型可能把 7 识别成 1,把蓝色看成紫色,把 O 看成 0。对数字和文字识别需要额外验证,要求模型报告置信度和可能的其他解读。

陷阱二:图像信息过载

一张复杂图像可能包含太多信息。当任务只需要关注特定部分时,先用文本框定范围:"请只关注图中红色曲线代表的指标"。

陷阱三:跨模态幻觉

模型可能"脑补"图像中不存在的信息,尤其当文本提示暗示了某些内容时。避免问"图中那只猫在做什么?"(图像中可能根本没有猫),应该先确认"图中是否有猫?"

案例对比:产品质检

❌ 模糊提示:

[图像:产品照片]
这个产品有什么问题?
✅ 精准提示:

[图像:产品照片]
你是一个产品质检专家。请检查此产品是否存在以下缺陷:
1. 表面划痕
2. 色差
3. 变形
4. 缺件

对每项缺陷,回答"检出"/"未检出"/"无法判断"。
如果检出,请描述缺陷位置和严重程度。

案例对比:UI 设计审查

❌ 笼统提示:

[图像:App 截图]
这个 UI 设计怎么样?
✅ 结构化提示:

[图像:App 截图]
你是一个 UX 设计评审专家。请从以下维度评估:
1. 信息层级:主要操作是否突出?
2. 一致性:与 iOS HIG 的符合度
3. 可访问性:文字对比度是否足够?
4. 交互暗示:按钮和可点击区域是否清晰?

每个维度给出 1-5 分评分和改进建议。

技巧 #52: 工具调用提示

工具调用提示是指让 LLM 在对话中自主决定何时、如何调用外部工具(API、数据库、搜索引擎、代码解释器等),并将工具返回的结果整合到最终回答中。这是 Agent 系统的基础能力,也是连接"语言理解"和"现实行动"的关键桥梁。

为什么工具调用重要?因为 LLM 本身是"断网的"——它没有实时数据访问能力、不能执行代码、不能查数据库。工具调用打破了这道墙,让模型从"只能回答问题"变成"能采取行动"。

三步基本机制

步骤一:工具定义 — 在对话开始前,告诉模型有哪些工具可用、每个工具的参数格式和返回值。定义越精确,模型越不容易调用错误。

你可以使用以下工具:

1. search_web
   - 功能:搜索互联网获取实时信息
   - 参数:query(搜索关键词,字符串)
   - 返回:搜索结果摘要列表

2. calculator
   - 功能:执行数学计算
   - 参数:expression(数学表达式,字符串)
   - 返回:计算结果

3. get_weather
   - 功能:获取指定城市的当前天气
   - 参数:city(城市名),unit(celsius/fahrenheit)
   - 返回:温度、湿度、天气状况

步骤二:模型决策 — 模型根据用户问题,决定是否需要调用工具、调用哪个工具、传入什么参数。例如用户问"北京今天适合户外运动吗?",模型推理:需要实时天气数据 → 调用 get_weather。

步骤三:工具执行与结果整合 — 工具返回结果后,模型将结果整合到自然语言回答中。不是简单复制工具输出,而是结合上下文给出有价值的解读。

四个进阶技巧

技巧一:多工具编排 — 复杂任务可能需要连续调用多个工具。比如比较两家公司股价:先并行搜索两个股价,再分别计算涨跌幅。提示中建议"当需要比较多个对象时,请并行调用搜索工具获取数据,然后用计算工具进行数值比较"。

技巧二:工具选择引导 — 当可用工具很多时,设定优先级规则:需要实时数据→优先用 search_web;需要精确计算→优先用 calculator;只需要已有知识→不调用工具,直接回答。

技巧三:错误处理与重试 — 工具可能失败。好的提示应该包含错误处理策略:分析错误原因→参数错误则修正重试(最多2次)→服务不可用则尝试替代工具→全部失败则如实告知用户。

技巧四:工具调用的确认机制 — 对于有副作用的工具(发邮件、删除数据、执行交易),增加确认步骤。将工具分为只读(可直接调用)和写入(需先告知操作内容,等待用户确认后执行)两类。

工具定义的三个最佳实践

实践一:参数类型和约束要精确

不要只写 get_stock_price(symbol),要说明 symbol 是大写字母格式的股票代码(如 AAPL),并给出示例调用。

实践二:工具描述包含适用场景

不要只写"calculator - 做数学计算",要写明"适用于四则运算和百分比计算,不适用于符号推导(用 wolfram_alpha 代替)"。

实践三:提供工具调用的示例

给出完整的调用链路示例:当用户问"东京和巴黎的温差是多少"时 → 1. 调用 get_weather(东京) → 2. 调用 get_weather(巴黎) → 3. 调用 calculator(差值) → 4. 回答。

函数调用格式(OpenAI 风格)

现代 API 通常使用结构化的 JSON Schema 定义工具参数。这种方式比自然语言描述更精确、更不容易产生歧义:

{
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "获取指定城市的当前天气信息",
      "parameters": {
        "type": "object",
        "properties": {
          "city": {"type": "string", "description": "城市名称"},
          "unit": {"type": "string", "enum": ["celsius","fahrenheit"]}
        },
        "required": ["city"]
      }
    }
  }]
}

案例对比:智能客服系统

❌ 无工具调用的客服:

你是一个客服代表。请回答用户的问题。
(模型只能用训练数据回答,无法查询实时订单状态)
✅ 有工具调用的客服:

你是一个客服代表,可以使用以下工具:
1. query_order(order_id) - 查询订单状态
2. query_user(user_id) - 查询用户信息
3. create_refund(order_id, amount, reason) - 创建退款(需确认)
4. update_address(order_id, new_address) - 更新地址

规则:查询类工具可直接调用;退款和修改地址类工具,先告知用户操作内容,等待确认。

案例对比:数据分析助手

❌ 无工具的数据分析:

请分析这份数据...
(模型只能用对话中提供的文字数据,无法处理真实数据库)
✅ 有工具的数据分析:

你是数据分析助手,可以使用以下工具:
1. sql_query(query) - 执行 SQL 查询(只读 SELECT)
2. plot_chart(data, chart_type, title) - 生成图表
3. stat_test(data1, data2, test_type) - 执行统计检验

工作流程:理解需求 → 设计 SQL → 验证假设 → 可视化 → 自然语言解释
注意:SQL 只能使用 SELECT,禁止 INSERT/UPDATE/DELETE。

今日总结

两个技巧的关联:多模态提示和工具调用提示代表了提示工程从"纯文本对话"到"多通道交互"的进化方向。多模态提示打开了输入通道(看图、听音、看视频),工具调用提示打开了输出通道(搜索、计算、操作数据库)。两者结合,就是 Agent 系统的全貌:感知世界 + 行动于世界。

多模态提示实践要点

- 始终用文本约束框定视觉注意范围

- 对 OCR 和数字识别保持怀疑,加验证步骤

- 先验知识 + 视觉证据要分开标注

工具调用提示实践要点

- 工具定义要精确:参数类型、格式、约束、示例

- 区分只读工具和写入工具,写入工具需要确认

- 为工具调用失败设计 fallback 策略

- 在复杂场景中,引导模型规划调用顺序

与前面技巧的联系

角色设定 (#3) → 工具调用提示常与角色设定配合——"你是数据分析助手,可以使用 SQL 查询工具"

思维链 (#6) → 多工具编排时,思维链帮助模型规划调用顺序

结构化输出 (#18) → 工具定义本身就是结构化输出的典型应用

防御性提示 (#25) → 工具调用的确认机制就是防御性提示的实践

📅 明日预告:Day 27 - #53 记忆增强提示、#54 情感调节提示

评论

此博客中的热门博文

OpenClaw 救援机器人建设与演进全记录 - 从单点故障到双实例自愈体系

[Hello-Agents] Day 2: 第一章 初识智能体

[项目测评] AIGCPanel:一站式 AI 数字人系统完全指南