Prompt Engineering 提示工程介绍与使用/调试技巧

1. 介绍

Prompt Engineering 是一种人工智能(AI)技术,它通过设计和改进 AI 的 prompt 来提高 AI 的表现。Prompt Engineering 的目标是创建高度有效和可控的 AI 系统,使其能够准确、可靠地执行特定任务。
如果你从来没有使用过Prompt Enginerring,可以看Google的这个prompt教程:
https://learningprompt.wiki/zh-Hans/docs/chatGPT/tutorial-basics/brief-introduction

prompt Engineering的介绍和使用网上已经有很多帖子介绍,这里并不重复说明。本博客主要总结OpenAI官网推荐的Prompt的提示策略和技巧。

2. 提示技巧

2.1 清晰的指令要求

我们输入给大模型的prompt,最好是清晰的,不带歧义的。具体有以下几种方式可以构建清晰的prompt。

  1. 在查询中包含详细信息以获得更相关的答案:例如在prompt中提供所有重要的细节或者背景信息。

  2. 指定角色:例如,在prompt模板里,指定大模型的角色,可以是老师、学生、专家等等,让大模型以特性的角色来回答问题。

    你是一个小学老师,麻烦将下面文本改写成小学生弄听得懂的话。需要改写的文本:xxxxxxxxx
    
  3. 使用特定的分隔符来区分不同的输入部分:例如用三重引号、XML标签等分隔符来划分需要不同处理的文本。

    你是一个小学老师,麻烦将下面文本<text>改写成小学生弄听得懂的话。"""
    <xxxxxxxxx>
    """
    
  4. 提供例子:这个很好理解,类似few-shot,在模型正式回答问题前,附带一些样例,期望大模型能从样例中获得一些启发。

    你是一个小学老师,麻烦将下面文本<text>改写成小学生弄听得懂的话。"""
    <文本1>
    """# output
    <答案1>"""
    <xxxxxxxxx>
    """# output
  5. 指定所需要的输出长度:可以要求模型输出指定长度的单词、段落等。

    请为我介绍国内最值得去爬的10座山,并说明原因。
    

提供充足的参考文本

  1. 指导模型使用参考文本回答:在prompt里,如果可以提供与当前查询相关的信息,那么就可以要求模型根据参考文本来回答问题。

    输出景区A的攻略。# 参考文本
    """
    xxxxxxxxxxx(某一天A景区的天气和售票情况)
    """# 输出格式
    <当前天气>:
    <票价>:
    <行程攻略>:
  2. 指示大模型用制定参考文本中的引用来回答

2.2 将复杂的任务分解为简单的子任务

  1. 使用意图分类来识别与用户查询相关的指令:如果某一任务存在大量的独立的指令集,这种情况下可以先对查询进行分类,最后根据分类结果来确定要执行哪些指令。通过定义固定类别和硬编码与处理给定类别中的任务相关的指令来实现。此过程可以递归应用,将任务分解为一系列阶段。该方法的优势是每次查询仅包含执行任务下一阶段所需指令,与使用单个查询执行这个任务相比,错误率更低。还可以降低成本,因为更大的提示运行成本更高。
  2. 对于需要长时间的对话应用,总结或过滤之前的对话:由于模型具有固定上下文长度,因此用户和助手之间的对话(其中整个对话包含在上下文窗口中)不能无限期地继续下去。一旦输入的大小达到预定的阈值长度,会触发一个总结部分对话的查询,并且前一次对话的摘要可以作为系统消息的一部分。或者,可以在整个对话过程中在后台异步总结前一次对话。
  3. 分段总结长文档并递归构建完整摘要:由于模型具有固定上下文长度,因此它们不能用于在单个查询中汇总长度超过上下文长度减去生成的摘要的长度的文本。要总结非常长的文档(例如一本书),我们可以使用一系列查询来总结文档的每个部分。可以将各部分摘要连接起来并进行总结,从而生成摘要的摘要。此过程可以递归进行,直到总结整个文档。如果需要使用有关前面部分的信息来理解后面的部分,那么另一个有用的技巧是在总结该部分内容的同时,在书中任何给定点之前包含文本的连续摘要。

2.3 给模型思考的时间

  1. 在匆忙得出结论之前,指导模型自己找到解决方案:当明确指示模型在得出结论之前从第一原则进行推理时,我们回得到更好的结果。例如,假设我们想要一个模型来评估学生对数学问题的解决方案。最明显的方法是直接询问模型学生的解决方案是否正确。
  2. 使用内心独白或一系列查询来隐藏模型的推理过程:内心独白的理念是指示模型将输出中本应对用户隐藏的部分放入结构化格式中,以便于解析它们。然后将输出呈现给用户之前,对输出进行解析,并只显示部分输出。
  3. 询问模型在之前的传递中是否遗漏来什么:假设使用模型列出于特定问题相关来源的摘录。列出每一个摘录后,模型需要确定是否应该开始编写另一个摘录或是否应该停止。如果源文档很大,模型通常会过早停止并无法列出所有相关摘录。在这种情况下,通常可以通过使用后续查询提示模型来查找之前传递时遗漏的任任何摘录来获得更好的性能。

2.4 使用外部工具

  1. 使用基于嵌入的搜索实现高效的知识检索(RAG应用):如果外部信息作为输入的一部分,模型可以利用这些信息源。这可以帮助模型生成更明智和最新的响应。例如,如果用户询问有关特定电影的问题,将有关该电影的高质量信息(例如演员、导演等)添加到模型的输入中可能会很有用。嵌入可用于实现高效的知识检索,以便可以在运行时将信息动态添加到模型输入中。
  2. 使用代码执行进行更精确的计算或调用外部API:语言模型不能依靠自身准确地执行算术或长时间计算。在需要的情况下,可以指示模型编写和运行代码,而不是自己进行计算。具体来说,可以指示模型将要运行的代码放入指定的格式(例如三重反引号),生成输出后,可以提取并运行代码。最后,如果需要,可以将代码执行引擎(如python解释器)的输出作为模型的输入。
  3. 让模型访问特定的功能:Chat Completions API允许在请求中传递函数描述列表。这使模型能够根据提供的模式生成函数参数。生成的函数参数由API以JSON格式返回,可用于执行函数调用。函数调用提供的输出随后可以在以下请求中反馈到模型中以关闭循环。这使使用OpenAI模型调用外部函数的推荐方式。

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

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

相关文章

如何把 Microsoft Word 中所有的汉字字体替换为宋体?

Ctrl H &#xff0c;然后&#xff0c;点击更多&#xff0c;勾选使用通配符&#xff0c;查找内容中填入 [一-龥]{1,}&#xff0c; 这是 Word 通配符匹配汉字的经典写法&#xff08;匹配 Unicode 范围内的 CJK 汉字&#xff09;。 然后&#xff0c; “替换为”留空&#xff0c;点…

CMake从入门到实战:现代C++项目构建指南

CMake从入门到实战&#xff1a;现代C项目构建指南 引言 在跨平台开发成为主流的今天&#xff0c;CMake作为开源构建系统的标杆工具&#xff0c;凭借其跨平台性、灵活性和可扩展性&#xff0c;已成为C/C项目的事实标准。本文将带你系统掌握CMake的核心机制&#xff0c;通过实战…

Web安全渗透之长城杯夺旗赛

Web-Git flag1 扫描WEB目录发现存在Git泄露&#xff08;这里是队友扫的&#xff0c;我这图是拿的我后面扫的截图&#xff0c;所以时间对不上。 使用GitHub - gakki429/Git_Extract: 提取远程 git 泄露或本地 git 的工具拉取泄露代码。 读取到flag&#xff0c;全场一血捏。…

机器学习与深度学习:区别与联系

机器学习与深度学习&#xff1a;区别与联系 在人工智能领域&#xff0c;机器学习和深度学习是两个最热门的概念&#xff0c;它们既相互关联又有所区别。本文将深入探讨这两者的核心差异与内在联系&#xff0c;帮助读者更好地理解它们在实际应用中的定位。 一、基本概念 **机…

Linux TCP与Socket与IO多路复用(Epoll)

目录 一、背景 二、交互流程 2.1 数据流动 2.2 对象之间的关系 三、TCP 3.1 为什么需要三次握手 3.2 三次握手流程 3.3 三次握手后的产物 3.4 TCB 四、Socket 4.1 Java Socket和C Socket 4.2 Socket的本质 4.3 Socket和TCB的关系 4.4 通过文件描述符调用Socket的…

字节跳动旗下火山引擎都覆盖哪些领域

首先&#xff0c;我需要确认火山引擎的主要业务范围。根据之前的资料&#xff0c;火山引擎是字节跳动的企业技术服务平台&#xff0c;可能包括云服务、人工智能、大数据分析等。不过需要更详细的信息&#xff0c;比如具体的产品和服务&#xff0c;覆盖的行业等。 接下来&#x…

如何配置jmeter做分布式压测

问&#xff1a;为何需要做分布式 答&#xff1a;当我们本地机器jmeter进行压测时&#xff0c;单台JMeter机器通常无法稳定生成2000 QPS&#xff08;受限于CPU、内存、网络带宽&#xff09;&#xff0c;本地端口耗尽&#xff1a;操作系统可用的临时端口&#xff08;Ephemeral P…

【算法提升】牛牛冲钻五 最长无重复子数组 重排字符串 one_day

算法提升 1.牛牛冲钻五1.2 解析 2.最长无重复子数组2.1解析 3.重排字符串3.1解析 1.牛牛冲钻五 1.2 解析 后面的数据要根据前面两个的状态来确定&#xff0c;我的做法是使用动态规划的方式 #include<iostream> #include<string> #include<vector> using n…

数学建模MathAI智能体-2025电工杯A题实战

题目&#xff1a; 光伏电站发电功率日前预测问题 光伏发电是通过半导体材料的光电效应&#xff0c;将太阳能直接转化为电能的技术。光伏电站是由众多光伏发电单元组成的规模化发电设施。 光伏电站的发电功率主要由光伏板表面接收到的太阳辐射总量决定&#xff0c;不同季节太阳…

VR 展厅开启一场穿越时空的邂逅​

在文化艺术领域&#xff0c;VR 展厅宛如一扇通往奇妙世界的大门&#xff0c;让观众得以突破时间与空间的枷锁&#xff0c;以一种前所未有的沉浸式体验&#xff0c;与历史文化和艺术作品展开亲密无间的互动。博物馆&#xff0c;作为承载着厚重历史文化的璀璨宝库&#xff0c;长久…

linux中使用make clean重新编译

是的&#xff0c;在编译完成后&#xff0c;你可以通过以下方式清除之前的编译结果并重新编译&#xff1a; 方法 1&#xff1a;直接删除 build 目录&#xff08;推荐&#xff09; 这是最彻底的清理方式&#xff0c;适用于需要完全重新配置或解决构建问题的情况。 # 进入项目根…

【Linux】的火墙管理及优化

目录 iptables与firewalld服务 iptables的三表五链 iptables的安装和启用 iptables命令的格式及常用参数 命令格式 常用参数 编写规则示例 firewalld的域 firewalld的启用 firewalld-cmd命令的常用参数 firewalld的高级规则 firewalld的地址伪装与端口转发 iptable…

古文时空重构:当AI把课本诗词做成4D电影

当青铜编钟声由远及近&#xff0c;AI生成的水墨粒子逐渐凝聚成标题 当苔痕在石阶上悄然蔓延时&#xff0c;你听见刘禹锡笔下的呼吸了吗&#xff1f; 当镜头突然穿透墨迹&#xff0c;3D古卷如星河铺展&#xff01; 当AI把课本诗词做成4D电影&#xff0c;这样的视频流量会不会高…

自动生成图标小程序(iOS)

续上篇《iOS应用程序开发(图片处理器&#xff09;》 这是一个图片浏览器和处理器&#xff0c;增加一些功能&#xff0c;可以自动生成小图标。 (This is a picture viewer and editor.You can add some functions,generate the icon automatically.You can select the object …

Netty应用:从零搭建Java游戏服务器网络框架

在游戏开发领域,服务器网络框架是连接玩家与游戏世界的桥梁,其稳定性和高效性直接影响玩家的游戏体验。本文将详细介绍如何使用Java语言和Netty框架,搭建一个兼具TCP和UDP协议支持的游戏服务器网络框架,并配套开发客户端,助你快速掌握游戏网络开发的核心技术。 1.项目概览…

SpringBoot-13-多表查询之一对一查询association

文章目录 1 mysql数据库1.1 account账户表1.2 user用户表2 实体类2.1 model/Account.java2.2 model/User.java3 mapper3.1 AccountToUserMapper.java3.2 AccountToUserMapper.xml3.2.1 mapper3.2.2 resultMap3.2.3 association3.2.4 select4 AccountController.java5 测试5.1 有…

Python如何赋能自动驾驶地图构建?从点云处理到实时导航

Python如何赋能自动驾驶地图构建?从点云处理到实时导航 自动驾驶的核心是什么?毫无疑问,精准的地图 是整个系统的灵魂。没有高精度地图,自动驾驶汽车就如同在迷雾中航行。而 Python,凭借其强大的数据处理能力和丰富的开源生态,正在成为自动驾驶地图构建的关键工具。 今…

QT之巧用对象充当信号接收者

备注&#xff1a;以下仅为演示不代表合理性&#xff0c;适合简单任务&#xff0c;逻辑简单、临时使用&#xff0c;可保持代码简洁&#xff0c;对于复杂的任务应创建一个专门的类来管理信号和线程池任务. FileScanner类继承QObject和QRunnable&#xff0c;扫描指定目录下的文件获…

Transformer,多头注意力机制 隐式学习子空间划分

Transformer,多头注意力机制 隐式学习子空间划分 在Transformer中,多头注意力机制天然支持隐式学习子空间划分——每个注意力头可以专注于输入的不同方面(如语义、句法、位置关系等),从而隐式形成多个子空间。 一、核心思路:将多头注意力视为隐式子空间 原理 Transfo…

java基础(继承)

什么是继承 继承好处 提高代码的复用性 继承注意事项 权限修饰符 单继承、Object类 冲突&#xff1a; 方法重写 扩展&#xff1a; 其实我们不想看地址&#xff0c;地址看来没用&#xff0c;我们是用来看对象有没有问题 重写toString: 比如这个如果返回的是地址值&#xff0c;…