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

news2024/11/24 10:04:42

本文为系列的第二篇,主要是学习和总结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的提示工程的异同

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

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

相关文章

栈和队列 - C语言实现

目录 栈 栈的概念 栈的实现 队列 队列的概念 队列的实现 栈 栈的概念 栈是一种后进先出 (LIFO - last in first out) 的数据结构&#xff0c;通常利用数组或链表实现。栈只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另…

JavaWeb14 - 异步请求 - 02 - Ajax

1. 概述 1.1 官方文档 Ajax 在线文档&#xff1a;https://www.w3school.com.cn/js/js_ajax_intro.asp 1.2 Ajax 基本介绍 1.2.1 Ajax 是什么 AJAX 即"Asynchronous Javascript And XML"(异步 JavaScript 和 XML)Ajax 是一种浏览器异步发起请求(指定发哪些数据)&…

LeetCode刷题集(七)(LeetCode70.爬楼梯)

学习目标&#xff1a;拿下LeetCode70.爬楼梯 学习完本文章之后拿下LeetCode70题 题目实例&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 样例1、输入&#xff1a;n 2 输出&#xff1…

Java学习路线(7)——面向对象基础

1、概念 对象&#xff1a; 是实际存在的具体实例。类&#xff1a; 是对象共同特征的描述 。 2、类的组成 成员变量 成员变量是类中的全局变量&#xff0c;它的作用域是class car的“{}”之内。 public class car{String carTypeName; //汽车类型名称double minPrice; //最低…

OpenCV在iOS端的集成及Mat和UIImage互相转化(附源码)

OpenCV是一个非常强大的图形处理框架&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上&#xff0c;在自动驾驶、智能家居、人脸识别、图片处理等方面提供了非常丰富且功能强大的api&#xff0c;在图片处理方便&#xff0c;基本上可以满足对图片处理的所有需求…

Fourier分析入门——第4章——频率域

目录 第 4 章 频率域(The Frequency Domain) 4.1 频谱分析(Spectral Analysis) 4.2 物理单位(Physics units) 4.3 笛卡尔坐标形式与极坐标形式对比 4.4 频谱分析的复数形式 4.5 复数值Fourier系数 4.6 复数值的和三角的Fourier系数之间的关系 4.7 2维或多维离散Fouri…

SpringBoot+Redis实现浏览量+1

当用户点击新闻查看详情后&#xff0c;数据库新闻的浏览量字段要加一&#xff0c;当在高并发场景下&#xff0c;很多人查看新闻详情直接操作数据库使浏览量字段加一对数据库压力过大&#xff0c;并且容易造成脏数据&#xff0c;这里结合redis实现浏览量加一。 业务逻辑&#x…

chatgpt赋能Python-pythonfoo

Pythonfoo: 优秀的Python库提高开发效率 Python是一门被广泛应用的动态编程语言&#xff0c;提供了各种各样的库来帮助开发人员完成不同类型的任务。在这些Python库中&#xff0c;Pythonfoo是一款旨在提高开发效率和代码简洁性的出色的Python库。 什么是Pythonfoo&#xff1f…

一种用于超低功耗无线传感器网络的消息传递算法(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 无线传感器网络是由一定数量的无线传感器节点组成的网络系统,各节点可采集环境数据并通过无线通信进行数据传输,目前已广泛应用…

使用cubeMX生成USB HID设备

一&#xff0c;简介 本文主要介绍如何使用stm32F407开发板和cubeMX生成USB FS HID设备&#xff0c;供参考。 二&#xff0c;操作步骤 本次总共分以下几个步骤&#xff1a; 1&#xff0c;创建cubeMX工程&#xff0c;并配置HID&#xff0c;生成工程代码&#xff1b; 2&#xf…

光伏防逆流系统的介绍

安科瑞虞佳豪 5月17日&#xff0c;新疆和田地区洛浦县国家电投洛浦光伏电站&#xff0c;今年2月刚刚并网发电的200兆瓦光伏发电项目坐落于戈壁滩上&#xff0c;占地5500亩的368004块光伏面板在阳光照射下熠熠生辉&#xff0c;为和田地区经济社会发展持续提供着绿色能源。 洛浦…

HNU-操作系统OS-实验Lab6

OS_Lab6_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf (学号 202108010XXX) 实验目的 理解操作系统的调度管理机制熟悉 ucore 的系统调度器框架,以及缺省的Round-Robin 调度算法基于调度器框架实现一个(Stride Scheduling)调度算法来替换缺省的调度算…

第12章_MySQL数据类型精讲

第12章_MySQL数据类型精讲 1. MySQL中的数据类型 类型类型举例整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT浮点类型FLOAT、DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP文本字符串类型CHAR、VARCHAR、TINYTEXT、TE…

chatgpt赋能Python-pythondeque函数

Python deque函数&#xff1a;高效地操作双向队列 介绍 在Python中&#xff0c;deque函数是一个非常重要的内置函数&#xff0c;用于创建双向队列。双向队列是一个序列容器&#xff0c;可以从两端添加或删除元素&#xff0c;这使得它成为许多常见问题的解决方案。deque函数是…

Vue--》深入理解 Vue 3 导航守卫,掌握前端路由的灵魂技能!

目录 vue3导航守卫讲解与使用 element-ui的安装与使用 配置路由和设置路径别名 设置登录页面并实现规则跳转 设置导航前置守卫 设置导航后置守卫 其他路由相关操作 vue3导航守卫讲解与使用 导航守卫是在 Vue Router 中提供的一种功能&#xff0c;它允许你在切换路由之前…

chatgpt赋能Python-pythonfirst

PythonFirst&#xff1a;Python编程新手的最佳起点 作为一门简洁而又强大的编程语言&#xff0c;Python在过去的几年中得到了越来越多的关注和应用。它广泛应用于数据分析、人工智能、Web开发、自动化等领域&#xff0c;成为了许多程序员的首选语言。如果你也是刚刚开始接触Py…

有哪些简单而知道的人少的excel操作技巧?

以下是 Excel 里鲜为人知而又简单、逆天的操作技巧&#xff1a; 1. 快速选中数据区域&#xff1a;双击数据区域左上角的方格即可快速选中整个数据区域。 2. 使用自动筛选快速查找和筛选数据&#xff1a;在 Excel 数据表中&#xff0c;使用自动筛选可以快速找到和筛选特定数据…

【Robot Dynamics Lecture Notes学习笔记之浮动基动力学】

Robot Dynamics Lecture Notes学习笔记之浮动基动力学 Contact ForcesSoft Contact Model Contact Forces from Constraints Constraint Consistent DynamicsContact Switches and Impact CollisionsImpulse TransferEnergy Loss 浮动基座系统的广义坐标分别由驱动关节坐标 q j…

小程序-基础加强(二):使用npm包

使用npm包 1.小程序对npm的支持与限制 目前&#xff0c;小程序中已经支持使用npm安装第三方包&#xff0c;从而来提高小程序的开发效率。但是&#xff0c;在小程序中使用npm包有如下3个限制&#xff1a; ①不支持依赖于Node.js内置库的包 ②不支持依赖于浏览器内置对象的包 …

Springboot +spring security,登录表单进阶配置及原理分析

一.简介 登录表单配置实操 二.创建项目 如何创建一个SpringSecurity项目&#xff0c;前面文章已经有说明了&#xff0c;这里就不重复写了。 三.配置默认用户信息 配置文件添加如下用户信息&#xff0c;代码如下&#xff1a; spring:security:user:name: lglbcpassword: 1…