Skip to content

AI时代的精准沟通——约束,约束,还是TMD约束

与 AI 对话的本质不是「提问」,而是「编程」。你输入的不是问题,是带约束的指令序列

为什么精准表达如此重要

AI 没有直觉,没有共情,没有「懂的都懂」。它是一台基于概率的续写机器——你给它什么上文,它就续写最匹配的下文。

对 AI 模糊表达 ≈ 对人说「帮我弄一下那个东西」。

对人类的模糊表达AI 的实际理解后果
「优化一下这段代码」可以是性能、可读性、架构...返回随机方向
「写点好的」「好」是主观的、不可量化的返回最平庸的「好」
「你懂的」什么都不懂幻觉产生

精准不是啰嗦,是把需求可计算化

核心方法:结构化指令范式

与 AI 沟通存在一套可复用的表达范式。把它视为一种结构化声明语言

范式一:ROSCE 框架

要素含义必要性
Role角色定位★★★ 必选
Objective目标描述★★★ 必选
Spec格式/风格/约束★★☆ 推荐
Context上下文/背景★★☆ 推荐
Example输入输出示例★☆☆ 按需

示例对比——请求写一个排序函数:

❌ 模糊表达:

写个排序。

✅ 精准表达:

Role: 你是一位注重性能的 JavaScript 工程师。
Objective: 实现一个数组排序函数。
Spec:
  - 函数签名: (arr: number[]) => number[]
  - 空间复杂度 O(1),不修改原数组
  - 使用 TypeScript,导出为 named export
Context: 用于 React 项目中展示排行榜数据,数组长度 ≤ 1000。

ROSCE 的核心思想:用声明式约束取代隐含期待

范式二:约束驱动表达

与其描述「要什么」,不如描述「边界条件」。AI 在约束越明确时表现越好。

约束的三个层次:

层次类型示例
输出约束格式、结构、长度「以 JSON 格式输出」「200 字以内」
过程约束推理路径、中间步骤「先分析问题再给出方案」「分三步回答」
领域约束技术栈、版本、偏好「使用 React 18 + TypeScript」「遵循函数式风格」

约束叠加示例:

Base: 写一篇技术文章

+ 输出约束: 1500 字左右,用 Markdown 格式,包含 3 个代码块
+ 过程约束: 先列出大纲,确认后再展开正文
+ 领域约束: 目标读者是有 2 年经验的开发者,避免基础概念解释
= 精准、可用的输出

范式三:对抗歧义——负面约束

正面描述不够时,用负面约束排除你不想要的东西:

❌ 「写得简洁一点」
✅ 「不要使用形容词堆砌,不要超过 500 字,每段不超过 3 句话」
正面约束(模糊)负面约束(精准)
「幽默一点」「不要使用任何网络流行语」
「专业一点」「不要使用口语表达,不要以『你好』开头」
「创意一点」「不要列举常见方案,不要重复已有案例」

AI 的「排除法」效果往往优于「愿望清单法」。

实战技巧集

1. 开闭原则:开头和结尾最敏感

LLM 对 prompt 首尾的敏感度远高于中间部分。

关键指令放在开头 → 角色+目标
输出格式/约束放在结尾 → 最后一句话定义格式
中间放上下文、例子 → 支持性信息

2. 用 token 思维替代语言思维

AI 读到的是 token,不是词。以下表达在 AI 眼中是完全不同的信号:

人类看来差不多AI token 差异巨大
「你」vs「请」礼貌性 token 权重不同
「试试看」vs「必须」一个是弱约束,一个是强约束
「也许可以」vs「应该」概率分布完全不同

规则:删掉所有「也许」「可能」「试试看」,用「必须」「输出」「给出」。

3. 给 AI 一个「难以拒绝」的角色

角色设置不是装饰,而是激活特定训练数据分布

❌ 「你是一个助手」
✅ 「你是 Linux 内核贡献者,专精内存管理和并发编程,回答时必须引用具体的内核版本和函数名」

角色越具体,激活的知识簇越精准。

4. 思维链不是魔法,是「强制展开中间状态」

❌ 「这个函数的时间复杂度是多少?」
✅ 「分三步分析:
1. 拆解每个循环的迭代次数
2. 标注嵌套关系
3. 计算总时间复杂度」

思维链的本质:不让 AI 跳过中间推理,强制固化推理路径。

5. 分步确认:长任务的防漂移机制

超过 3 个步骤的复杂任务,不要一次性交付:

Step 1: 先列大纲,等待确认
Step 2: 再展开各章节
Step 3: 最后润色统一风格

每步之间由用户确认,避免偏离方向。

常见反模式

反模式问题修正
过度礼貌稀释关键 token 密度去掉「请」「麻烦你」「能帮我…吗」
前置废话首部被低质量 token 占据第一句直接定义角色或目标
一次性扔太多注意力稀释,顾此失彼拆分为多个独立对话或分步指令
用类比代替描述AI 不理解类比直接描述输入输出格式
提前否定自己「不知道你懂不懂这个」这是在浪费 token

进阶:建立个人 Prompt 库

将高频任务模板化,逐步积累:

markdown
## Code Review 模板
Role: 资深前端工程师,专注代码质量和安全性
Objective: 审查以下代码
Spec:
  - 按严重程度分类(阻塞/警告/建议)
  - 每个问题注明所在行、原因、修复建议
  - 输出格式: Markdown 表格
Context: 项目使用 TypeScript + React 18

积累路径:

  1. 记录每次成功的 prompt
  2. 提炼可变部分为模板变量 {topic}, {language}
  3. 使用时填入变量即可
  4. 持续迭代:每次不满意时,不是换说法,而是追加一条约束

总结

与 AI 精准沟通的核心不是「会说话」,而是具备结构化需求描述能力

  • 声明式 > 叙述式:说你要什么、不要什么,不要说故事
  • 约束驱动 > 愿望驱动:给边界,不给方向
  • Token 思维 > 语言思维:考虑每个词的概率贡献,而非语感
  • 迭代约束 > 重复试错:出问题追加约束,而非重新描述

最终目标:把每次与 AI 的对话,视为一次精确的 API 调用。你定义接口,AI 返回结果。

参考资源

Released under the ISC License.