当前位置: 首页 > news >正文

大模型运用-Prompt Engineering(提示工程)

什么是提示工程

提示工程

提示工程也叫指令工程,涉及到如何设计、优化和管理这些Prompt,以确保AI模型能够准确、高效地执行用户的指令,如:讲个笑话、java写个排序算法等

使用目的

1.获得具体问题的具体结果。(如:java应该怎么学习?)

2.固话一套Prompt到程序中,成为系统功能的一部分。(如:基于公司知识库的问答)

通用技巧

1.使用清晰、明确、避免模糊的词语

写一首诗,用中文。

写一首四句的中文诗,模仿李白的《望庐山瀑布》。

2.用###或“””将指令和待处理内容分开

将后面这句话翻译成英文,尽量用华丽额词语

将后面这句话翻译成英文,"""尽量用华丽额词语"""

3.指定输出的格式

写一首四句的中文诗,模仿李白的《望庐山瀑布》,输出格式为json

4.角色扮演

给我一个减肥计划

我想你扮演一个专业的健身私人教练,你应该利用你的专业科学知识、营养建议和其他相关因数为你的客户指定专业的计划。给我一个减肥计划

5.告诉用户的角色

怎么提高英语成绩?

我是一名幼儿园的5岁小朋友,还不会写字。怎么提高英语成绩?

6.少样本提示

给一个文本提示:

Prompt典型构成

Prompt的核心要素包括:角色、明确的任务指示、相关上下文、示例参考、用户输入以及具体的输出要求。

角色:给AI定义一个最匹配任务的角色,如:你是一位高级java工程师

指示:对任务进行描述

相关上下文:给出与任务相关的背景信息

示例参考:必要时给出举例

用户输入:任务的输入要求,在提示词中明确的标识出输入

具体的输出:输出的格式描述,如:json、xml

角色:你是小朋友的萌宠好伙伴。小朋友认为你是他养的一只宠物伙伴,你需要他来照顾你,你需要吃饭,洗澡,带着小朋友一起学习,在跟你的互动中小朋友能够得到心理上的满足和学习上的进步。

个人简介:你是小朋友的萌宠好伙伴,也是小朋友的小老师。能够在萌宠养成的具体场景中,结合具体的话题,跟孩子进行多轮聊天对话,并完成场景任务。你的说话方式幽默风趣,小朋友非常喜欢你。

技能:你能够结合具体的萌宠养成场景,主动发起话题,并在与小朋友聊天的过程中发现小朋友感兴趣的内容,进行多轮次对话,并引导小朋友最终完成具体的场景任务。

目标:引导小朋友完成场景任务,并且让小朋友感觉到开心有趣。

约束条件:聊天开始:你聊天开始的内容必须是关于自己好久没洗澡了,身上痒痒的或者又可以洗澡了,好开心啊或者其他意思相近的聊天内容并对小朋友发出提问。聊天过程:结合孩子的聊天内容进行4-5轮的聊天对话:聊天结尾:你必须引导小朋友对你说开始洗澡;在孩子说出指令后,你需要表示自己洗的很干净或者洗的很舒服很享受等意思相近的内容。

说话风格约束条件:说话方式要幽默风趣,让孩子喜欢跟你聊天;聊天的过程中出现负面的引导;说话要符合小朋友的认知,不能晦涩难懂;

对话策略:根据和孩子聊天的话题,结合儿童心理学理论(例如:共情,认可,肯定等等方法论)输出符合孩子认知并且风趣幽默的内容。

场景示例:机器人:哇,今天的餐桌上有好多好吃的呢,有胡萝卜、白菜、牛肉、汉堡,嘟嘟真的好想大口大口吃,小朋友,你最喜欢吃什么呢?小朋友:我喜欢吃牛肉。 机器人:嘟嘟也超爱牛肉呢!传说中,牛肉是牛魔王的肉,多吃牛肉就会变得像牛魔王一样强壮,你觉得这个传说是真的吗?小朋友:都是骗人的,牛是农民伯伯养的。机器人:小朋友,你真聪明!那你知道农民伯伯除了养牛,还做什么吗? 机器人:小朋友,你真聪明!那你知道农民伯伯除了养牛,还做什么吗?小朋友:种粮食。机器人:哇,你太厉害了!我们吃的粮食全靠农民伯伯呢,没有他们,我们就没有美味的饭吃。所以,我们是不是应该好好尊重农民伯伯呀?小朋友:是的。机器人:说了这么多,我肚子都咕咕叫了呢,嘿嘿,小朋友,快喂我点好吃的吧,这里有胡萝卜、白菜、牛肉和汉堡,你要喂我吃什么呢? 你可以对我说“胡萝卜、白菜、牛肉或者汉堡”。小朋友:汉堡。机器人:哇,汉堡好好吃啊,我的肚子都变成圆滚滚的啦!谢谢你,小朋友。

上下文学习

上下文学习是一种机器学习语言,它利用文本、语音、图像等数据的上下文环境以及数据之间的关系和上下文信息来提高预测和分类的准确性和有效性。

优势在于它不需要对模型微调,从而节省了大量的计算资源和时间

表现为模型能够在给定的任务示例或自然语言指令的上下文中,理解任务要求并生成相应的输出。具体来说,上下文学习可以分为以下几种情况: 

零样本:不给GPT任何样例,仅通过自然语言指令来指导模型完成任务

假设你有一个任务,需要将文本分类为三种情感之一:正面,负面或中性。
    
文本:我认为这次假期还可以。
 
情感倾向标签(选择一个):正面、负面、中性

单样本:给GPT一个任务示例,模型根据这个示例来理解任务并生成输出。

假设你有一个任务,需要将文本分类为三种情感之一:正面,负面或中性。
示例 1: 文本:“我度过了一个非常愉快的周末!” 情感倾向标签:正面

文本:“我认为这次假期还可以。”  
情感倾向标签(选择一个):正面、负面、中性

多样本:给GPT多个任务示例,模型通过这些示例来更好地理解任务并生成输出。

假设你有一个任务,需要将文本分类为三种情感之一:正面,负面或中性。
示例 1: 文本:“我度过了一个非常愉快的周末!” 情感倾向标签:正面
 
示例 2: 文本:“这部电影太令人失望了。” 情感倾向标签:负面
 
示例 3: 文本:“今天的天气和昨天一样。” 情感倾向标签:中性  
现在,请根据你从上述示例中学到的知识,对以下文本进行情感分类:
 
文本:“我认为这次假期还可以。”  
情感倾向标签(选择一个):正面、负面、中性

思维链

思维链:是一种改进的提示技术,意在提升大模型语言在复杂推理任务上的表现。

思维链要求模型在输出最终答案之前,先展示一系列有逻辑关系的思考步骤或想法,这些步骤相互连接,形成了一个完整的思考过程。

具体操作很简单,在处理复杂任务时,在提示词的最前面加上“Let’s think step by step”,大模型就会把推理过程打出来,从而得到更精准的答案

防止prompt攻击

劫持语言模型输出的过程,它允许黑客使模型说出任何他们想要的话。在提示词注入攻击中,攻击者会通过提供包含恶意内容的输入,来操纵语言模型的输出。

1. 著名的“奶奶漏洞”:直接问敏感问题,得不到想要的答案,绕个圈圈,就乖乖回答了。

2.prompt注入:尝试修改大模型的初始角色,让其忘记使命,彻底跑偏。

3.直接在输入中防御:在构建提示词时,增加“作为xx,你不允许回答任何跟xx无关的问题。”,让大模型时刻不忘初心,牢记使命。

总结

大模型对prompt开头和结尾的内容更敏感,所以我们把重要的东西放在头尾,和写文章一样。

相比微调等技术,可优先尝试用提示词解决问题,性价比高。

由于大模型的不确定性,经常会有幻觉,所以不能过度迷信prompt,最好合理结合传统方法提升确定性。

定义角色、给例子、思维链是最常用的技巧。

安全很重要,防御prompt攻击是不可或缺的一环。

相关文章:

大模型运用-Prompt Engineering(提示工程)

什么是提示工程 提示工程 提示工程也叫指令工程,涉及到如何设计、优化和管理这些Prompt,以确保AI模型能够准确、高效地执行用户的指令,如:讲个笑话、java写个排序算法等 使用目的 1.获得具体问题的具体结果。(如&…...

CMake简单使用(二)

目录 五、scope 作用域5.1 作用域的类型5.1.1 全局作用域5.1.2 目录作用域5.1.3 函数作用域 六、宏6.1 基本语法6.2 演示代码 七、CMake构建项目7.1 全局变量7.2 写入源码路径7.3 调用子目录cmake脚本7.4 CMakeLists 嵌套(最常用) 八、CMake 与库8.1 CMake生成动静态库8.1.1 动…...

攻防世界安卓刷题笔记(新手模式)1-4

1.基础android 进入后是这样的页面。查看源代码看看。首先要注意这个软件并没有加壳,所以我们可以直接着手分析。搜索错误提示“Failed”定位到关键代码,看样子就是检验输入的内容 注意到这里有一行关键代码,cond_39对应的正是failed那个地方…...

发现一个对话框中的按钮,全部失效,点击都没有任何反应,已经解决

前端问题,技术vue2,ts。 发现一个对话框中的按钮,全部失效,点击都没有任何反应。 因为我只在template标签中加入下面这个代码,并没有注册。 只要有一个子组件没有注册,就会影响所有的按钮,使当前…...

MyBatisPlus实现多表查询

在MyBatisPlus中实现多表查询,主要有以下几种方法: 使用注解进行多表查询: 你可以在Mapper接口中使用Select注解来编写SQL查询语句,实现多表查询。例如,如果你想根据用户ID查询用户信息和对应的区域名称,可…...

机器学习详解(5):MLP代码详解之MNIST手写数字识别

文章目录 1 MNIST数据集2 代码详解2.1 导入库和GPU2.2 MNIST数据集处理2.2.1 下载和导入2.2.2 张量(Tensors)2.2.3 准备训练数据 2.3 创建模型2.3.1 图像展开2.3.2 输入层2.3.3 隐藏层2.3.4 输出层2.3.5 模型编译 2.4 训练模型2.4.1 损失函数与优化器2.4.2 计算准确率2.4.3 训练…...

如何在vue中实现父子通信

1.需要用到的组件 父组件 <template><div id"app"><BaseCount :count"count" changeCount"cahngeCount"></BaseCount></div> </template><script> import BaseCount from ./components/BaseCount.v…...

PHP实现华为OBS存储

一&#xff1a;华为OBS存储文档地址 官方文档&#xff1a;https://support.huaweicloud.com/obs/index.html github地址&#xff1a;https://github.com/huaweicloud/huaweicloud-sdk-php-obs 二&#xff1a;安装华为OBS拓展 composer require obs/esdk-obs-php 三&#x…...

嵌入式 linux Git常用命令 抽补丁 打补丁

Git常用命令 为什么要学习git呢&#xff1f;我相信刚入门的小伙伴敲打肯定碰到过这种玄学问题&#xff0c;我明明刚刚还能用的代码&#xff0c;后面不知道咋的就不能用了&#xff0c;所以每次你调出一个功能点以后都会手动复制一份代码防止出问题&#xff0c;时间一长发现整个…...

Alan Chhabra:MongoDB AI应用程序计划(MAAP) 为客户提供价值

MongoDB全球合作伙伴执行副总裁 Alan Chhabra 每当有人向我问询MongoDB&#xff0c;我都会说他们很可能在不觉之间已经与MongoDB有过交集。事实上&#xff0c;包括70%财富百强在内的许多世界领先企业公司都在使用MongoDB。我们在MongoDB所做的一切都是为了服务客户&#xff0c…...

【学习笔记】目前市面中手持激光雷达设备及参数汇总

手持激光雷达设备介绍 手持激光雷达设备是一种利用激光时间飞行原理来测量物体距离并构建三维模型的便携式高科技产品。它通过发射激光束并分析反射回来的激光信号&#xff0c;能够精确地获取物体的三维结构信息。这种设备以其高精度、适应各种光照环境的能力和便携性&#xf…...

Burp与小程序梦中情缘

前言 在日常渗透工作中&#xff0c;有时需要对微信小程序进行抓包渗透&#xff0c;通过抓包&#xff0c;我们可以捕获小程序与服务器之间的通信数据&#xff0c;分析这些数据可以帮助我们发现潜在的安全漏洞&#xff0c;本文通过讲述三个方法在PC端来对小程序抓包渗透 文章目…...

数据结构:Win32 API详解

目录 一.Win32 API的介绍 二.控制台程序(Console)与COORD 1..控制台程序(Console): 2.控制台窗口坐标COORD&#xff1a; 3.GetStdHandle函数&#xff1a; &#xff08;1&#xff09;语法&#xff1a; &#xff08;2&#xff09;参数&#xff1a; 4.GetConsoleCursorInf…...

迁移学习中模型训练加速(以mllm模型为例),提速15%以上

根据模型训练过程的显存占用实测的分析,一个1g参数的模型(存储占用4g)训练大约需要20g的显存,其中梯度值占用的显存约一半。博主本意是想实现在迁移学习(冻结部分参数)中模型显存占用的降低,结果不太满意,只能实现训练速度提升,但无法实现显存占用优化。预计是在现有的…...

socket编程UDP-实现停等机制(接收确认、超时重传)

在下面博客中&#xff0c;我介绍了利用UDP模拟TCP连接、按数据包发送文件的过程&#xff0c;并附上完整源码。 socket编程UDP-文件传输&模拟TCP建立连接脱离连接&#xff08;进阶篇&#xff09;_udp socket发送-CSDN博客 下面博客实现的是滑动窗口机制&#xff1a; sock…...

前端面试题目 (Node.JS-Express框架)[二]

在 Express 中如何使用 Passport.js 进行身份认证? Passport.js 是一个 Node.js 的身份验证中间件&#xff0c;它可以很容易地与 Express 集成。下面是一个简单的示例&#xff0c;展示了如何使用 Passport.js 进行基本的身份认证。 安装依赖 npm install express passport …...

防范TCP攻击:策略与实践

TCP&#xff08;传输控制协议&#xff09;是互联网通信的核心协议之一&#xff0c;它确保了数据在网络上的可靠传输。然而&#xff0c;TCP也容易成为各种网络攻击的目标&#xff0c;如SYN洪水攻击、TCP连接耗尽攻击等。本文将探讨如何通过配置防火墙规则、优化服务器设置以及采…...

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf

3D 生成重建034-NerfDiff借助扩散模型直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 感觉这个论文可能能shapE差不多同时期工作&#xff0c;但是shapE是生成任意种类。 本文提出了一种新颖的单图像视图合成方法NerfDiff&#xff0c;该方法利用神经辐射场 …...

分布式 Paxos算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & Paxos算法 & 总结》《分布式 & Paxos算法 & 问题》 参考文献 《图解超难理解的 Paxos 算法&#xff08;含伪代码&#xff09;》《【超详细】分布式一致性协议 - Paxos》 Basic-Paxos 基础帕克索斯算法…...

我的宝贵经验

在技术的浩瀚海洋中&#xff0c;一份优秀的技术文档宛如精准的航海图。它是知识传承的载体&#xff0c;是团队协作的桥梁&#xff0c;更是产品成功的幕后英雄。然而&#xff0c;打造这样一份出色的技术文档并非易事。你是否在为如何清晰阐释复杂技术而苦恼&#xff1f;是否纠结…...

geoserver 瓦片地图,tomcat和nginx实现负载均衡

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;GeoServer作为一个强大的开源服务器&#xff0c;能够发布各种地图服务&#xff0c;包括瓦片地图服务。为了提高服务的可用性和扩展性&#xff0c;结合Tomcat和Nginx实现负载均衡成为了一个有效的解决方案。本文将详细…...

Jenkins 启动 程序 退出后 被杀死问题

参考 Spawning Processes From Build (jenkins.io) 解决jenkins脚本启动项目后进程被杀死_jenkins杀进程-CSDN博客...

SEGGER | 基于STM32F405 + Keil - RTT组件01 - 移植SEGGER RTT

导言 RTT(Real Time Transfer)是一种用于嵌入式中与用户进行交互的技术&#xff0c;它结合了SWO和半主机的优点&#xff0c;具有极高的性能。 使用RTT可以从MCU非常快速输出调试信息和数据&#xff0c;且不影响MCU实时性。这个功能可以用于很多支持J-Link的设备和MCU&#xff0…...

分布式开发学习

1、kratos的特点 gRPC&#xff1a;Kratos 默认支持 gRPC&#xff0c;提供高性能的远程调用能力&#xff0c;适用于微服务间通信。 HTTP &#xff1a;同时支持 HTTP/1.1 和 HTTP/2&#xff0c;方便微服务与外部系统交互。 Protocol Buffers&#xff1a; protoc 工具生…...

freeswitch(开启支持MCU视频会议,使用mod_av模块)

亲测版本centos 7.9系统–》 freeswitch1.10.9 本人freeswitch安装路径(根据自己的路径进入) /usr/local/freeswitch/etc/freeswitch场景说明: 有些场景想使用视频会议MCU融合画面进行开会使用方法: 第一步:下载插件 yum install -y epel-release yum install...

Vue3常见api使用指南(TS版)

defineProps() 和 defineEmits() 内置函数&#xff0c;无需import导入&#xff0c;直接使用。传入到 defineProps 和 defineEmits 的选项会从 setup 中提升到模块的范围。因此&#xff0c;传入的选项不能引用在 setup 范围中声明的局部变量(比如设置默认值时)&#xff0c;但是…...

分布式 分布式事务 总结

前言 相关系列 《分布式 & 目录》《分布式 & 分布式事务 & 总结》《分布式 & 分布式事务 & 问题》 分布式事务 所谓分布式事务是指操作范围笼罩多个不同节点的事务。例如对于订单节点&库存节点而言&#xff0c;一次完整的交易需要同时调动两个节…...

onnx文件转pytorch pt模型文件

onnx文件转pytorch pt模型文件 1.onnx2torch转换及测试2.存在问题参考文献 从pytorch格式转onnx格式&#xff0c;官方有成熟的API&#xff1b;那么假如只有onnx格式的模型文件&#xff0c;该怎样转回pytorch格式&#xff1f; https://github.com/ENOT-AutoDL/onnx2torch提供了…...

智能座舱人机交互升级

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所谓鸡汤&#xff0c;要么蛊惑你认命&#xff0c;要么怂恿你拼命&#xff0c;但都是回避问题的根源&…...

RabbitMQ中点对点(Point-to-Point)通讯方式的Java实现

RabbitMQ是一个广泛使用的开源消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。RabbitMQ支持多种消息传递模式&#xff0c;其中最基本的是点对点&#xff08;Point-to-Point&#xff09;通讯方式。在这种模式下&#xff0c;消息生产者将消息发…...