当前位置: 首页 > news >正文

Alibaba --- 如何写好 Prompt ?

如何写好 Prompt

提示工程(Prompt Engineering)是一项通过优化提示词(Prompt)和生成策略,从而获得更好的模型返回结果的工程技术。总体而言,其实现逻辑如下:
(注:示例图来自 Cohere 官网)
简单而言,大模型的运行机制是“下一个字词预测”。用户输入的 prompt 即为大模型所获得上下文,大模型将根据用户的输入进行续写,返回结果。因此,输入的 prompt 的质量将极大地影响模型的返回结果的质量和对用户需求的满足程度,总的原则是“用户表达的需求越清晰,模型更有可能返回更高质量的结 果”。

一、Prompt 的类别

用户的 prompt 难以简单归类,需求丰富多样,总的而言,我们将用户需求将 prompt 分为如下几个大类:
  • 信息查询:用户通过咨询大模型,通过 QA 获得所需信息,比如:“冰岛的首都是哪里?”
  • 指令:用户通过下达指令,希望大模型执行特定任务。比如:“帮我写一段快速排序的 C++代码。”
  • 包含上下文的 prompt:这类 prompt 一般是用户给出相关背景信息,需要模型返回相关问题答案、建议等,比如:“NBA 最新战报:最新的比赛结果显示, 在东部决赛中热火目前大比分 3:1 领先凯尔特人,而西部决赛则已结束,掘金 4:0 战胜湖人获得西部冠军。根据以上信息,你认为哪只球队最有可能夺得 NBA 总冠军?”
  • 咨询意见和建议:用户向模型针对特定话题咨询意见和建议,或者咨询方案等,比如:“我想创业开一家 AI 设计公司,请给我一些开公司的建议。”
  • 比较类:用户给出不同选项,让模型选出更好的并给出理由。比如: “Tensorflow 和 Pytorch 各有什么优劣势?”
  • 角色扮演:这类 prompt 覆盖范围非常广,主要是用户将模型当作一个 Copilot,希望模型能灵活扮演不同角色完成不同的需求。比如:“假如你是猫娘,你总是用可爱的话语回复我。下面我将开始跟你对话……”
  • ……
  • 当然用户还有非常多的需求,在此就不一一列出。

二、prompt 组成组件

(一) 指令
指令是最常用的提示组件,主要功能是向模型说明要执行的操作。虽然概念简单,但是实践中仍然比较复杂,下面是简单和复杂的一些指令例子。
指令
类型
prompt
简单指令
简要介绍一下阿里巴巴。
复杂指令
简要介绍一下阿里巴巴,包含以下内容:
阿里巴巴的创始人姓名
阿里巴巴的使命
阿里巴巴的积极的前景
(二) 主要内容
主要内容是指模型正在处理的文本内容。主要内容通常与指令一起使用。下面会从翻译,摘要等场景来示例:
(三) 示例样本
好的 prompt 也经常包含一些示例样本(单样本或者少样本)学习,指的是需要加入一些示例的输入和输出对。
通过少样本学习,模型从猜测应该如何生成,而变得清楚的学习了按照示例生成,充分的演示了模型的能力,不需要通过专门的训练,通过少样本学习,也可以生成正确的答案。
(四) 明确的提示
充当模型输出的快速启动,帮助模型固定所需要的输出。可以作为模型生成的前缀,也可以引导模型一步一步的按照要求思考并给出答案

三、写好 Prompt 的原则

最核心的写一条好 prompt 的原则就是尽可能清晰、明确地表达你的需求。细分下来,具体原则包括:
  • 清晰:足够清晰明确地说明你希望模型为你返回什么,最后更加细致地说明需求,避免模糊表达。
  • 提供上下文和例子:给出较为充分的上下文信息,让模型更好地理解相关背景。如果能够提供示例,模型能表现更好(类似传统 LLM 中的 in-context learning)
  • 设定边界:说明你希望模型回答的范围,尽量减少模型生成的幻觉内容。
  • 细分需求:也许你的需求实际上是一个复杂需求,比如“帮我写一篇关于 xx 的论文”,你可以进一步细分需求,如“[背景信息]请帮我写提纲”、“[背景信息]请帮我写简介部分”、……
  • 迭代优化:很多时候我们可能得到令人沮丧的结果,不要灰心,建议你多尝试修改措辞,激励模型生成更好的答案,或者直接点击“重新生成”也许也能获得惊喜。
  • 给出选项并要求模型解释:模型不一定因为能做出正确选择,但模型可以根据候选项做出相比直接从头生成更好的结果,同时模型还会给出它的理由,用户可以通过理由判断内容的合理性。
  • 激励模型反思和给出思路:可以在 prompt 中用一些措辞激励模型给出理由,这样有助于我们更好地分析模型生成结果,同时,思维过程的生成,也有助于其生成更高质量的结果,参考思维链相关技术。
  • 给容错空间:如模型无法完成指定的任务,给模型提供一个备用路径,比如针对文本提问,可以加入如果答案不存在,则回复“无答案”。

四、好 Prompt 的典型框架

优质的 prompt 千变万化,但遵循上述原则,我们总结出一个比较实用的框架, 可以帮助用户更高概率获得更高质量的模型生成结果。设计 prompt 的时候,建议包含如下内容:
  • 身份:你希望大模型扮演什么角色,来解决你当前的问题。大模型具有较强的角色扮演能力,相比直接回答往往表现更好。
  • 指令:明确说明你希望大模型做什么事情,不要含糊其辞。
  • 上下文:如果可能,提供尽可能丰富的上下文信息。
  • 原因:详细解释你希望模型做这件事情的原因、动机、希望的结果等,这样大模型能更好地理解你的想法,执行需求。

五、What's Next

总之,提示工程是一门新兴学科,它相对来说要求用户反复尝试和练习,但它也没有那么难。它更像是一门“如何说话”的艺术,多多练习即可。

相关文章:

Alibaba --- 如何写好 Prompt ?

如何写好 Prompt 提示工程(Prompt Engineering)是一项通过优化提示词(Prompt)和生成策略,从而获得更好的模型返回结果的工程技术。总体而言,其实现逻辑如下: (注:示例图…...

用html写一个雨的特效

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>雨特效</title><link rel"stylesheet" href"./style.css"> </head> <body> <div id"wrap-textu…...

前端 接口返回来的照片太大 加载慢如何解决

现象 解决 1. 添加图片懒加载 背景图懒加载 对背景图懒加载做的解释 和图片懒加载不同&#xff0c;背景图懒加载需要使用 v-lazy:background-image&#xff0c;值设置为背景图片的地址&#xff0c;需要注意的是必须声明容器高度。 <div v-for"img in imageList&quo…...

003 传参

文章目录 传参http 状态码传参方式&#xff08;1&#xff09;URL请求参数 key 与 方法中的形参名一致&#xff08;2&#xff09;URL请求参数 key与RequestParam("id") 中的别名一致&#xff08;3&#xff09; 形参是POJO类&#xff0c;URL 参数 key 与pojo类的 set方…...

QT写Windows按键输出(外挂)

一、前言 玩游戏的时候遇到些枯燥无味反反复复的按鼠标键盘的情况时&#xff0c;就想写个外挂自动释放。刚好在学qt所以试验了下QT能不能对外输出按键与鼠标。 二、思路 qt中的按键鼠标全是输入&#xff0c;没有直接对外输出键盘鼠标指令的类&#xff0c;但是我们换个思路&…...

Stable Diffusion之文生图模型训练

1、数据准备 提前准备好一组相关的照片。 在线的图片处理网站 BIRME - Bulk Image Resizing Made Easy 2.0 (Online & Free) 将图片转成统一大小&#xff0c;支持批量处理&#xff0c;效率高 2、生成提示词 进入stable diffusion webui页面 旧版直接使用 train/proproc…...

SpringBoot整合支付宝沙箱支付

环境说明&#xff1a;SpringBoot3.0.2 支付宝沙箱地址&#xff1a;沙箱地址 获取配置信息 因支付需要回调地址&#xff0c;回调地址必须是公网&#xff0c;如果有公网的话&#xff0c;那直接在下面配置文件填写自己的公网&#xff0c;没有的话&#xff0c;就需要我们借助第三…...

探索进程控制第一弹(进程终止、进程等待)

文章目录 进程创建初识fork函数fork函数返回值fork常规用法fork调用失败的原因 写时拷贝进程终止进程终止是在做什么&#xff1f;进程终止的情况代码跑完&#xff0c;结果正确/不正确代码异常终止 如何终止 进程等待概述进程等待方法wait方法waitpid 进程创建 初识fork函数 在…...

在mac环境下使用shell脚本实现tree命令

文章目录 使用ls实现tree使用find实现tree 使用ls实现tree 实现思路 使用ls -F 打印文件类型&#xff0c;如果是目录后面跟/&#xff0c;如果是可执行文件后面跟*&#xff1b;使用grep -v /$ 筛选文件排除目录&#xff0c;-v为反向筛选&#xff1b;使用grep /$ 仅筛选目录&am…...

递归时间复杂度分析方法:Master 定理

编写算法时&#xff0c;可能因为对自己代码的复杂度的不清晰而导致错失良机&#xff0c;对于普通的递推或者说循环的代码&#xff0c;仅用简单的调和级数或者等差数列和等比数列即可分析&#xff0c;但是对于递归的代码&#xff0c;简单的递归树法并不方便&#xff0c;理解并记…...

实例名不规范导致mds创建失败

概述 在部署ceph集群时&#xff0c;规划主机名、关闭防火墙、配置免密、关闭selinux&#xff0c;配置hosts文件这几步同样重要&#xff0c;都是初期部署一次麻烦&#xff0c;方便后续运维的动作。遇到过很多前期稀里糊涂部署&#xff0c;后续运维和配置时候各种坑。 近期遇到…...

OpenGL中的纹理过滤GL_NEAREST和GL_LINEAR

一、GL_NEAREST&#xff08;最近邻插值&#xff09; 1.1 原理 当需要从纹理中采样颜色时&#xff0c;GL_NEAREST模式会选择离采样点最近的纹理像素&#xff08;通常是最接近采样点的纹理元素的中心&#xff09;&#xff0c;并直接使用该像素的颜色值作为输出。这种模式不进行任…...

vue 性能优化

data 层级不要太深 data 层级太深会增加响应式监听的计算&#xff0c;导致页面初次渲染时卡顿。 合理使用 v-show 和 v-if 频繁切换时&#xff0c;使用 v-show无需频繁切换时&#xff0c;使用 v-if 合理使用 computed computed 有缓存&#xff0c;data 不变时不会重新计算&…...

互联网大厂ssp面经(操作系统:part1)

1. 什么是进程和线程&#xff1f;它们之间有什么区别&#xff1f; a. 进程是操作系统中运行的一个程序实例。它拥有独立的地址空间和资源&#xff0c;可以独立执行。 b. 线程是进程内的一个执行单元&#xff0c;一个进程可以包含多个线程。 c. 线程共享进程的资源&#xff0c;…...

Android Activity 启动涉及几个进程

Zygote进程: Zygote进程在Android系统启动时被初始创建&#xff0c;并且初始化了虚拟机&#xff08;Dalvik或ART&#xff09;&#xff0c;预加载了Android系统的核心类库。所有的Android应用进程都是通过fork()从Zygote进程派生出来的&#xff0c;这允许应用快速启动&#xff0…...

说说你对链表的理解?常见的操作有哪些?

一、是什么 链表&#xff08;Linked List&#xff09;是一种物理存储单元上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的&#xff0c;由一系列结点&#xff08;链表中每一个元素称为结点&#xff09;组成 每个结点包括两个部分&…...

每天五分钟深度学习:逻辑回归算法的损失函数和代价函数是什么?

本文重点 前面已经学习了逻辑回归的假设函数,训练出模型的关键就是学习出参数w和b,要想学习出这两个参数,此时需要最小化逻辑回归的代价函数才可以训练出w和b。那么本节课我们将学习逻辑回归算法的代价函数是什么? 为什么不能平方差损失函数 线性回归的代价函数我们使用…...

llama-factory SFT系列教程 (二),大模型在自定义数据集 lora 训练与部署

文章目录 简介支持的模型列表2. 添加自定义数据集3. lora 微调4. 大模型 lora 权重&#xff0c;部署问题 参考资料 简介 文章列表&#xff1a; llama-factory SFT系列教程 (一)&#xff0c;大模型 API 部署与使用llama-factory SFT系列教程 (二)&#xff0c;大模型在自定义数…...

C语言游戏实战(11):贪吃蛇大作战(多人对战)

成果展示&#xff1a; 贪吃蛇&#xff08;多人对战&#xff09; 前言&#xff1a; 这款贪吃蛇大作战是一款多人游戏&#xff0c;玩家需要控制一条蛇在地图上移动&#xff0c;吞噬其他蛇或者食物来增大自己的蛇身长度和宽度。本游戏使用C语言和easyx图形库编写&#xff0c;旨在…...

腾讯测试岗位的面试经历与经验分享【一面、二面与三面】

腾讯两个月的实习一转眼就结束了,回想起当时面试的经过,感觉自己是跌跌撞撞就这么过了,多少有点侥幸.马上腾讯又要来校招了,对于有意愿想投腾讯测试岗位的同学们,写了一些那时候面试的经历和自己的想法,算不上经验&#xff0c;仅供参考吧! 一面 — —技术基础&#xff0c;全面…...

手机移动端网卡信息获取原理分析

有些场景我们需要获取当前手机上的网卡信息&#xff08;如双卡双待、Wifi等&#xff09;。本文准备研究一下这块的原理&#xff0c;以便更好的掌握相关技术原理。 1、底层系统接口 getifaddrs 使用 getifaddrs 接口可以达到我们的目的&#xff0c;该接口会返回本地所有网卡的信…...

无人新零售引领的创新浪潮

无人新零售引领的创新浪潮 在数字化时代加速演进的背景下&#xff0c;无人新零售作为商业领域的一股新兴力量&#xff0c;正以其独特的高效性和便捷性重塑着传统的购物模式&#xff0c;开辟了一条充满创新潜力的发展道路。 依托人脸识别、物联网等尖端技术&#xff0c;无人新…...

SD-WAN提升企业网络体验

在现代企业中&#xff0c;网络体验已成为提升工作效率与业务质量的关键因素。SD-WAN技术的出现&#xff0c;以其独特的优势&#xff0c;为企业提供了优化网络连接、加速数据传输、提升服务质量和应用访问体验&#xff0c;以及增强网络稳定性的解决方案。接下来&#xff0c;我们…...

Docker搭建Let‘s Encrypt

Let’s Encrypt是一个免费、开放和自动化的证书颁发机构&#xff08;CA&#xff09;&#xff0c;它提供了一种简单、无需重复的机制来获取和更新SSL/TLS证书。Let’s Encrypt Docker镜像允许用户在容器化环境中轻松部署和使用Let’s Encrypt的服务。 主要功能包括&#xff1a;…...

单链表讲解

一.链表的概念以及结构 链表是一种物理结构上不连续&#xff0c;逻辑结构上连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 链表的结构与火车是类似的&#xff0c;一节一节的&#xff0c;数据就像乘客一样在车厢中一样。 与顺序表不同的…...

DFS算法系列 回溯

DFS算法系列-回溯 文章目录 DFS算法系列-回溯1. 算法介绍2. 算法应用2.1 全排列2.2 组合2.3 子集 3. 总结 1. 算法介绍 回溯算法是一种经典的递归算法&#xff0c;通常被用来解决排列问题、组合问题和搜索问题 基本思想 从一个初始状态开始&#xff0c;按一定的规则向前搜索&…...

Linux C应用编程:MQTT物联网

1 MQTT通信协议 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传 输&#xff09;是一种基于客户端-服务端架构的消息传输协议&#xff0c;如今&#xff0c;MQTT 成为了最受欢迎的物联网协议&#xff0c;已广泛应用于车联网、智能家居、即时聊…...

企业常用Linux文件命令相关知识+小案例

远程连接工具无法连接VMWARE&#xff1a; 如果发现连接工具有时连不上&#xff0c;ip存在&#xff0c;这时候我们查看网络编辑器&#xff0c;更多配置&#xff0c;看vnet8是不是10段&#xff0c;nat设置是否是正确的&#xff1f; 软件重启一下虚机还原一下网络编辑器 查看文件…...

Istio介绍

1.什么是Istio Istio是一个开源的服务网格&#xff08;Service Mesh&#xff09;框架&#xff0c;它提供了一种简单的方式来为部署在Kubernetes等容器编排平台上的微服务应用添加网络功能。Istio的核心功能包括&#xff1a; 服务治理&#xff1a;Istio能够帮助管理服务之间的…...

代码随想录算法训练营第四十七天|leetcode115、392题

一、leetcode第392题 本题要求判断s是否为t的子序列&#xff0c;因此设置dp数组&#xff0c;dp[i][j]的含义是下标为i-1的子串与下标为j-1的子串相同字符的个数&#xff0c;可得递推公式是通过s[i-1]和t[j-1]是否相等区分。 具体代码如下&#xff1a; class Solution { publ…...

日照网站建设官方网站/百度人工

1.首先确定要计算时间的时区&#xff0c;jdk8支持&#xff0c;根据时区ID来判断是否处于夏令时。 2.根据要判断时区的id和对应的时间&#xff0c;即可判断出是否处于夏令时。 public static boolean currentTimeIsDaylightTime(long time) { Calendar calendar Calendar.ge…...

北京网站建设开发专业公司/百度站内搜索代码

在这个Java Challenger中&#xff0c;您将学习equals()和hashcode()结合如何使Java程序中的对象比较高效而又容易。 简而言之&#xff0c;这些方法可以共同验证两个对象是否具有相同的值。 如果没有equals()和hashcode()我们将不得不创建非常大的“ if ”比较&#xff0c;以比…...

有没有专门做游戏辅助的网站/网络营销主要干什么

论文与代码论文地址&#xff1a;https://ieeexplore.ieee.org/document/9905640/代码地址&#xff1a;未开源背景与动机作者认为阻碍航拍场景目标检测发展的原因主要有以下两个&#xff1a;航拍图像中存在大量困难目标&#xff0c;文中作者把困难目标总结为小目标和遮挡的目标。…...

安徽建设相关网站/互联网优化

解决办法&#xff1a;换上usb接口&#xff0c;舍弃esata, 重新上电&#xff0c;就能识别了 转载于:https://www.cnblogs.com/norsd/archive/2012/03/12/6359474.html...

陕西旭泽建设有限公司网站/成都网站优化排名推广

本文转自&#xff1a;http://www.cnblogs.com/yinzixin/archive/2012/12/21/2827356.html Knockoutjs是一个JavaScript实现的MVVM框架。主要有如下几个功能&#xff1a; 1. Declarative bindings 2. Observables and dependency tracking 3. Templating 它对于分离前台的业务逻…...

怀化找工作网站/网站seo策划方案

第一招&#xff1a;蛇打七寸&#xff1a;定位瓶颈首先&#xff0c;第一步是定位瓶颈。举个简单的栗子&#xff0c;一个函数可以从1秒优化到到0.9秒&#xff0c;另一个函数可以从1分钟优化到30秒&#xff0c;如果要花的代价相同&#xff0c;而且时间限制只能搞定一个&#xff0c…...