什么是提示工程?
提示工程也叫【指令工程】。
- Prompt发送给大模型的指令。比如[讲个笑话]、[用Python编个贪吃蛇游戏]、[给男/女朋友写情书]等
- 看起来简单,但上手简单精通难
- [Propmpt]是AGI时代的[编程语言]
- [Propmpt]是AGI时代的[软件工程]
- [提示工程]是AGI时代的[程序员]
- 学会提示工程,就好比学会使用电脑学鼠标、键盘一样,是AGI时代的基本技能
- 提示工程[门槛低,天花板高],所以有人对称prompt为[咒语]
- 但专门的[提示工程师]不会长久,因为每个有都要会[提示工程],AI的进化会让提示工程越来越简单
如果人人都会,那我们应该如何建立优势?
1、我们要懂原理,会把AI当人看,所以知道:
-
为什么有的指令有效,有的指令无效
- 为什么同样的指令有时有效,有时无效
- 怎么提升有效的概率
2、我们懂编程
-
知道哪些问题用提示工程解决更高效,哪些用传统编程更高效
- 能完成和业务系统的对接,把效能发挥到极致
Prompt的典型构成
不要固守[模版]。模版的价值是提醒我们加漏掉什么,而没有必要遵守模板才行。
角色:给AI定义一个最匹配任务的角色。比如:[你是一个软件工程师] [你是一个小学老师]
指示:对任务进行描述
上下文:给出与任务相关的其它背景信息(尤其在多轮交互中)
例子:必要时给出格式描述,以便后继模块自动解析模型的输出结果,比如(JSON\XML)
[定义角色]为什么有效?
-
模型训练者也没想过会这样,完全是大家[把Ai当人看]玩出一个用法
-
实在传得太广,导致现在的大模型训练数据里充满了角色定义,所有更有效了
-
有一篇论文的现象,可以说明为啥[你是一个xxx]特别有效
大模型对prompt开头和结尾的内容更敏感
先定义角色,其实就是在开关把问题域收窄,减少二义性。
- 大模型如何使用长上下文信息?斯坦福大学最新论文证明,你需要将重要的信息放在输入的开始或者结尾处!
- Lost in the Middle: How Language Models Use Long Contexts
对话系统的基本模块和思路
核心思路:
- 把输入的自然语言对话,转成结构化的表示
- 从结构化的表示,生成策略
- 把策略转成自然语言转出