Prompt Engineering (提示工程)

151 阅读4分钟

家人们!当AI开始帮我写周报、改代码,甚至还能吐槽老板的“画饼文学”时,我终于悟了——人类和AI的关系,就像在玩一场大型“你画我猜”!而决定AI是青铜还是王者的关键,不是它背后多硬核的算法,而是我们这些玩家投喂的“通关密语”——没错,这就是最近火出圈的Prompt Engineering(提示工程)!掌握这门“人类驯服AI的神秘语言”,你就能让AI秒变懂你小心思的“数字田螺姑娘”,把天马行空的脑洞变成现实。今天咱们就来扒一扒,如何用正确的“咒语”,解锁AI的隐藏技能!

一、什么是提示工程(Prompt Engineering)

Prompt 就是你发给大模型的指令,比如(讲个笑话)、(用Python编个贪吃蛇游戏)、(给男/女朋友写封情书)等。对于在AGI时代来说,学会提示工程就像学用鼠标、键盘一样,是AGI时代的基本技能。提示工程也是{门槛低,天花板高},所以有人戏称prompt为(咒语)。

1.1 提示工程上的优势

1.我们懂原理,所以知道为什么有的指令有效,有的指令无效,怎么提升指令有效的概率。

2.我们懂编程:能知道哪些问题用提示工程解决更高效,哪些用传统编程更高效,能完成和业务系统对接,把效能发挥到极致。

1.2 使用Prompt的两种目的

1.获得具体问题的具体结果,比如(我该学Vue还是React?)

2.固化一套Prompt到程序中,成为系统功能的一部分,比如(每天生成本公司的简报)

1.后者更难,掌握后能轻松搞定前者

2.后者是我们独特的优势

1.3 Prompt调优

找到好的prompt是个持续迭代的过程,需要不断调优。参考训练数据来构造prompt是最好的。不知道训练数据怎么办?

1.看Ta是否主动告诉你。例如已知:OpenAI GPT对Markdown格式友好,Claude 对XML友好。

2.只能不断试了。多一个字少一个字,对生成概率的影响都可能是很大的。尝试是常用方法,确实有运气因素,所以门槛低、天花板高。

高质量prompt核心要点:具体、丰富、少歧义,修炼prompt能力,工夫在平时。

image.png

二、Prompt的典型构成

  • 角色:给AI定义一个最匹配任务的角色,比如:[你是一位软件工程师]、[你是一位小学老师]
  • 指示:对任务进行描述
  • 上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
  • 例子:必要时给出举例,实践证明其对输出正确性有很大帮助
  • 输入:任务的输入信息;在提示词中明确的标识出输入
  • 输出:输出的格式描述,以便后续模块自动解析模型的输出结果,比如(JSON、XML)

2.1 [定义角色]为什么有效?

模型训练者没有想到过会这样,完全是大家把[AI当人看],因为传得太广,导致现在的大模型训练数据里充满了角色定义,所以更有效了。大模型对prompt开头和结尾的内容更敏感。 先定义角色,其实就是在开头把问题域收窄,减少二叉性。

2.2 推荐流量包的智能客服

image.png

2.3 对话系统的基本模块和思路

image.png

image.png

核心思路: 1.把输入的自然语言对话,转成结构化的表示

2.从结构化的表示,生成策略

3.把策略转成自然语言输出

2.4 完善,调优提示词

给例子很常用,效果特别好,改变习惯,优先用Prompt解决问题

用好prompt可以减轻预处理和后处理的工作量和复杂度。一切问题先尝试用prompt解决,往往有四两拨千斤的效果。

2.4.1支持多轮对话DST

在Prompt中加入上下文

image.png

加入指定情况下的回答模板,这样话术更专业

image.png

2.4.2纯用OpenAI API实现完整功能

image.png

把模型生成的回复加入消息历史。很重要,否则下次调用模型时,模型不知道上下文。

3 总结思考

纯OpenAI方案是否会更好?我觉得对于一个预设的产品来说,我们可以预先通过OpenAI给出来的方案,或者OpenAI给出的提示词来对我们所需的产品进行修饰。通过不断地通过页面的产品提示词来对产生的代码和需求进行修改。要做到以下两点,让代码生成更准确

  • 让更多的环节可控
  • 减少prompt长度