Prompt工程与实践

news2024/10/4 22:18:27

在这里插入图片描述
在这里插入图片描述

Prompt工程与实践

一、Prompt与大模型

1.1 大模型的定义

大模型本质上就是一个概率生成模型,该模型的模型参数足够大,并且在训练过程中阅读了非常多的各个领域的语料。这个时候,如果通过一个正确的、有效的指令去引导这个模型,就能够生成我们想要的内容。

1.2 大模型的用途
  • 信息抽取

将长段文字提取出结构化信息

  • 信息检索

通读结果并根据你的查询生成针对性的回答

  • 对话系统

根据制定规则进行对话

  • 辅助开发

辅助编写代码,降低门槛

  • Agent

Agent模型加上外围的技术架构可以让大模型去完成一个具体的任务,将任务背后的若干个工作都做好。

请添加图片描述

其中的智能工单系统就一边跟你沟通,一边去调用后端的一些接口,将自身的诉求下发到接口里帮助你直接去问完成。比如说智能导购系统,通过我们在前端构建一个用户和这个机器的一个聊天的一个交互的界面,然后在背面我们把更多丰富的像商品搜索的接口、下订单的接口都连接起来,让用户和模型在对话的过程中,执行各种后端的工具,完成一个闭环的完整任务。

Agent的价值就是模型可以充分利用多个API,换而言之,每个人都可以构建一个垂直领域的Agent的机器人,然后调用平台各种开发的工具,完成自己想让他完成的一个特定领域的任务。

请添加图片描述

预训练环节是模型厂商会大量做的工作,目的是让模型具备一个基础的智能,然后它可以面对各行各业的问题,能够有一个比较好的基础的认知,能够去分析、推理。进一步到了这个具体的场景当中,我们可以通过微调和指令工程这俩个方式,然后去调用大模型的能力去解决具体的业务问题。特别是微调这个环节,可以使用较多的监督性语料,从而去改变模型的参数,使其在这个具体的事情上做得更加充分。

对于指令工程,我们要考虑**如何用工程化的方式写好一个指令?**它没有特别多的模板,更多的是一些指导性的思路。我个人的建议是,**写好一个Prompt,在刚接触的情况下,可以先基于一些基本的框架进行套用,结合原理以及一些指导性的思路对指令进行添加和改写。**如果在可以的情况下,可以预先准备好数据集,包含了InputOutputOutput tipsReason等等部分,并且不断地通过LLM的反馈来进一步修正Prompt。

二、Prompt框架

不同的任务类型对应不同的Prompt框架,不同的Prompt框架对应不同的思考逻辑;每个框架都有自身适合的场景。

2.1 CO-STAR框架
介绍

CO-STAR Framework是最新一届的新加坡政府举办的Prompt工程大赛的冠军选手的框架,可以予以借鉴。

如何应用CO-STAR框架:

·©上下文:为任务提供背景信息,通过为大语言模型(LLM)提供详细的背景信息,可以帮助它精确理解讨论的具体场景,确保提供的反馈具有相关性。
·(O)目标:明确你要求大语言模型完成的任务 清晰地界定任务目标,可以使大语言模型更专注地调整其回应,以实现这一具体目标
·(S)风格:明确你期望的写作风格 你可以指定一个特定的著名人物成某个行业专家的写作风格。如商业分析师或CEO。这将指导大语言模型以一种符合你需求的方式和词汇选择进行回应。
·(T)语气:设置回应的情感调 设定话当的语气,确保大语言模型的回应能够与预测的情感或情绪背景相协调。可能的语气包括正式、幽默、富有同情心等。
·(A)受众:识别目标受众 针对特定受众定制大语言模型的回应,无论是领域内的专家,初学者还是儿童,都能确保内容在特定上下文中适当且容易理解。
·®响应:规定输出的格式 确定输出格式是为了确保大语言模型按照你的具体需求进行输出,便于执行下游任务。常见的格式包括列表、JSON格式的数据、专业报告等。对于大部分需要程序化处理大语言模型输出的应用来说,JSON格式是理想的选择。

2.2 其他框架

请添加图片描述

请添加图片描述

  • ICIO框架

将指令的内容分为四个部分,第一部分是介绍角色、任务和背景知识,第二部分是给出执行的步骤、思维链、样例数据,第三部分是给出输入数据,第四部分是给出输出的定义和指引。

  • LangGPT

这个框架更偏向开发,给了很多的细节要求,里面有一部分涉及到洞察力,比如说工程师需要自行判断这个指令的目标用户是什么?因此写指令不仅需要我们的逻辑能力,也需要我们的产品能力。

三、Prompt原则

3.1 清晰明确

请添加图片描述

可以考虑将我的理想输出内容细化为多个部分,限定字数,来使其更加清晰明确。

3.2 给模型思考的空间和路径

请添加图片描述

将模型做这件事情的思考过程尽可能地讲清楚,比如说在标黄的三部分,对开头、主体和结尾三大部分给模型一个具体的思考逻辑。写好一个指令的前提是需要有一个清晰的目标,有些问题可能比较有难度,光给他目标也不够,此时就应该附加一些具体的思考逻辑和路径。

四、Prompt的指导性思路

4.1 Few Shot

请添加图片描述

给出示例来解释内容

Few Shot其实是一个Context Learning的思路,通过说不改变模型的思路,仅仅通过指令的上下文窗口去调优模型生产内容,提供一些示例,让模型自己去学

4.2 COT(Chain Of Thought)

让其输出思考过程,将COT量化出来,提升模型输出的准确性。

请添加图片描述

进一步强化的话,可以给一些具体的COT的示例。

4.3 Temperature

temperature用于控制模型输出内容的多样性。temperature越低,内容越稳定;temperature越高,内容越多样。

利用指令追求正确性的过程中,大模型的创造性在很多场景对于一些难题或者一些需要创造性答案的题很有帮助。

请添加图片描述

4.4 top_p

top_p影响每次输出选词集中的程度。

top_p越低,选词词数越集中;top_p越高,选词词数越发散。

请添加图片描述

4.5 Tree Of Thought

将任务拆分为多个子任务,再通过不同的Prompt指令进行实现。

请添加图片描述

4.6 Agent

此处我们以定义一个"智能客服"的Agent为例。

第一部分我要在其中定义好工具,对于一个智能客服,我们需要定义像订单情况的查询,天气的查询计算器,政策赔偿查询等等。第二部分是我要告诉指令你该怎么去做思考,遇到每个工具返回的过程性结果,应该如何去做思考?第三部分是对于每个思考,都需要有具体的行动和调用的工具,最终得到Final Action,做出行动。

Agent的明显优势就是能够独立完成一个完整的任务,这对Prompt工程设计的要求程度更高,我们至少要定义清楚这个工具的用途,以便让模型知道应该调用哪个工具,并且需要告诉模型在这个场景下应该去如何拆解任务。因此大家可以看到,随着模型能力的不断增强,指令在这其中发挥的作用只会越来越大。

五、Prompt Engineering是什么

  • 迭代:没有人能直接写出100分的指令
  • 评测:像训练算法模型一样优化你的指令

我们需要==通过评测集==对指令不断地去调优,判断该指令是否能够放到生产环境中去用。

六、调优Prompt

Prompt的调优一般从内容结构两个方面进行入手。

6.1 从内容上调优指令
  • 角色迭代

告知大模型他应该扮演的角色,例如"你是口语对话教练"

  • 任务迭代

对于指令中的关键动作,尝试不同的近义词或其他相近的描述来提升准确性。

请添加图片描述

避免负向指令,通过更换概念等方式,尽量告诉模型应该输出什么。

请添加图片描述

逻辑完备,避免在"无"的时候,大模型自由发挥、臆造信息。

请添加图片描述

请添加图片描述

  • Few Shot迭代

请添加图片描述

使添加的样例比例更加均匀。

6.2 从结构上迭代指令
  • 分隔符:将文本上下文、不同的知识模块做分隔,避免无关知识模块的影响。

请添加图片描述

  • 分条目

  • 顺序

先输出的内容会影响后输出的内容。可尝试不同的顺序,避免提取项之间的干扰,找到最佳的提取效果。

请添加图片描述

  • 嵌套

对于每一个要求尽量让模型都独立的做出判断

请添加图片描述

  • 位置

指令的首部和尾部的指令遵循效果较好,适当的调整位置

请添加图片描述

七、指令工程实战

7.1 用户情绪识别

1.增加COT,告知思考过程,是如何判断正向还是负向的?

请添加图片描述

2.将具体的细节表述得更清晰

请添加图片描述

3.在正向、负向、中性情绪的判断增加一些Few Shot

请添加图片描述

4.对输出的格式进行强约束

请添加图片描述

  • 给文章打分(从文章中抽取信息)

请添加图片描述

  • 赋予角色
  • 添加修辞关键特征、分析原因

请添加图片描述

  • 加示例、引号强调

请添加图片描述

  • 增添一些反面示例

在这里插入图片描述

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

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

相关文章

算法-从归并排序到归并分治

文章目录 前言介绍1 . 简单的归并排序2 . 数组的最小和问题3 . 逆序数对问题4 . 翻转对数量的计算 前言介绍 归并排序是Merge sort)是一种有效、稳定的排序算法,它采用了分治法(Divide and Conquer)的典型应用,何为分治 ? 即把多…

【Linux】Linux基本指令2

我们接着上一篇:http://t.csdnimg.cn/bSJx8 我们接着完善ls指令 我们可以直接匹配对应格式的文件匹配出来 1.man指令(重要): Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助…

【贪心算法】C++解决回文串、增减字符串匹配、分发饼干、跳跃游戏、加油站问题

1. 前言 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最优决策的算法。贪心算法通常用来解决最优化问题,其核心思想是通过局部最优解逐步推导出全局最优解。 在贪心算法中,我们并不总是考虑到未来可能发生的…

【PingPong_注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …

如何下载b站(哔哩哔哩bilibili)的学习视频教程

方法1: 打开粘贴视频链接下载即可哔哩哔哩(bilibili)视频解析下载 - 保存B站视频到手机、电脑哔哩哔哩高清视频解析下载工具是一个免费的B站视频在线解析提取工具,支持提取B站APP和bilibili网站上的任何视频,提取出来的视频无水印.我们可以借助此下载器方便地将视频…

使用jdk自带jhat工具排查OOM问题

使用jdk自带jhat工具排查OOM问题 OOM java.lang.OutOfMemoryError: Java heap space排查步骤 编写一个测试类 public class TestJVM {Testpublic void test1() throws InstantiationException, IllegalAccessException {List<A> list new ArrayList<>();for (i…

ArcGIS不同图斑设置不同的透明度

对于设置一个图层的整体的透明度&#xff0c;我们在 ArcGIS制作带蒙版的遥感影像地图http://mp.weixin.qq.com/s?__bizMzIzNjM2NTYxMg&mid2247509080&idx1&sn38dccf0a52bb3bb3758f57114ee38b72&chksme8da161bdfad9f0d363da90959a8524dcf2b60d0e8d999f8ebeef0…

OrangePi Alpro开箱体验 ubuntu 与 openEuler 实时性对比

OrangePi Alpro开箱体验 & ubuntu 与 openEuler 实时性对比 1 介绍1.1 概述1.2 OrangePi Kunpeng Pro vs OrangePi AIpro 2 开箱3 芯片介绍OrangePi AIpro(8T)Atlas 200I DK A2 4 开机连接鼠标、键盘、显示器桌面查看系统信息配置网络查看IP远程SSHWinSCP 5 GPIO Toolgpio_…

MATLAB分类与判别模型算法:基于LVQ神经网络的乳腺肿瘤诊断分类程序【含Matlab源码 MX_003期】

说明 实现基于LVQ&#xff08;Learning Vector Quantization&#xff0c;学习向量量化&#xff09;神经网络的乳腺肿瘤诊断分类任务。LVQ是一种监督学习算法&#xff0c;通常用于模式识别和分类任务。 算法思路介绍&#xff1a; 导入数据&#xff1a; 加载名为"data.mat&…

C++学习~~对于二进制文件的读写命名空间再认识异常处理

目录 1.将数据以二进制形式放到磁盘 2.将上述的数据读入内存并且显示在显示器上面 3.异常处理机制 4.抛出异常的应用实例 1.将数据以二进制形式放到磁盘 &#xff08;1&#xff09;使用student定义结构体数组stud,并对其进行初始化&#xff0c;创建输出文件流对象outfile,这…

朋友圈定时发送设置

人日常中不可缺少的一件事&#xff0c;同时也是企业用来触达客户的重要渠道&#xff0c;下面一起来了解下微信朋友圈怎么定时发送呢&#xff1f;

音乐传奇告别之作:《杰作》未解之谜❗❗

坂本龙一的《杰作》不仅是一部音乐会纪录电影&#xff0c;更是他赠予世界的一封深情告别信。 这部影片精心收录了这位音乐巨匠生前最后一场钢琴独奏音乐会的珍贵瞬间&#xff0c; 其中涵盖了《圣诞快乐&#xff0c;劳伦斯先生》、《末代皇帝》、《水》等二十首令人陶醉的经典…

设计模式20——职责链模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 职责链模式&#xff08;Chain …

手推车式电缆故障定位系统

武汉凯迪正大一体化电缆故障高压发生器用于测试各种型号的380V,600V,10kV,35kV,110kV,220kV,380kV电压等级的铜铝芯电力电缆、同轴通信电缆和市话电缆的各类故障&#xff0c;如电缆全长、开路、短路、断线、低阻故障、高阻故障、高阻泄露、高低阻抗接地、接地故障、铠装接地故障…

数据集——高分辨率图像分割成大小均匀图像(附Python代码)

将高分辨率图像分割成大小均匀的图像用于训练&#xff0c;可以提高训练效率&#xff0c;提高模型性能&#xff0c;并提供更大的灵活性。 目录 一、大小均匀图像用于训练优势二、代码2.1 代码参数修改2.2 代码2.3 输出2.4 分割结果 三、总结 一、大小均匀图像用于训练优势 内存…

3步操作助您轻松实现苹果手机照片一键传输至电脑

对于很多使用苹果手机的用户来说&#xff0c;随着手机中照片和视频数量的不断积累&#xff0c;如何将这些珍贵的回忆从手机转移到电脑&#xff0c;以便更好地保存、整理和分享&#xff0c;成为了一个值得关注的问题。那么&#xff0c;苹果手机怎么把照片导入电脑呢&#xff1f;…

职校老师的工资待遇怎么样

工资水平一直是教师们关注的焦点&#xff0c;毕竟&#xff0c;工资不仅关系到个人的生活品质&#xff0c;还影响着教师的职业满意度和工作动力。职校教师的工资待遇究竟是怎样的呢&#xff1f; 职校教师的工资水平受多种因素影响&#xff0c;包括地区、学校类型、个人资历和教学…

Qt 配置Eigen矩阵库 - 并简单测试

Qt 配置Eigen矩阵库 - 并简单测试 引言一、在Qt中配置Eigen二、低通Demo源码三、参考链接以及其他 引言 Eigen是一个开源的C模板库&#xff0c;提供了线性代数和矩阵运算的功能。它被设计为一个高性能、可扩展和易用的库&#xff0c;可以用于科学计算、机器学习和计算机图形学等…

Django 里如何使用 sqlite (操作步骤)

在 settings.py 里&#xff0c;已经设定好 sqlite 了 DATABASES {default: {ENGINE: django.db.backends.sqlite3,NAME: BASE_DIR / db.sqlite3,} }必须得设置好app # 在 settings.py 里INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contentt…

安卓开发板_开发评估套件_4G/5G联发科MTK安卓主板定制开发

安卓开发板采用了联发科八核A53 CPU&#xff0c;主频2.0GHz&#xff0c;采用12nm制程工艺&#xff0c;拥有强大的通用计算性能。配备GE8300 GPU&#xff0c;支持1080P视频编码和H.264硬解码&#xff0c;能够解析目前流行的视频和图片格式&#xff0c;非常适合各种功能APP的测试…