通义模型Prompt调优的实用技巧

news2024/9/27 15:22:04

1.

目录

1. prompt工程简介

2. Prompt设计

2.1 Prompt主要构成要素

2.2 Prompt编写策略

策略一:对较难被准确遵循的复杂规则可拆分为多条规则,有助于提升效果

策略二:适当冗余关键信息

策略三:使用分隔符给Prompt分段

策略四:增加学习示例

策略五:编写清晰地说明 - 指定任务所需的步骤

策略六:让大模型反思自己的推理过程

策略七:语音场景下的prompt要点

策略八:判断型的任务,建议先给依据,再出结论


prompt工程简介

Prompt 是用户与大语言模型交互的起始点,它告诉模型用户的意图,并且期望模型能以有意义且相关的方式回应。当我们希望大语言模型去完成一些较为复杂的任务时,Prompt的质量决定了大语言模型能否有好的回复。通过精心设计的prompt,我们能够有效地指引大型语言模型(LLM),深化其对用户需求的理解层次,从而激发更加精准且实用的回应生成。

2. Prompt设计

2.1 Prompt主要构成要素

prompt主要包含以下要素:

  1. 引导语或指示语:告诉模型你希望它执行哪种类型任务,比如回答问题、提出建议、创作文本等。
  2. 上下文信息:提供足够的背景信息,以便模型能够更好地理解和处理请求。上下文信息可能包括具体情景、相关数据、历史对话信息等内容。
  3. 任务描述:明确地描述你期望模型执行的任务。它可以是一个问题、一个命令性语句或者是一个场景描述。
  4. 输出格式指示:如果你对输出结果有特定的格式要求,应在prompt中说明。比如,你可以指定输出应该是列表形式、一段连贯的文本还是一系列步骤等。
  5. 限制条件:设置一些约束条件,指导模型避免某些类型的回答或者引导模型产生特定风格的内容。例如,可以限制回答的字数、要求避免使用专业术语等。
  6. 样例输出:提供一个或多个例子可以帮助LLM理解所期望的输出类型和质量。
  7. 结束语:如果有必要,可以使用结束语来标示prompt的结束,尤其是在连续的对话或者交互中。

这些要素并不是每个prompt都必须包含的,但根据特定的需求和上下文,合适地结合这些要素可以提高LLM生成的文本质量和相关性。

2.2 Prompt编写策略

策略一:对较难被准确遵循的复杂规则可拆分为多条规则,有助于提升效果

原prompt规则描述:

对于推销结果的判定,如果提及了【支付、办手续、签字、合同】则是“成交”,如果提及了【再看、考虑、不要、再联系、不需要、放弃、先不】则是“未成交”,其他情况识为“无法识别是否成交”。

原prompt较难准确判断成交结果,故将该规则一拆为二:

  • 规则1:成交,对话提及支付行为,如:支付宝、微信、转账支付等视为合规。
  • 规则2:未成交,客户表达态度,如:考虑、暂时、先不用、不需要、不升级、不考虑、放弃等犹豫或否定词语视为合规。

推销结果:从【成交、未成交、未知】中三选一,参考规则1、规则2的结论,得出结果。

策略二:适当冗余关键信息

对于一些逻辑关系比较复杂的前提条件,可以适当在Prompt中重复强调,增加其在模型记忆中的权重,从而降低推理偏差。

例如:

🟡 要求生成指定字数内的标题,但模型对指令遵循效果较差

🟢 尝试多个层级中【反复多次强调】“生成字数”要求,如下:

#创作要求:每个标题字数不得超过15个字。

#检查步骤:检查每个标题字数是否超出了15个字,要求每个标题字数必须小于15个字。

策略三:使用分隔符给Prompt分段

善于利用分隔符,帮助大模型更好的理解提示内容;prompt内容越复杂,分隔符的作用就越重要,对大模型的理解能力有所帮助。

原始Prompt:

请对以下内容进行文本摘要,分析情感倾向,并提取所有重要事实和数据。亿航智能(EH.US)涨超11% - 英为财情报道,亿航智能(EH.US)的股价在今日交易中涨幅超过11%。这一涨幅可能与该公司在全球首台国产“空中的士”项目中的进展有关,显示出市场对于无人机技术和空中交通解决方案的积极反应。

加入分隔符后的:

请对提供的文本内容进行以下分析:

- 文本摘要:提供该段落的简短摘要。

- 情感分析:确定文本的情感倾向,是积极的、消极的还是中性的。

- 关键信息提取:列出文本中提到的所有重要事实和数据。

文本内容:

'''

亿航智能(EH.US)涨超11% - 英为财情报道,亿航智能(EH.US)的股价在今日交易中涨幅超过11%。这一涨幅可能与该公司在全球首台国产“空中的士”项目中的进展有关,显示出市场对于无人机技术和空中交通解决方案的积极反应。

'''

可以看到通过加入分隔符后,Prompt的结构更加清晰,这样也便于大语言模型更好的理解这个任务。

策略四:增加学习示例

从大语言模型获得更好输出的最佳方法之一是在提示中包含示例,可以在prompt添加示例帮助LLM从少量示例中学习和概括信息。

给出实例的方式包括两种:

  1. 给出输出示例:给出一个示例将有助于LLM理解期望的结果。特别是在有特定的输出格式要求时,给出示例有助于LLM遵循输出要求。例如:

请根据以下格式给我推荐三本书:

书名: [书名]

作者: [作者]

出版年份: [年份]

简短描述: [描述]

示例输出:

书名: 《追风筝的人》

作者: 卡勒德·胡赛尼

出版年份: 2003

简短描述: 这是一个关于友谊和救赎的故事,发生在动荡的阿富汗历史背景下。

  1. 给出任务相关样例:

该方法也称为小样本学习(few-shot learning),是指在训练模型时仅使用极少量的样本数据进行学习和推理的任务。给出任务相关样例可以带来如下优势:

  1. 直观展示:样例提供了一个直观的输出模板,帮助模型理解任务的具体要求。
  2. 减少误解:通过样例,模型可以更准确地把握用户的意图,减少对指令的误解。
  3. 提高一致性:样例确保了输出的一致性,使得模型生成的回答遵循相同的格式和风格。
  4. 简化指令:有时候,一个简单的样例比复杂的指令更容易被模型理解和执行。

例如:

请根据以下样例将这篇文章分类为科技、体育或娱乐:

样例1:

文章内容:介绍最新智能手机的规格和功能。

分类:科技

样例2:

文章内容:关于即将举行的国际足球赛事的报道。

分类:体育

现在,请对以下文章进行分类:

文章内容:[用户提供的文章内容]

策略五:编写清晰地说明 - 指定任务所需的步骤

部分任务实现建议要求大模型按指定步骤生成,明确写出这些步骤可以让模型更容易遵循这些步骤。这样做是指:比如你会突发奇想,让LLM为你推理一个复杂的问题。与其直接让他告诉你推理的最终答案,不如告诉它为了完成推理,需要几个步骤去思考并生成对应的内容。这样做会大大的提升推理的靠谱程度,也有助于我们自己检查中间出现的问题。这样做的好处是:

  1. 明确性:具体的步骤可以确保模型或执行者明确知道需要做什么,避免误解或遗漏。
  2. 结构化:步骤化的任务更加结构化,可以帮助模型或执行者按照逻辑顺序执行,确保任务的连贯性。
  3. 效率:当任务被分解为小的、具体的步骤时,模型可以更加高效地完成每一个步骤,而不是在不确定如何进行时浪费时间。
  4. 易于监控:明确的步骤使得监控任务的进度变得更加容易。可以清楚地知道哪些步骤已经完成,哪些步骤还没开始。
  5. 减少错误:具体的步骤可以减少执行任务时的错误。当每一步都被明确指定时,模型更不容易犯错。
  6. 便于复查:如果任务的结果不如预期,有了明确的步骤可以帮助我们回溯和分析问题出在哪一步,从而进行调整。
  7. 提高透明度:对于用户来说,明确的步骤可以帮助我们理解任务的执行过程,提高工作的透明度。

策略六:让大模型反思自己的推理过程

大模型对指令的遵循效果依赖于指令的表达是否贴合大模型的推理逻辑。因此,在对内容表达的考量,或解决错误响应问题前,建议先行了解大模型的推理过程或输出依据,讲“大模型话”。

  1. 初期,借助指令要求大模型生成某任务所需的prompt,以得到大模型可理解的prompt初始框架。
  2. 持续迭代期,在实践中,我们会发现,LLM生成的结果存在一些较难理解的bad case,这种情况下我们可以引导大模型进行一些自我反思,回顾其推理过程或输出依据,以了解bad case背后的原因,进而指导我们调整prompt。

策略七:语音场景下的prompt要点

在销售线索挖掘,电信欺诈识别,服务质量质检等相关场景上,有个前置因素就是要将语音转文本后,大模型再进一步对文本做分析。很多时候,因转写效果而影响到了文本意图,花大量时间做转写优化,或是将常出现转写错误的词,在prompt中澄清等措施解决。可在prompt如下说明:

有些词可能翻译描述错误,你需要基于语境理解原本意思,不要直接因错别字判定不合规。

策略八:判断型的任务,建议先给依据,再出结论

分析判断型的任务,直接让大模型出结论,经常出现标签正确,结论错误。或是标签错误但结论正确的现象。更推荐:先出依据,再出规则命中结论。

约束输出内容&格式时,建议要求大模型先输出规则命中依据(如命中句子)或者判断理由,再输出命中结果,相较准确率表现更佳,如要求大模型按以下格式返回下:

{"reason":"判断原因","result":"判别结果"}

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

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

相关文章

类与对象—python

一、类的含义 1.1类的作用(理解) 收集学生信息时,如果让同学们自主填写,信息的顺序、格式不一,内容混乱。如果发给同学们既定的表格,同学们按照规定的顺序、格式进行填写,那信息就会一目了然&…

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SO-SVR蛇群算法优化支持向量机的数据多…

path_provider插件的用法

文章目录 1. 概念介绍2. 实现方法3. 示例代码我们在上一章回中介绍了"如何实现本地存储"相关的内容,本章回中将介绍如何实现文件存储.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在上一章回中介绍的本地存储只能存储dart语言中基本类型的数值,如果遇到…

大数据-147 Apache Kudu 常用 Java API 增删改查

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

【学习笔记】 AD24中元器件重叠系统不报错的解决方案(消除报错)

【学习笔记】 AD24中PCB设计元器件重叠后系统不报错的解决方案(如何主动屏蔽报错) 一、Component Clearance未开启使能的解决方案二、最小水平间距设置错误的解决方案三、未开启设计规则检查的解决方案四、设计规则检查中 “在线”和“批量”的含义五、为…

开源的CDN:jsDelivr+Github加速图片加载

文章目录 20240530更新 网站加载的图片耗时,将图片使用jsDelivr进行加速。 每次打开静态网站的时候,都会发现页面的内容已经加载出来了,但是图片还是一片白,就考虑如何让图片能够更快的加载出来。 后面发现可以用jsDelivr加速Gi…

自然场景文本定位系统源码分享

自然场景文本定位检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

南京市副市长吴炜一行至天洑软件参观调研

近日,南京市副市长吴炜、南京市工信局副局长代吉上、南京市科技局副局长王愿华、江宁开发区管委会副主任易骏飞一行至天洑软件参观,调研工业软件重点企业方案,天洑软件副总经理冯克列、总工程师郭阳、研发部部长谢佳雯陪同调研。 Q1&#xff…

南开大学联合同济大学发布最新SOTA Occ OPUS:使用稀疏集进行占据预测,最快实现8帧22FPS

Abstract 占据预测任务旨在预测体素化的 3D 环境中的占据状态,在自动驾驶社区中迅速获得了关注。主流的占据预测工作首先将 3D 环境离散化为体素网格,然后在这些密集网格上执行分类。然而,对样本数据的检查显示,大多数体素是未占…

Linux:编译,调试和Makefile

一丶vim编译器 ### 基本概念 模式:Vim有几种不同的模式,包括: 命令/正常/普通模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 插入模…

xpath在爬虫中的应用、xpath插件的安装及使用

安装 1、打开谷歌浏览器进入扩展程序安装页面(右上角会有"开发者模式按钮")默认是关闭的,当安装此插件时需要把开发者模式打开。 2、下载下来的xpath_helper是zip格式的,需要解压缩即可安装。 3、重启浏览器,再次点击扩展程序即…

CAN通信详解

1、CAN介绍 1.1、什么是CAN? CAN(Controller Area Network) 即控制器局域网,是ISO国际标准化的串行通信协议。 开发目的:为了满足汽车产业的“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”…

9.25 C++继承 多态

手动实现队列 #include <iostream>using namespace std;class My_queue { private:struct Node //队列结构体{int data;Node *next;Node(int value):data(value),next(nullptr){}};Node *front;Node *rear;int size;public:My_queue():front(nullptr),rear(nullptr),siz…

EMQX MQTT 服务器启用 SSL/TLS 安全连接,使用8883端口

1.提前下载安装openssl 2.新建openssl文件夹打开在命令行操作 3.按照下面的操作进行 MQTT 安全 作为基于现代密码学公钥算法的安全协议&#xff0c;TLS/SSL 能在计算机通讯网络上保证传输安全&#xff0c;EMQX 内置对 TLS/SSL 的支持&#xff0c;包括支持单/双向认证、X.509 …

如何使用ssm实现线上旅游体验系统+vue

TOC ssm691线上旅游体验系统vue 绪论 课题背景 身处网络时代&#xff0c;随着网络系统体系发展的不断成熟和完善&#xff0c;人们的生活也随之发生了很大的变化。目前&#xff0c;人们在追求较高物质生活的同时&#xff0c;也在想着如何使自身的精神内涵得到提升&#xff0…

进制数知识(2)—— 浮点数在内存中的存储 和 易混淆的二进制知识总结

目录 1. 浮点数在内存中的存储 1.1 浮点数的大V表示法 1.2 浮点数的存储格式 1.3 浮点数的存入规则 1.4 浮点数的读取规则 1.5 补充&#xff1a;移码与掩码 1.6 题目解析 2. 易错的二进制知识 2.0 符号位到底会不会参与运算&#xff1f; 2.0.1 存储前的编码变化运算 …

【Zynq从零开始】汇总导航

Welcome 大家好&#xff0c;欢迎来到瑾芳玉洁的博客&#xff01; &#x1f611;励志开源分享诗和代码&#xff0c;三餐却无汤&#xff0c;顿顿都被噎。 &#x1f62d;有幸结识那个值得被认真、被珍惜、被捧在手掌心的女孩&#xff0c;不出意外被敷衍、被唾弃、被埋在了垃圾堆。…

《Object-Centric Learning with Slot Attention》中文校对版

系列论文研读目录 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列论文研读目录摘要引言2 方法2.1 插槽注意力模块2.2 对象发现2.3 集合预测 3 相关工作4 实验4.1 对象发现4.2 集合预测 5 结论更广泛的影响 摘要 学习复杂场景的以对象为中心的表示是…

erlang学习:Linux命令学习5

从本地上传文件 使用rz命令选择文件&#xff0c;将本地文件上传至linux服务器 rz与本地文件中的txt文本文件内容相同 将上传的文件按行分割 split -l 1 study.txt -d -a 1 study_-l:按行分隔&#xff0c;每1行对study.txt文件进行切割 -d:添加数字后缀 -a 1:以1位数数字做尾…

Java_Day03学习

Day03 构造方法目的 为类的属性赋值构造方法调用 //调用带参方法时&#xff0c;要先实例化类&#xff0c;创建对象再调用&#xff1b; eg&#xff1a;public class Max_and_Min {//方法:访问修饰符 返回类型 方法名(形式参数类型 形参&#xff0c;形参类型 形参) {}public v…