ai提问的艺术

提问的艺术

为什么你的提问会影响ai回答的质量?

基础一:很多时候,ai只能根据我们提供的信息回答问题。

基础二:模型一次能处理的token数量有限,称为上下文窗口(context window),系统指令,历史对话和输入输出都会占用它。

(like this)

那么,如果我们不加以考虑地丢出提示词,比如“帮我生成一个论文。”这就会给ai留下数量巨大的猜测数目,占用预测输出的context window;
如果我们给出过于长的提示词,那么就会占用过多的输入空间。

上面两者都导致了一个结果:低质量的提示词占用了过多的context window,导致预留回答的容量被压缩,质量也可能随着被降低。
对于日常的对话,后果可能只是你跟ai多问几句,消耗多一些的时间。但在实际的结合ai开发的领域,这会导致消耗更多的token,花费更多的钱,甚至得到更差的结果。

因此,很有必要学习如何给出提示词。

提示词设计的三原则

概括地讲,他们分别是说清楚、说完整、说到位。

实际地讲,他们也可以是

说清楚——明确任务类型

在生活中,大家或多或少都接触过角色扮演,如何进入相应的角色呢?

通常需要有一个生动的剧本,有着详细的角色描述。

ai提示词也是这样,在你向他提出任务的时候,ai就跟你开始了一场cosplay。提示词就像角色剧本,我们需要说清楚,明确任务类型,使用更加生动的动词,更加详细的描述,这一切的目的都是为了减少ai猜测的空间,让输出更加稳定。

例如,在提示词中使用“解释”,“提取”,“总结”,“比较”,“生成”......这样的动词,能让ai容易进入合适的回答模式。

说完整——给背景、给约束、给格式

明确任务后,要适当的补充任务的背景信息,但注意,不是越多越好,是要补充跟任务直接相关的信息———较多的无关信息反而会分散ai模型的注意力,降低输出的偏差。

这就像打车时要说明目的地、路线和时间要求,说完整使结果更加可控。

说到位——用示例展示期望效果

仅描述任务称为零样本(zero-shot);给出输入-输出示例再完成新任务则称为少样本学习(few-shot learning)。例如

请把以下中文翻译成文言文风格:今天风很大,我们回去吧。

就是零样本

示例1:
现代中文:你今天为什么没有来上学?
文言文:今日何故不至学?
现在请翻译下面这句:
现代中文:我们应该珍惜时间,不要等到老了才后悔。
文言文:

这就是少样本学习。

少样本学习把抽象的要求转变为一种输入与输出的对应关系,它不是告诉“模型答案是什么”,而是告诉模型“你想要什么样的答案”。

示例应该具有代表性而且不宜过多。

系统化框架:CRISPE

如果希望进一步系统地检查提示词是否有遗漏关键信息,可以借助CRISPE这一辅助框架进行检查。

具体地说,框架是这样的:

首先,通过设定ChatGPT的角色(Capacity and Role),使其能够更好地理解问题背景。接着,提供充足的背景信息和上下文(Insight),帮助ChatGPT更好地理解问题。然后,明确地陈述问题或需求(Statement),让ChatGPT知道您期望得到的答案类型。此外,设定回答问题的个性(Personality),如使用特定的语言风格或结构。最后,如果问题较宽泛,可以要求ChatGPT提供多个答案或建议(Experiment),以便用户进行选择。

不必死记这些英文单词对应的意思,更重要的是检查相应内容是否在提示词中得到体现。

结构化推理

面对计算,或者多条件判断、比较一类要求较多的任务,应要求模型给出必要的步骤、关键依据和可检查的结论。事实上,模型的计算能力并不是100%正确,有可能一个9位数乘9位数的乘法运算,多次提问中就可能出现几次错误。

更加实用地说,不是要求模型展示内部思考推理冗余的内部过程,而是要求它给出必要的步骤、并且要求它自我检查。

结构化推理有利于及时发现计算和条件问题,但一些重要的结论还是要依靠人为核验。

deepseek_mermaid_20260929_b31fef

进阶了解

Self-Consistency 与 Tree of Thought

Self-Consistency (自一致性)的核心思想和操作是,让模型独立多次求解同一问题,如果多次答案一致,可以认为结果的可信度较高。

Tree of Thought (思维树)是类似思路在开放规划上四向奔跑的一种方式,它的一种操作是,让模型给出多个可行方案,再让模型依据目的和约束在其中进行比较、选择,最终给出最优方案。

这(ToT)其实有些像启发式搜索,不过终究有别于它。

ToT研究论文

供读者参考。

元提示:让AI帮你改提示词

元提示适合你知道想做什么,但不知道怎么组织提示词的情形。对于这种情形,可以结合上面给出的方法,给与AI提示词工程师的身份,然后要求模型按要求,给出相应的提示词。

这里我想给出一个小小的思路,就是让一个模型(可能比较便宜的)专门用来根据要求给出提示词,再丢给另外一个模型,这样就大大节约了编写提示词的时间和精力。

提示词的迭代

好的提示词应该是改出来的,通常一版提示词是无法满足任务需要的。

对于提示词的迭代,可以采用上面给出的各种方法检查优化。、

这里介绍一种基本思路,就是控制变量。
一次就改动一个位置,方便观察提示词的改变,对输出内容的影响,进而了解提示词的问题出现在哪里,方便进一步迭代。

end....

posted @ 2026-09-15 09:49  zxy1007  阅读(18)  评论(0)    收藏  举报