想了解Prompt 技术?看这篇就够了!

发布于 2024-4-30 10:23
浏览
0收藏

最近看了 Meta-Prompt,发现 Prompt 的技术已经发展了几代了。真的要好好梳理一下了。首先是官方有 一个自己的 Prompt engineer , 这个是一定要认真学习的。

​https://platform.openai.com/docs/guides/prompt-engineering​

官方建议:

  • 写作清晰的指令
  • 要在查询里提供足够的相关信息
  • 要求模型有一个角色
  • 用截止符清晰的区分输入的不同部分
  • 指定不同的步骤来完成任务
  • 提供样例
  • 指定的输出长度
  • 提供参考资料
  • 指导模型用参考资料回答问题
  • 指导模型用参考资料的条件回答问题
  • 分割复杂任务到简单子任务
  • 在查询里用意图来分类相关的指令
  • 如果对话太长,就总结或者过滤一下以前的对话
  • 分段总结长文本,并通过递归得到结果
  • 让模型有时间去“思考”
  • 指导模型得到一个解决方案,优先于得到个结果。
  • 通过内部或者一系列的查询来隐藏模型的推理过程
  • 重新问一下,如果它忘记了之前的事
  • 使用外部工具
  • 通过嵌入查询得到更有效的知识获取
  • 通过执行外部 API 的代码得到更精确的结果
  • 让这个模型访问 特定的功能
  • 系统的测试变化 -通过金标准来评估输出的结果


举些例子吧:


坏的:怎么在 Excel 中加和数字。


好的:怎么在 Excel 中做一行数字的和的自动加法,所有的和的结果都自动显示在 S 列。

指定角色(通常要用 API)


系统Prompt:当我请求帮助写一些东西时,你会回复一份文档,其中每个段落至少包含一个笑话或有趣的评论。


用户Prompt:给我的文具供应商写一封感谢信,感谢他们在短时间内准时交货。这使我们能够交付一份重要的订单。


指定例子

系统:以一致的风格回答。
用户:教我耐心。
助手:河流冲刷出最深的山谷,发源于温和的泉水;最伟大的交响乐源自一个音符;最复杂的挂毯都是从一根单独的线开始的。
用户:教我有关海洋的知识。

真的 Prompt 技术与研究

前面的是官方的实践指南,但是接下来的可都是真实的论文总结出来有用的技术。

不过所有的技术都会过时!

Zero-Shot-Prompt

从我看到的资料来讲,Zero-Shot-Prompt 技术大概发展是这样的

  • CoT:Chain of Thought Prompting
  • Tree of Thoughts Prompt
  • Graph Prompt
  • Meta-Prompt

Chain of Thought Prompting

这个东西的定义很好玩儿,通过 CoT的 Prompt 来指导 LLM 通过有逻辑的,一步步的推理过程来完成复杂任务。


但是怎么搞呢?想办法让模型输出一系列的步骤或者思考结点,再最后得出结论的输出。


参考:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(https://arxiv.org/abs/2201.11903)


怎么完成这样的 Prompt 呢?通常是在你的 Prompt 前面加上下面的这样一句话:Let's think step by step./让我们一步步思考!

想了解Prompt 技术?看这篇就够了!-AI.x社区

Tree of Thoughts Prompting

参考:Tree of Thoughts: Deliberate Problem Solving with Large Language Models(https://arxiv.org/abs/2305.10601)


这个图表达的特别好:可以简单的认为:如果一个复杂的问题,可以分解成多步,而每一步都有多个选择,那把它们都列出来,在每个步骤里选择最好的就是 ToT 的核心思想!

想了解Prompt 技术?看这篇就够了!-AI.x社区

但是要使用 ToT,可能麻烦一些,它要把每一个中间步骤都存下来,用于接下一来的分析 ,所以是要会一些写代码的技巧的。


GitHub - princeton-nlp/tree-of-thought-llm: [NeurIPS 2023] Tree of Thoughts: Deliberate Problem Solving with Large Language Models。(https://github.com/princeton-nlp/tree-of-thought-llm)

Graph Prompt

参考:GraphPrompt: Unifying Pre-Training and Downstream Tasks for Graph Neural Networks (https://arxiv.org/abs/2302.08043)


在神经网络中,Graph 一直是一类比较特殊的存在,因为它们在真实世界中广泛存在,但是以神经网络的处理中又永远不是一份规范数据。所以怎么处理它就要一直用 Graph 来解释、处理它,甚至于简单的 Prompt 也不得不发展出了 Graph Prompt 这样一个概念。

但是你说它真的日常中能用吗?有点麻烦,通常是要定义好 点、边的关系,再搞 Prompt 。大部分都不会用,不过你有兴趣,可以看看代码 :


GitHub - Starlien95/GraphPrompt: GraphPrompt: Unifying Pre-Training and Downstream Tasks for Graph Neural Networks。(https://github.com/Starlien95/GraphPrompt)

想了解Prompt 技术?看这篇就够了!-AI.x社区

Meta Prompt

参考:https://zhuanlan.zhihu.com/p/680981189 &Meta-Prompting: Enhancing Language Models with Task-Agnostic Scaffolding(https://arxiv.org/abs/2401.12954)


这是一个导入了 Agent 概念的 Prompt 技术。


论文中举的例子如下:


首先设置一个系统级的 Meta-Prompt 再输入正常的 Prompt 会输出 一个 Prompt 的交互结果,这个结果做为 Prompt 输入到 LLM 中 基于这个Prompt 的结果再次检查 Meta-Prompt 会输出检查对应的 Prompt,这个结果结果做为 Prompt 输入到 LLM 中 基于这个 Prompt 的结果再次检查,得到最终的输出

想了解Prompt 技术?看这篇就够了!-AI.x社区

流程上就是 系统级的 Meta-Prompt,

  • 输入 Prompt,得到一个校准过的 Prompt,得到输出
  • 输入确认 Prompt,得到一个校准过的 Prompt,得到输出
  • 输入最终确认 Prompt,得到输出


实际上在我看来这样的结果就是像最早说的,构建两级专家,一级专家用于校准特定领域专家,然后对输出做了两次校准后得到最后的结果。

Few-Shot-Prompt

这个与 Zero-Shot-Prompt 不同的就是你要在你的 Prompt 里提供几个示例,这样能更容易得到与示例类似的结果。


通常 Few-Shot-Prompt 会得到更好的结果,因为很简单,照猫画虎肯定是能得到一个类似的东西的。你提供了什么,一定能得到自己想要的什么。

想了解Prompt 技术?看这篇就够了!-AI.x社区

这个是一个典型的 Few-Shot-Prompt 的方法

  • Self-consistency with CoT (CoT-SC)
  • Generated Knowledge Prompting for Commonsense Reasoning

Self-consistency with CoT (CoT-SC)


这是完全在 CoT 上面发展出来的技巧,但是更好用一些。

Self-Consistency Improves Chain of Thought Reasoning in Language Models(https://arxiv.org/abs/2203.11171)


设我们有一个简单的数学问题:一个农场有鸡和兔子,总共有35个头和94只脚,问鸡和兔子各有多少只?

使用"Chain of Thought"方法,我们可以这样推理:

  • 问题分解:首先,我们知道每只鸡有2只脚,每只兔子有4只脚。
  • 建立方程:设鸡的数量为C,兔子的数量为R,则有C + R = 35(头的总数)和2C + 4R = 94(脚的总数)。
  • 求解方程:我们可以从第一个方程中解出C = 35 - R,然后将其代入第二个方程中,求得R的值,再求得C的值。


在这个过程中,"Self-consistency"确保了我们在每一步的逻辑推理都是基于前一步的结果,并且所有的假设(如每只鸡有2只脚,每只兔子有4只脚)都是一致的。


所以它是分成三部分的:

(1) 使用 (CoT) prompt;

(2) 把一次生成的结果,用 CoT生成多个可以多个不同的路径。

(3) 合并一致性最好的路径,得到结果。

Generated Knowledge Prompting for Commonsense Reasoning

参考:Self-Consistency Improves Chain of Thought Reasoning in Language Models(https://arxiv.org/pdf/2110.08387)


这个方法也是,通过几个示例,让推理更有事实依据。

想了解Prompt 技术?看这篇就够了!-AI.x社区

好像可以用这个例子解释一下:


"考虑到冬天的低温环境,描述呼出气体时会发生什么。基于你对前面的气体的解释,请解释为什么在冬天人们会看到他们的呼吸在空气中变成白色。"

总结

如果用现在的最好的 LLM 的原理解释,信息压缩来看,Prompt 有两方面的作用。一:圈定高维信息的空间范围,你能用的最好的圈定方式就决定了你获得的信息有多精确,或者多具有想象力。二:圈定了高维信息到低维空间的表达能力,你指定的道路越准确,它表达得越好。


本文转自 AI生成未来 ,作者:亚东


原文链接:​​https://mp.weixin.qq.com/s/o9qLq2BwFJt9_fEJpRLo7g​

标签
收藏
回复
举报
回复
相关推荐