怎样写好提示词(Prompt) 一

news2024/9/23 3:23:32

提示工程是一门新兴的学科,专注于以最佳实践构建LLM的最佳输入,从而尽可能以程序化方式生成目标输出。AI工程师必须知道如何与AI进行交互,以获取可用于应用程序的有利结果。此外,AI工程师还必须知道如何正确提问和编写高质量的提示词。简而言之,让大模型知道我们在说什么,知道我们想干什么,知道我们要得到一个什么结果。那么我们该怎么来写呢?

相较于问大模型1+1这样简单的问题,当我们希望大模型能够处理复杂的提问时,我们需要通过提示词告诉大模型,嘿,你该这样做!

  1. 三明治结构(适用于一般性提问)

    所谓的三明治结构,只是我个人的说法,指的是提示词里面会有三大结构:角色、上下文、任务

    下面我用一段prompt来展示(以kimi为例):

    在这里插入图片描述

    从上图可以看到,我在提问的时候,上下文其实是最重要的,因为只有上下文写的足够详细,大模型才能弄清楚提问者的想法,从而回答出有价值的回答。当然并不是说其他三部分不够重要,只是相对来说,上下文这一部分需要花的心思最多,比如我除了说我体重有点超标,我还可以提供一些我身体其他的指标,比如最近是否有足够的睡眠,来帮助大模型了解我的身体现状,从而回答出更科学的建议。

    相较于上下文而言,任务就不用那么复杂了,它一条规则,那就是越明确越具体越好,你应该提供足够的任务信息,并在提示词中使用合适的短语来引导模型给出你所期望的结果。看起来我们好像要提供足够多的信息,才能让大模型知道要干嘛,现实确实是这样的。因为现在的大模型在没有调教的情况下就是个呆瓜。

    角色就更好说了,给大模型赋予角色的概念,能让大模型更好贴近场景,控制其输出,在我过往的经验中,在提问的时候,加上角色概念文本,能有效提升大模型回答的准确率。

    在我们现实使用时,不必拘泥于一定是要这种结构。下面我将根据我学习到的知识和之前撰写prompt的一些经验,写一些小的示例,希望能够做到抛砖引玉。

  2. 提示原则

    1. 编写清晰、具体的指令

      1. 在提示词中应该有层次分明的结构

        这里所谓的层次分明的结构,并不是指我们在写提示词的时候,要像json或者yml文件,遵循好格式。而是要告诉大模型,这个和这个是分开的不是一个东西。当然在我们写大规模的提示词时,我们最好也保存层次分明的结构,这样更方便相关人员阅读以及修改,对此我推荐使用markdown格式来编写提示词。

        在编写 Prompt 时,我们可以使用各种标点符号作为“分隔符”,将不同的文本部分区分开来。分隔符就像是 Prompt 中的墙,将不同的指令、上下文、输入隔开,避免意外的混淆。你可以选择用 ```,""",< >,<tag> </tag>,: 等做分隔符,只要能明确起到隔断作用即可。

      2. 在提示词的末尾,询问模型是否理解问题并指示模型提出更多问题。

        如果你正在构建基于聊天机器人的解决方案,那么这样做非常有效。举例来说,你可以在提示词的末尾添加如下文本:你清楚地理解我的请求了吗?如果没有,请问我关于上下文的问题。这样一来,当我回答时,你就能够更高效地执行我所请求的任务。

      3. 重复提示

        重复提示会取得良好的效果,尤其是当提示词很长时。基本思路是,在提示词中多次添加相同的指令,但每次采用不同的表述方式。

      4. 添加长度限制

        如果你只希望模型回答1个词或者10个句子,那么应该把要求添加到提示词中,这能让大模型回答更简洁,另外一方面长篇大论的回答既消耗大模型token又延长了大模型回答的时间。

    2. 寻求结构化的输出

      像一般大模型的回答就是一段话,假如我们在API中去解析这样的字符串是挺难受的,但是我们可以让大模型,根据我们设定的结构来输出,以json格式为例:

我们可以在提示词中写:输出结构按照json格式返回
或者:输出必须被json.loads接受
或者:Make sure the answer is in json format.
在最新的GPT4中,OpenAI在API中推出了结构化输出,确保模型生成的输出将完全匹配开发者提供的Json模式。
  1. 要求模型检查是否满足条件

    如果任务包含不一定能满足的假设(条件),我们可以告诉模型先检查这些假设,如果不满足,则会指出并停止执行后续的完整流程。大模型根据一定的逻辑去回答问题,如果提问天马行空不着边际,大模型很难做出准确的回答。

  2. 提供少量样本学习

    它指的是LLM仅通过提示词中的几个示例就能进行概括并给出有价值的结果。在使用少样本学习技巧时,你可以给模型提供几个示例,例如下例:
    在这里插入图片描述
    少样本学习技巧提供了具有目标输出的输入示例。然后,在最后一行,我们提供了想让模型完成的提示词。这个提示词与之前的示例具有相同的形式。模型将根据给定示例的模式执行操作。少样本学习是LLM的一个强大的特点,因为它使得LLM高度灵活且适应性强,只需有限的额外信息即可执行各种任务。

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

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

相关文章

python小游戏——躲避球(可当课设)

游戏简介&#xff1a; 没有美术&#xff0c;画面简洁&#xff08;懒得做&#xff09;。玩家控制小球躲避敌人&#xff08;上下左右&#xff0c;闪避&#xff09;&#xff0c;敌人体积越大速度越慢&#xff0c;随机生成道具球&#xff08;目前只有生命球&#xff09;&#xff0…

第T9周:猫狗识别2

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营]) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](K同学啊)** 一、前期工作 1. 设置GPU import tensorflow as tfgpus tf.config.list_physical_devices("GPU")if gpus:t…

Linux权限概念与思想,能深度理解“权限”,看这一篇就够啦

目录 一、Linux权限的概念 a.什么是权限&#xff1f; b.权限的本质 c.Linux中的用户 1.从root用户切换到普通用户user&#xff1a; 2.从普通用户user切换到root用户&#xff1a; 3.我不想直接变成root&#xff0c;但是我就是想以root的身份执行一个工作&#xff1f; 4.L…

EXCEL 分组后找出满足条件的行拼接起来

Excel某表格有四列&#xff0c;其中第2列是分组列。 ABCD11a1yet22a2done33a3yet44b1done55b2done66b3done77b4yet88b5done 现在要按第2列分组&#xff0c;找到每组第4列等于"done"的行&#xff0c;将这些行的第3列用逗号拼起来&#xff0c;再与分组名、行号组成新…

Unity动画模块 之 动画层混合

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正 1.动画层 动画层 - Unity 手册&#xff0c;动画层的作用 混合模式 覆盖和叠加模式&#xff0c;很好理解吧 权重 到底…

若依权限控制前端+后端实现思路梳理(PreAuthorize、hasPermi、v-hasPermi)

一、权限控制引发的思考 引言 最近接手了公司的一个项目&#xff0c;实施反馈说&#xff0c;客户那边要求对不同的权限的用户操作权限做限制。场景就是&#xff0c;比如一个项目列表&#xff0c;这部分数据有可能是针对某个公司某个部门的&#xff0c;对应不同的部门用户能看…

云岚到家 第一天

你的项目是做什么业务的&#xff1f; 家政服务&#xff0c;我的项目是一个家政o2o平台。o2o&#xff08;Online To Offline&#xff09;是将线下商务的机会与互联网的技术结合 什么商业模式&#xff1a; 项目涉及哪些角色&#xff1f; 本项目涉及如下角色&#xff1a; 家政…

技术前沿:WebRTC与H.265编码的兼容性挑战与应对策略

WebRTC&#xff08;Web Real-Time Communication&#xff09;是一种支持网页浏览器进行实时语音通话、视频聊天以及P2P文件共享的技术。然而&#xff0c;标准的WebRTC API在大多数浏览器中默认并不支持H.265&#xff08;也称为HEVC&#xff0c;高效视频编码&#xff09;编码。这…

Android 中native C++创建thread的几种方式

Android native 开发&#xff0c;工作中最常用的两种创建thread的方法&#xff0c;总结如下&#xff1a; 使用 pthread 库 &#xff08;1&#xff09;概念&#xff1a;它是一套在类 Unix 操作系统上进行多线程编程的接口&#xff0c; 而android 基于Linux , Linux就是一个类 U…

用序列模型(GPT Bert Transformer等)进行图像处理的调研记录

Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction 北大和字节团队的一篇VLM&#xff0c;在生成任务上&#xff0c;用GPT范式&#xff0c;声称在FID上超过了DIT&#xff0c;SD3和SORA。开源。首先是multi-scale的VQVAE&#xff0c;然后是…

Datawhale X 李宏毅苹果书 AI夏令营 学习笔记(一)

局部极小值与鞍点 在优化过程中&#xff0c;模型可能会遇到局部极小值(local minima)或鞍点(saddle point)&#xff0c;这些位置梯度为零&#xff0c;使得模型停止进步或训练缓慢。 局部极小值是损失函数的局部最低点&#xff0c;而鞍点则是梯度为零但不是局部极小/极大值的点…

Leetcode JAVA刷刷站(80)删除有序数组中的重复项 ||

一、题目概述 二、思路方向 为了解决这个问题&#xff0c;我们可以使用双指针技术。一个指针&#xff08;我们称之为i&#xff09;用于遍历数组&#xff0c;另一个指针&#xff08;我们称之为j&#xff09;用于记录不重复或只重复一次的元素应该放置的位置。同时&#xff0c;我…

创新实践:流媒体服务器如何推动WebRTC支持H.265及JS硬软解码(MSE硬解、WASM软解)

为了实现这一全面的解决方案&#xff0c;我们投入了近半年的时间进行调研与研发。我们的主要目标是&#xff1a;让流媒体服务器能够直接传输H.265编码的视频&#xff0c;而无需将其转码为H.264&#xff0c;从而使Chrome浏览器能够无缝解码并播放H.265视频。 值得注意的是&#…

TinaSDKV2.0 自定义系统开发

TinaSDKV2.0 自定义系统开发 什么是自定义系统&#xff1f; TinaSDK Kconfig界面配置 Tina Linux采用 Kconfig 机制对 SDK 和内核进行配置。 Kconfig 是一种固定格式的配置文件。Linux 编译环境中的 menuconfig 程序可以识别这种格式的配置文件&#xff0c;并提取出有效信息…

Flink常见数据源(source)使用教程(DataStream API)

前言 一个 Flink 程序,其实就是对 DataStream 的各种转换。具体来说,代码基本上都由以下几部分构成,如下图所示: 获取执行环境(execution environment)读取数据源(source)定义基于数据的转换操作(transformations)定义计算结果的输出位置(sink)触发程序执行(exec…

探索上门回收旧衣物系统源码开发的创新与挑战

在当今社会&#xff0c;随着环保意识的日益增强和可持续发展的全球趋势&#xff0c;旧衣物回收与再利用成为了一个备受关注的议题。为了响应这一需求&#xff0c;开发一套高效、便捷的上门回收旧衣物系统&#xff0c;不仅有助于减少环境污染&#xff0c;还能促进资源的循环利用…

[数据集][目标检测]电力场景输电线导线散股检测数据集VOC+YOLO格式3890张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3890 标注数量(xml文件个数)&#xff1a;3890 标注数量(txt文件个数)&#xff1a;3890 标注…

Koa商城项目-商城模块(前端)

项目地址 koa_system: &#x1f525;&#x1f525;&#x1f525;Koa2 React商城项目前端-React Antd前端-Vue2 Element-plus后端-Koa2 Sequelizehttps://gitee.com/ah-ah-bao/koa_system 欢迎大家点击查看,方便的话点一个star~ 项目结构 Vue2Admin和Vue3Admin版本的后台还…

Deep-Live-Cam启动

实验环境 实验时间&#xff1a;2024年8月windows 10 专业版能跟老外对喷的网络环境基于 Anaconda 创建 Python 3.10.x 环境 其它依赖 下载生成工具&#xff1a;https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/安装单个组件&#xff1a;共三个。 安装ffm…

Python酷库之旅-第三方库Pandas(093)

目录 一、用法精讲 396、pandas.Series.to_frame方法 396-1、语法 396-2、参数 396-3、功能 396-4、返回值 396-5、说明 396-6、用法 396-6-1、数据准备 396-6-2、代码示例 396-6-3、结果输出 397、pandas.Series.to_xarray方法 397-1、语法 397-2、参数 397-3、…