prompt 提示/指令工程


提示工程也叫「指令工程」。

Prompt 就是你发给 ChatGPT 的指令,比如「讲个笑话」、「用 Python 编个贪吃蛇游戏」、「给男/女朋友写封情书」等。

貌似简单,但意义非凡

  • Prompt 是 AGI 时代的「编程语言」
  • Prompt 工程是 AGI 时代的「软件工程」
  • 提示工程师是 AGI 时代的「程序员」
  • 学会提示工程,就像学用鼠标、键盘一样,是 AGI 时代的基本技能

专门的「提示工程师」不会长久,因为每个人都要会「提示工程」。

基于「大模型只会基于概率生成下一个字」这个原理,所以需要知道:

  • 为什么有的指令有效,有的指令无效
  • 为什么同样的指令有时有效,有时无效
  • 怎么提升指令有效的概率

在懂编程的基础上:

  • 知道哪些问题用提示工程解决更高效,哪些用传统编程更高效
  • 能完成和业务系统的对接,把效能发挥到极致

两种目的如下:

  • 获得具体问题的具体结果,比如「我该学 Vue 还是 React?」「PHP 为什么是最好的语言?」
  • 固化一套 Prompt 到程序中,成为系统功能的一部分,比如「每天生成本公司的简报」「AI 客服系统」「基于公司知识库的问答」

前者主要通过 ChatGPT、ChatALL 这样的界面操作。后者就要编程了。 我们更倾向于后者,因为后者更难,掌握后能轻松搞定前者,后者可以成为我们的优势。

找到好的 Prompt 是个持续迭代的过程,需要不断调优。

  • 从人的视角:说清楚自己到底想要什么。
  • 从机器的视角:不是每个细节它都能猜到你的想法,它猜不到的,你需要详细说。
  • 从模型的视角:不是每种说法它都能完美理解,需要尝试和技巧。

prompt 构成如下:

  • 指示: 对任务进行描述
  • 上下文: 给出与任务相关的其它背景信息(尤其在多轮交互中)
  • 例子: 必要时给出举例,学术中称为 「one-shot learning」、「few-shot learning」 或 「in-context learning」;实践证明其对输出正确性有帮助。
  • 输入: 任务的输入信息;在提示词中明确的标识出输入。
  • 输出: 输出的格式描述,以便后继模块自动解析模型的输出结果,比如(JSON、XML)。

业务场景,办理流量包的智能客服。

流量包产品:

名称 流量(G/月) 价格(元/月) 适用人群
经济套餐 10 50 无限制
畅游套餐 100 180 无限制
无限套餐 1000 300 无限制
校园套餐 200 150 在校生

dm

对话流程举例。

dialog

收起

收起

收起

收起

收起

总结:改变习惯,优先用 Prompt 解决问题。

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

收起

1. 用 Prompt 实现 DST 不是唯一选择

  • 优点: 节省开发量
  • 缺点: 调优相对复杂,最好用动态例子

2. 也可以用 Prompt 实现 NLU,用传统方法维护 DST

  • 优点: DST 环节可控性更高
  • 缺点: 需要结合业务 know-how 设计状态更新机制(解冲突)

把刚才的能力串起来,构建一个简单的客服机器人。

收起

提示:以上的例子可以动态添加。

思维链,是大模型涌现出来的一种独特能力。

它是偶然被「发现」(对 OpenAI 的人在训练时没想过会这样)的。有人在提问时以「Let’s think step by step」开头,结果发现 AI 会自动把问题分解成多个步骤,然后逐步解决,使得输出的结果更加准确。

划重点:

  1. 思维链的原理,让AI生成更多相关的内容,构成更丰富的「上文」,从而提高「下文」生成更正确结果的概率
  2. 对涉及计算和逻辑推理的问题,尤为有效
  3. 用好思维链,复杂问题的结果更准确

另一个业务场景:客服质检

任务本质是检查客服与用户的对话是否有不合规的地方。

  • 质检是电信运营商和金融券商大规模使用的一项技术
  • 每个涉及到服务合规的检查点称为一个质检项

我们选一个质检项来演示思维链的作用:

产品信息准确性

当向用户介绍流量套餐产品时,客服人员必须准确提及产品名称、月费价格、月流量总量、适用条件(如有)上述信息缺失一项或多项,或信息与实时不符,都算信息不准确

收起

自洽性原理:

  • 采样多个具有多样性的结果
  • 通过投票选出最终结果

self-consistency

收起

思维树原理:

  • 在思维链的每一步,采样多个分支
  • 拓扑展开成一棵思维树
  • 判断每个分支的任务完成度,以便进行启发式搜索
  • 设计搜索算法
  • 判断叶子节点的任务完成的正确性

tot

业务场景举例:指标解读,项目推荐并说明依据

小明 100 米跑成绩:10.5 秒,1500 米跑成绩:3 分 20 秒,铅球成绩:12 米。他适合参加哪些搏击运动训练。

收起

当时这个漏洞经过测试,称呼必须是「奶奶」才行,目前已经修复。

nainai1
nainai2

收起

收起

收起

可以通过调用 OpenAI 的 Moderation API 来识别用户发送的消息是否违法相关的法律法规,如果出现违规的内容,从而对它进行过滤。

收起

划重点:

  1. 别急着上代码,先尝试用 prompt 解决,往往有四两拨千斤的效果
  2. 想让 AI 做什么,就先给它定义一个最擅长做此事的角色
  3. 用好思维链,让复杂逻辑/计算问题结果更准确
  4. 防御 prompt 攻击非常重要

收起

划重点:Temperature 参数很关键

  • 执行任务用 0,文本生成用 0.7-0.9
  • 无特殊需要,不建议超过 1

如果你在网页端调试 prompt

建议
  • System PromptUser Prompt 组合,写到界面的 Prompt 里
  • 最近几轮对话内容会被自动引用,不需要重复粘贴到新 Prompt 里
  • 如果找到了好的 Prompt,开个新 Chat 再测测,避免历史对话的干扰
  • 用 ChatALL 可以同时看到不同大模型对同一个 Prompt 的回复,方便对比

这里有一段神奇的咒语,让 ChatGPT 帮你写 Prompt。

1. I want you to become my Expert Prompt Creator. Your goal is to help me craft the best possible prompt for my needs. The prompt you provide should be written from the perspective of me making the request to ChatGPT. Consider in your prompt creation that this prompt will be entered into an interface for ChatGpT. The process is as follows:1. You will generate the following sections:

Prompt: {provide the best possible prompt according to my request)

Critique: {provide a concise paragraph on how to improve the prompt. Be very critical in your response}

Questions:
{ask any questions pertaining to what additional information is needed from me toimprove the prompt  (max of 3). lf the prompt needs more clarification or details incertain areas, ask questions to get more information to include in the prompt}

2. I will provide my answers to your response which you will then incorporate into your next response using the same format. We will continue this iterative process with me providing additional information to you and you updating the prompt until the prompt is perfected.Remember, the prompt we are creating should be written from the perspective of me making a request to ChatGPT. Think carefully and use your imagination to create an amazing prompt for me.
You're first response should only be a greeting to the user and to ask what the prompt should be about