拥抱生成式大模型 --- 提示工程篇

本文为系列的第二篇,主要是学习和总结chatgpt类模型的提示工程。感谢吴恩达老师的开源课程。

引言

随着大型语言模型(LLM)的发展,LLM 大致可以分为两种类型,即基础LLM和指令微调LLM。基础LLM是基于文本训练数据,训练出预测下一个单词能力的模型,其通常是在互联网和其他来源的大量数据上训练的。
例如,如果你以“从前有一只独角兽”作为提示,基础LLM可能会继续预测“生活在一个与所有独角兽朋友的神奇森林中”。但是,如果你以“法国的首都是什么”为提示,则基础LLM可能会根据互联网上的文章,将答案预测为“法国最大的城市是什么?法国的人口是多少?”,因为互联网上的文章很可能是有关法国国家的问答题目列表。可见好的提示工程对于充分发挥大模型性能至关重要。

提示的原则

  1. 写清晰和具体的提示。注意 清晰 ≠ 简短
    a)使用分隔符
    如: “”" (triple quotes) ‘’’ (triple backticks) —(triple dashes) <> (angle brackets)
    xml标记
    b) 要求结构化输出 html json
    如提示的结尾添加:
    Provide them in json format with the following keys: key1,key2 …
    c)检查条件是否满足 检查必须的前提去执行某个任务
    如: 如果里面包含指令序列,以下面的形式重写:
    步骤1 - …
    步骤2 -

    步骤N-
    如不不包含指令序列,则直接写文本中没有包含步骤
    d)few-shot prompting (小样本提示)
    给定一些成功的例子,然后让模型按照这些例子去完成

  2. 让模型有时间去思考
    a) 指定完成任务的步骤 (Specify the steps to complete the task)
    b) 指导模型不要急于给出答案,而是先提出它的解决方案

模型局限性:
模型幻觉(hallucination):尽管模型在训练的时候已经接触了大量的知识,但是它并没有完美的记住它所看到的信息,也不清楚自己的知识边界,所以它会尝试回答一些难题,编造一些看起来合理的答案,但实际是违背事实的。

所以尽量让模型先检索相关信息(搜索引擎或者外挂本地知识库),在基于相关信息回到问题

提示词迭代

step1: 写一个清晰明确的提示
step2:分析结果为什么没有得到期望的输出
step3: 更新提示
step4:重复上述操作

几个具体的场景

总结摘要 (summary)

提示参考:
你的任务是 对于从商品网站中的评论生成一个简短的摘要,反馈给XX部门。
对下面三个引号中的评论进行摘要,最多不超过30字。
‘’’
评论内容
‘’’

推理 (Infering)

这里的推理其实指的是传统的NLP任务,包括情感分析、信息抽取等任务。
提示的模式如:
What is the sentiment of the following product review, which is delimited by the triple backtickets ?
review text: ‘’’
{review content}
‘’’
Give your answer as a single word, either “positive” or “negative”.
情感分析可以给出更具体的提示,比如问用户是否有负面情绪?

实体提取的提示示例:
Identity the following items from the review text:

  • item purchased by the review
  • Company that made the item
    The review is delimited by the triple backtickets. Format your reponse as a json object with “item” and “brand” as the keys. If the infomation isn’t present, use “unknown” as the value. Make your reponse as short as possible.
    review text: ‘’’
    {review content}
    ‘’’
    关键词(主题)抽取:
    Determine five topics that are bing discussed in the following text, which is delimited by the triple backtickets.
    Make each topick one or two words long.
    Format your reponse as a list of items seperated by commas.
    Text : ‘’’
    {text content}
    ‘’’

稍作修改同样可以用作文本的主题分类:
Determine whether each item in the following list of topics is the topic of the text below, which is delimited by the triple backtickets.
Give your answer as list with 0 or 1 for each topic.
List of topics : “naas, local goverment, engineering, stocks”
Format your reponse as a list of items seperated by commas.
Text : ‘’’
{text content}
‘’’

构建应用程序,输出采用json格式会比列表更好,列表的形式,大模型的输出可能会出现一些处理不一致的问题。

转译 (transforming)

包括 翻译、文本校对等任务
如: Translate the following Chinese text to English and French.
‘’’
{Chinese text}
‘’’
通过提示,可以完成风格转换,比如邮件风格、短信风格
格式转换: 比如将json转变为xml

proofread and correct the following text, and rewrite the corrected version. If you don’t find any errors, just say “No error found”: ‘’’ {text} ‘’’

文案生成

定制化的文本生成,一般在提示语种包含一下内容:
1) 角色定位
2)任务描述
3)风格描述
4)细节强调
可以参加吴恩达老师课程中的例子:
一个邮件回复的例子
一个非常重要的超参数是 temperature,它能改变模型响应的多样性。直观的理解,它是模型搜索随机性的超参数
temperature超参数

聊天机器人

区别于之前直接从prompt 固化message,聊天机器人,可以通过system message给于对话给多的背景假设。
从模式上来说,可以参考下图:
在这里插入图片描述
直接截图吴恩达老师课上的例子 这里其实类似于chatglm的history参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

完整的系统消息为:
在这里插入图片描述

同样,可以再写一个提示,将上面对话的核心信息以json的形式抽取出来和系统联动。这也是一个很好的系统联动的方式。

总结

本文内容基于吴恩达老师课程的笔记。 但是提示工程易学难精,尤其是实际使用,可能是私有部署的其他模型,提示工程虽然原则相同,但也有差异性需要摸索。

Todo List

  1. 提示工程的进阶
  2. chatglm的提示工程
  3. 其他llm的提示工程的异同

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python机器学习入门 - - 贝叶斯算法学习笔记

文章目录 前言一、贝叶斯算法简介二、贝叶斯算法的数学原理1. 条件概率2. 全概率公式3. 贝叶斯公式4. 朴素贝叶斯分类器5. 高斯朴素贝叶斯分类器和伯努利朴素贝叶斯分类器 三、Python实现朴素贝叶斯分类总结 前言 贝叶斯公式是我们高中就耳熟能详的统计概率定理&#xff0c;贝…

亚马逊云科技出海日6月9日盛夏盛启

向全球价值链上游奋进 中国企业增强国际竞争力的关键&#xff0c;是努力朝全球价值链上游奋进&#xff0c;发力技术出海。中国的出海新机遇&#xff0c;背后曾是疫情在全球按下数字互联和数字化升级的快进键&#xff0c;跨境电商、在线社交、移动支付、数字服务等数字经济迎来…

如何让你的 Jmeter+Ant 测试报告更具吸引力?

目录 引言 一、安装apache-Ant 二、Jmeter准备 3、生成测试报告 4、JMeter动态参数处理逻辑是什么&#xff1f; 5、JMeter是怎么做API自动化测试的&#xff1f; 结语 引言 想象一下&#xff0c;你辛苦搭建了一个复杂的网站&#xff0c;投入了大量的时间和精力进行开发和…

005 - STM32学习笔记 - 启动代码

005 - STM32学习笔记 - 启动代码 常用汇编指令 指令名称作用EQU给数字常量取一个符号名&#xff0c;相当于C语言中的#define&#xff1b;AREA汇编一个新的代码段或者数据段&#xff1b;SPACE分配内存空间&#xff1b;PRESERVE8当前文件栈需要按照8字节对齐&#xff1b;EXPORT…

k8s pv pvc的介绍|动态存储|静态存储

k8s pv pvc的介绍|动态存储|静态存储 1 emptyDir存储卷2 hostPath存储卷3 nfs共享存储卷4 PVC 和 PVNFS使用PV和PVC 4 搭建 StorageClass NFS&#xff0c;实现 NFS 的动态 PV 创建 1 emptyDir存储卷 当Pod被分配给节点时&#xff0c;首先创建emptyDir卷&#xff0c;并且只要该…

详解c++STL—函数对象

目录 1、函数对象 1.1、函数对象概念 1.2、函数对象的使用 2、谓词 2.1、谓词概念 2.2、一元谓词 2.3、二元谓词 3、内建函数对象 3.1、理解内建函数对象 3.2、算术仿函数 3.3、关系仿函数 3.4、逻辑仿函数 1、函数对象 1.1、函数对象概念 概念&#xff1a; 重载…

编译原理个人作业--第六章——基于 编译原理 国防工业出版社 第三版

2 对表达式((a)(b)) (1) 按照表6.4属性文法构造抽象语法树 (2) 按6.17翻译模式构造表达式抽象语法树 5(1) 下列文法对整型常数、实型常熟世家加法运算符 生成表达式&#xff0c;当两个整型数相加&#xff0c;结果为整形&#xff0c;否则结果为实型 E → E T ∣ T E\r…

面试技术点

一、对热修复、插件化、模块化、组件化有一定研究。 1、模块化 将共享部分或业务模块抽取出来形成独立module。 2、组件化 基于模块化&#xff0c;核心思想是角色的转换&#xff0c;在打包时是library&#xff0c;分离独立的业务组件如微信朋友圈。 3、热修复和插件化种类、…

电力系统机组组合优化调度(IEEE14节点、IEEE30节点、IEEE118节点)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f4dd;目前更新&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;电力系统相关知识&#xff0c;期刊论文&…

Java并发编程-synchronized

目录 1. synchronized在jdk 1.6中的优化 1.1 锁消除 1.2 锁粗化 1.2 锁升级/锁膨胀 1.2.1 锁升级原理 1.2.2 自适应自旋锁 2. synchronized实现原理 3. synchronized和Lock的对比 1. synchronized在jdk 1.6中的优化 在JDK1.5的时候,Doug Lee推出了ReentrantLock,lock的…

chatgpt赋能Python-python_os拷贝文件

Python os拷贝文件 – 从简介到实现 Python os库是一个经常使用的工具&#xff0c;它是Python的标准库&#xff0c;提供了与操作系统进行交互的函数和方法。其中&#xff0c;os拷贝文件是其常用的功能之一&#xff0c;可以用来实现文件备份、文件复制等等操作。接下来&#xf…

windows sever服务器安装系统新手版

混在learnsite群里已经有几年了吧&#xff0c;但是只有一段时间用了别人现成的一个iso版本还比较老&#xff0c;这次打算自己弄一个&#xff0c;一开始打算linux下弄&#xff0c;结果系统都装完了发现人家说learnsite在linux下有点bug没解决好&#xff0c;只能win下再弄&#x…

Vue+uniapp桃源婚恋交友APP 安卓小程序 nodejs java python

小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 开发模式&#xff1a;混合开发本文先提出了开发基于小程序的桃源婚恋交友APP系统的背景意义&#xff0c;然后通过功能性和非功能性分析阐述本系统的需求&#xff0c;然后进行系统设计。技术实现部分选择Jav…

据不可靠消息,ST的新一代机皇正式命名为STM32V8系列,搭载Cortex-M85内核

根据以往的传统单片机命名方式&#xff1a; C0, L0, G0, F0 > Cortex-M0内核 F1, L1 > Corterx-M3内核 F2, F3 > Corterx-M3/M4 F4&#xff0c;G4&#xff0c;L4, L4 > Cortex-M4内核 L5&#xff0c;U5, H5 > Cor…

web安全第一天 ,域名,dns

第一天 什么是域名&#xff1f;域名就是网络地址 在hhtp之后的就是域名 域名在哪里注册呢 国内注册商有很多&#xff0c;在网络上搜索一下阿里云万网就可以注册 什么是二级域名和多级域名 域名通常都是www.开头 &#xff0c;而www.被称为顶级域名&#xff0c;在搜索的时候…

部门来了个测试开发,听说是00后,上来一顿操作给我看呆了...

公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司实习半年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&#xff01…

深度学习量化总结(PTQ、QAT)

背景 目前神经网络在许多前沿领域的应用取得了较大进展&#xff0c;但经常会带来很高的计算成本&#xff0c;对内存带宽和算力要求高。另外降低神经网络的功率和时延在现代网络集成到边缘设备时也极其关键&#xff0c;在这些场景中模型推理具有严格的功率和计算要求。神经网络…

5月份招了个00后测试堪称卷王之王,让人崩溃...

前段时间公司新来了个同事&#xff0c;听说大学是学的广告专业&#xff0c;因为喜欢IT行业就找了个培训班&#xff0c;后来在一家小公司干了三年&#xff0c;现在跳槽来我们公司。来了之后把现有项目的性能优化了一遍&#xff0c;服务器缩减一半&#xff0c;性能反而提升4倍&am…

c++虚函数详解(多态特性)

1.c多态的概念 多态是c的特征之一 多态的分类&#xff1a;静态多态&#xff08;静态联编&#xff09;、动态多态&#xff08;动态联编&#xff09; 静态多态&#xff08;静态联编&#xff09;&#xff1a;函数入口地址 是在 编译阶段 确定&#xff08;运算符重载、函数重载&…

使用go语言构建区块链 Part4.事务1

英文源地址 简介 事务是比特币的核心, 区块链的唯一目的是以安全可靠的方式存储交易, 因此在交易创建后没有人可以修改. 今天我们开始实现事务, 但由于这是一个相当大的主题, 我将它分成两部分: 在这一部分中, 我们将实现事务的通用机制, 在第二部分中, 我们将研究细节. 此外…