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

最近看了 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./让我们一步步思考!

图片

Tree of Thoughts Prompting

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

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

图片

但是要使用 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)

图片

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 的结果再次检查,得到最终的输出

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

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

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

Few-Shot-Prompt

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

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

图片

这个是一个典型的 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)

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

图片

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

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

总结

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

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/23262.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用pexpect检查SSH上的文件是否存在

使用 pexpect 模块可以在 Python 中执行命令并检查其输出。你可以使用 ssh 命令连接到远程服务器,并执行 ls 命令检查文件是否存在。下面我就列举几个我经常遇到的几个错误并做个详细的解决方案。 1、问题背景 用户需要编写一个 Python 脚本,以检查一个…

python面向过程与初始面向对象编程

让我们穿越到《龙珠》世界,一起揭开 面向对象编程 的神秘面纱吧。 面向过程编程与面向对象编程 天下第一武道会 选手登记 第 22 届天下第一武道会即将召开,各路武术高手齐聚一堂,其中最受瞩目的,当属卡卡罗特(孙悟…

代码随想录训练营Day 51|力扣121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

1.买卖股票的最佳时机 视频讲解&#xff1a;动态规划之 LeetCode&#xff1a;121.买卖股票的最佳时机1_哔哩哔哩_bilibili 代码随想录 代码&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.s…

Golang time CST以及UTC介绍

package main import ( "fmt" "time" ) func main() { fmt.Println(time.Now()) fmt.Println(time.Now().UTC()) //Influxdb采用RFC3339格式确定起止时间&#xff0c;所以必须将格式进行对应转换&#xff0c;将其转换为该格式即可 fmt.Println(time.Now().…

线性数据结构-队列

队列&#xff08;Queue&#xff09;是一种先进先出&#xff08;First In First Out, FIFO&#xff09;的数据结构&#xff0c;它按照元素进入的顺序来处理元素。队列的基本操作包括&#xff1a; enqueue&#xff1a;在队列的末尾添加一个元素。dequeue&#xff1a;移除队列的第…

在 Debian 上使用和配置 SSH 的指南

SSH&#xff08;Secure Shell&#xff09;是用于在不安全网络上安全登录远程计算机和执行命令的协议。本文将详细介绍如何在 Debian 系统上安装、配置和使用 SSH。 1. 安装 SSH 首先&#xff0c;您需要安装 OpenSSH 服务器和客户端&#xff08;也可直接安装服务器端&#xff…

38、Flink 的 WindowAssigner 之 GlobalWindows 示例

1、注意 使用 GlobalWindows 需要自定义 Trigger&#xff0c;否则窗口中的数据不会被计算。 2、代码示例 import org.apache.flink.streaming.api.datastream.DataStreamSource; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org…

我的创作纪念日--我和CSDN一起走过的1825天

机缘 第一次在CSDN写文章&#xff0c;是自己在记录学习Java8新特性中Lambda表达式的内容过程中收获的学习心得。之前也有记录工作和生活中的心得体会、难点的解决办法、bug的排查处理过程等等。一直都用的有道笔记&#xff0c;没有去和大家区分享的想法&#xff0c;是一起的朋…

C++第二十四弹---从零开始模拟STL中的list(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、基本结构 2、基本函数实现 2.1、默认构造函数 2.2、尾插数据 3、迭代器的封装 3.1、迭代器的基本结构 3.2、迭代器重载函数的实现 4、迭…

大家都在用的4款超实用视频剪辑软件,快来码住自用吧!

随着自媒体行业的不断发展&#xff0c;不少小伙伴也逐渐步入了短视频的热潮。对于短视频制作来说&#xff0c;视频剪辑软件的选择非常重要。 如果剪辑软件不够好&#xff0c;整个视频就基本垮掉了。今天就给大家推荐4款好用的视频剪辑软件。 1.牛学长视频剪辑 推荐剪辑新手入门…

win11通过网线分享网络到Ubuntu工控机

1.条件&#xff1a;一个能无线联网的win11&#xff0c;一根网线&#xff0c;一台Ubuntu工控机&#xff0c;并且使用网线连接两者 2.在win11电脑上 2.1 打开控制面板的网络和Internet 2.2 进入网络和共享中心&#xff0c;在左侧进入 更改适配器设置 2.3 在WLAN上右键&#xff0…

如何通过Python SMTP配置示例发附件邮件?

Python SMTP配置的步骤&#xff1f;SMTP服务器的优缺点有哪些&#xff1f; 当我们需要发送包含附件的邮件时&#xff0c;自动化的解决方案显得尤为重要。Python提供了SMTP库&#xff0c;使我们能够轻松配置并发送带有附件的邮件。AokSend将通过一个示例来展示如何操作&#xf…

【数据结构与算法】线索二叉树

文章目录 线索二叉树线索二叉树的结点存储结构 二叉树线索化先序线索化递归实现 中序线索化递归实现 后续线索化递归实现 线索二叉树的遍历先序线索二叉树的遍历中序线索二叉树的遍历后续线索二叉树的遍历 线索二叉树 传统的二叉链表存储二叉树&#xff0c;仅能表示一种父子关…

AIGC会带来失业潮吗?紧紧跟时代第一步,如何学习AIGC

会&#xff0c;但AI淘汰的始终是跟不上时代的人。 现在很多公司都有AI培训&#xff0c;不仅GPT&#xff0c;还有Midjourney、Stable DIffusion等一系列AI工具。 像我们公司虽然今年招的少&#xff0c;但也会对新招的应届生统一进行AI培训。 用任正非先生的话来说就是&#x…

charles抓包工具之---添加vConsole

Charles Rewrite重写(详解&#xff01;必懂系列)-CSDN博客 chales 重写/断点/映射/手机代理/其他主机代理_charles 批量映射-CSDN博客 在 Charles 上添加 rewrite 规则&#xff0c;以便在响应的 <head> 部分添加 vConsole&#xff0c;可以按照以下步骤操作&#xff1a;…

【ARM】PK51-如何添加芯片型号的方法

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 遇到打开工程提示没有该芯片设备提示如何解决。 2、 问题场景 客户发来一个工程文件&#xff0c;打开后软件提示没有发现该芯片设备提示。 图 1 3、软硬件环境 1&#xff09;、软件版本&#xff1a;keil μvision…

弗莱明发现青霉素

1945年&#xff0c;弗莱明因青霉素获诺贝尔医学奖。在弗莱明之前有多人注意到了青霉能抑制细菌的生长&#xff0c;但是他们没有一个人像弗莱明那样做进一步的更深入的研究&#xff0c;更没有一个人像弗莱明那样确定了这个特殊的现象是由于青霉分泌的某种物质所致。所以&#xf…

CAD入门基础

一&#xff0c;新建一个CAD文件 1.新建文件 2.保存为.dwt文件 3.画直线 点击直线图标画直线&#xff0c;选中直线出现高亮&#xff0c;点击左键&#xff0c;出现" 取消 " 就是可以画下一条线段了 " 删除"就可以了删除了。 3、直接删除法 1. 首先&#xf…

Yolov10环境配置+训练自己数据集(Windows10)

1、环境: 1.1硬件环境: 显卡:GTX 1650 Supper cuda:10.2.89_441.22_win10 cudnn:10.2-windows10-x64-v8.0.4.30 需要使用英伟达显卡安装显卡驱动,根据显卡驱动的版本安装cuda和cudnn, 针对NVIDIA显卡,已安装驱动情况下,使用nvidia-smi命令可以非常方便查看显卡类型…

npm如何发布自己的插件包

npm如何发布自己的插件包 1、注册NPM账号&#xff1a; 如果你还没有NPM账号&#xff0c;你需要在https://www.npmjs.com/上注册一个。 2、登录NPM&#xff1a; 在命令行中运行npm adduser&#xff0c;并按照提示输入你的用户名、密码和邮箱。 3、初始化项目&#xff1a; …