1. 文档说明
- 本文档面向
VL968算法创建、测试和实施人员,重点回答一件事:在当前模型能力边界下,提示词应当如何定义,才能更稳定、更接近业务预期。 - 当前阶段,
prompt不是简单的描述语句,而是在很大程度上承担了“任务定义”的作用。提示词写法不清,往往会直接导致任务边界漂移、误报、漏报和结果不一致。
2. 当前模型能力与提示词定位
- 当前模型更擅长“目标是否存在”“关系是否满足”这类粗粒度判断,不擅长“框得准、数得准、格式还要稳定”的精细结构化交付。
- 提示词设计不能追求“一套万能模板”,而应围绕任务类型、任务复杂度和当前模型边界分别设计。
- 对复杂目标、复杂条件、细粒度属性和高精度结构化交付要求高的任务,提示词设计尤为重要。
3. 简单任务与复杂任务如何区分
3.1 判定原则
简单任务: 模型主要回答“一个明显目标有没有出现”。
复杂任务: 模型不只是“看见目标”,还要同时判断多个条件、排除干扰,或者输出严格的检测框、计数值、文本结果。
3.2 判断维度
| 判断维度 | 简单任务 | 复杂任务 |
|---|---|---|
| 目标特征 | 单一、明确、特征直接 | 目标抽象、边界模糊、依赖细节 |
| 条件数量 | 通常只有 1 个核心条件 | 通常有 2 个及以上条件 |
| 排除条件 | 基本不需要 | 往往必须写清排除条件 |
| 细节依赖 | 不依赖局部小细节 | 依赖小目标、局部属性、细粒度证据 |
| 任务性质 | 主要是“有 / 无”判断 | 涉及动作、关系、状态、违规逻辑 |
| 输出要求 | 只判断存在性即可 | 需要框、数量、文字或严格结构化结果 |
| 背景干扰 | 背景较干净、目标突出 | 遮挡、远距离、水印、字幕、复杂背景明显 |
- 一个任务如果在以上维度中满足
4条及以上复杂特征,就建议按复杂任务处理。
3.3 典型示例
简单任务示例: 积水检测、明确的大目标检测、部分规则直接的单目标识别。
复杂任务示例: 抽烟、打电话、跨梯子、未挂安全绳、未穿防护鞋、疲劳驾驶、密集人数计数、业务目标文本识别。
3.4 对应策略
简单任务:
- 可以直接尝试“检测画面中的某目标”。
- 可开启 【可视化展示】或 【大模型思考过程】。
复杂任务:
- 不要直接写成抽象检测目标。
- 优先拆成条件,采用 “先判断、再输出” 的写法。
- 先关闭【可视化展示】、【大模型思考过程】验证任务边界,再决定是否开启。
4. 提示词编写的总体原则
- 先明确任务目标,再写输出要求。 先写“要判断什么”,再写“满足后如何输出”,比一上来直接要求检测框更稳定。
- 复杂条件必须拆开写。 一条条件一行,避免把姿态、关系、位置、排除条件混成一句自然语言。
- 必须写清排除条件。 对打电话、抽烟、未戴帽子、未挂安全绳这类任务,只写正向条件通常不够,需同时写清哪些情况视为不满足。
- 否定类任务要明确定义告警逻辑。 对灭火器离位、无人值守这类任务,要明确写出“不存在则为满足条件”还是“不存在则返回告警”。
- 文本类任务必须限定目标文本。 当前模型容易被水印、时间戳、摄像头编号带偏,因此要明确说明读哪一块字、忽略哪一类字。优先采用标记检测区域的方式排除干扰。
- 计数类任务必须限定范围和口径。 需要写清统计区域、统计对象、遮挡是否算入,以及结果必须输出严格整数。
- 优先使用陈述句和规则句。 在检测和计数任务中,不建议使用问句式提示词。
5. 提示词优化方向
- 不要追求“一套万能 prompt”。 不同任务不要共用相似写法,可能导致任务边界漂移。
- 让 prompt 承担“任务定义”,不是“自然语言描述”。 要固定目标是什么、看哪里、满足条件、排除条件、如何输出。
- 复杂任务统一改成“先判断,再输出”。 特别是抽烟、打电话、跨梯子、未挂安全绳、未穿防护鞋这类任务,不建议直接写成检测目标。
- 【可视化展示】只给明确目标用。 适合安全帽、梯子、灭火器、车辆、道闸、货架这类视觉特征明确的目标;不适合复杂违规行为和细粒度属性任务。
6. 常见错误写法与风险
- 用问句代替任务定义。 例如“检测画面中人员是否疲劳”,这类写法会让模型在“回答问题”和“执行检测”之间摇摆。
- 多个条件写成一句话。 这会增加模型漏条件、错抓重点和误报的概率。
- 只写正向条件,不写排除条件。 对手机、抽烟、安全绳、穿戴类任务,容易把相似目标误判为满足。
- 把复杂关系题直接写成检测目标。 这类任务往往能先判断,但直接要求输出框时容易失败。
- 所有任务共用一句模板。 当前不同任务类型对提示词结构的要求并不相同,不能简单套一个统一句式。
7. 推荐的创建流程
- 先定义业务真值。明确什么算满足、什么算不满足、什么情况视为无法判断。
- 再判断任务类型。判断题优先按识别类写;必须输出框、数量或文本时,再考虑检测、计数或文本读取口径。
- 用 “简单任务 / 复杂任务” 判定标准先给任务定级,再决定采用直接检测,还是 “先判断,再输出”。
- 先写最小可用提示词。优先写清主体、条件、排除项和输出要求,不要一开始就堆很多修饰语。
- 用少量告警数据、正常数据快速试写。重点看是否出现误报、漏报和同图不一致。
- 复杂任务先关闭【可视化展示】、【大模型思考过程】。判断稳定后,再决定是否开启。
- 可用【人机交互】模式,测试模型对不同提示词的输出。
回复