如何写好一个prompt:骑大象的艺术

如何写好一个prompt:骑大象的艺术

最近写了几个prompt,收到了挺不错的反馈,所以想分享一下写prompt的经验和理解。

步骤

1. 明确目标

在写一个prompt之前,首先需要知道自己想要什么。

这个prompt适用场景是什么?它要解决什么问题?它的输入是什么?输出是什么?它属于哪种类型?

可以自己先问自己这些问题,然后去思考和回答。这些问题的答案可以不是那么精确,但是需要有一定的方向。

2. 拆解步骤

一般来讲,一个prompt可以拆解为几个步骤。

  1. 输入,需要明确输入的大致内容是什么,然后告诉AI。

  2. 处理,这一步比较复杂,下面详细说

  3. 输出,需要明确输出的内容和格式,比如是需要一个markdown表格,还是一段文字,还是一张svg。

处理

  1. 分析

首先需要分析输入的内容,然后拆解成几个固定的部分。

  1. 预处理

用户使用的大部分是自然语言,难保出现一些信息缺失和表述的不同,所以需要先把这些补全和统一。这样接下来的生成才能更准确更一致。

  1. 配置生成和提取

假如是生成svg,那么可能用户会输入一些配置,比如抽象的:风格,类型。也可能是具体的:颜色,尺寸。也可能用户没有输入任何配置,那么就需要根据前面提取出来的信息,生成合适的配置。

  1. 生成

通过前面的分析,预处理,配置生成,AI就能生成比较稳定且符合要求的内容了。

  1. 检查

(这一步尚待验证有效性)最后需要检查生成的内容是否符合要求,如果不符合,需要返回前面的步骤重新生成。

3. 增加足够多的细节

通过上面的步骤,应该已经有了一份prompt的雏形了。

那么接下来,把能够想象到的所有的细节,全部增加到prompt中。

4. 反复调试和验证

prompt如同炼丹,充满了玄学。所以反复的调试和验证必不可少。

整体的思路是“减”的思路。

因为前面已经填充了足够多的细节,所以这一步需要做的是,把一些多余的细节减掉。

千万要记住,并不是细节越多就越好,很多时候,细节是起到了画蛇添足的作用。

这一步需要反复的进行,可以不断的返回到前面几个步骤,反复的调整和优化。知道最终能够相对稳定的得到自己满意的结果。

5. 借助ai优化

这一步堪称画龙点睛,不要小瞧AI本身的理解能力。在写完prompt之后,丢给AI,让它给你做一次优化,往往会有意想不到的效果。

一些感悟

创作prompt,说白了就是混沌和精确之间平衡的艺术。

如同骑大象,你需要给与大象一些清晰的指令,否则不知道被大象带去哪里。但同时,指令又不能过于精确和细致,否则大象会束手束脚,反而不知道如何前行了。

比如,你需要大象跨过一道沟,你只需要说:跨过这道沟,然后大象就能自己跨过去。你不需要告诉大象,是否需要先左脚迈过沟,还是右脚迈过沟,还是直接跳过沟。反而,如果你真的这样去指示了,只会起到相反的效果,大象会无所适从,它的行动会变形。

如果你想去一座山峰,那么你需要更多的指令,而不是简单的告诉大象:去山峰。你需要告诉大象,上山时要注意什么,下山时要注意什么,遇到荆棘丛要注意什么,遇到河流要注意什么。

总得来说,你需要给与ai的更多的是有效的引导,而不是精确的指令。需要给与AI一些自行决定的空间,但是又要确保AI不会跑偏。

至于这中间的度如何把握,就需要结合AI本身的能力,然后在实践中反复的调试和优化了。

609 个赞

感谢佬的分享

10 个赞

感觉被你玩得炉火纯青了

6 个赞

太强了!大佬!

13 个赞

感谢佬的分享

6 个赞

先赞后看,码字辛苦!

2 个赞

可以的,一阵见血

5 个赞

最后一张图也是Claude生成的吗

4 个赞

感谢大佬分享

4 个赞

感谢大佬分享

5 个赞

我觉得最好的办法就是根据自己的需求反复调试

4 个赞

一种自然语言结构化的过程,感觉还是得在语义指令和编程结构化之间取得平衡

6 个赞

看了以后整体感觉就是介于编程和自然语言之间的步骤

3 个赞

反复调试是另一种场景了,比如cursor,给足上下文和RAG,模型最后会理解你在问什么,但是从经济考虑,一次性回复即完成也是一种场景

2 个赞

特别是编写把api放进业务流程的应用,要求一次性得到期待结果也是很有必要的

7 个赞

我是说对prompt反复调试,最后形成适合自己的一次就可以得到满意回复的prompt

17 个赞

那确实,这种prompt engineering很难有非常确定的范式

5 个赞

收藏学习一下,赞

2 个赞

把技巧方法丢给 LLM,让它参考自动生成提示 :smile:

3 个赞

是的,就是用的那个可视化prompt生成的

1 个赞