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。
-
在查询中包含详细信息以获得更相关的答案:例如在prompt中提供所有重要的细节或者背景信息。
-
指定角色:例如,在prompt模板里,指定大模型的角色,可以是老师、学生、专家等等,让大模型以特性的角色来回答问题。
你是一个小学老师,麻烦将下面文本改写成小学生弄听得懂的话。需要改写的文本:xxxxxxxxx
-
使用特定的分隔符来区分不同的输入部分:例如用三重引号、XML标签等分隔符来划分需要不同处理的文本。
你是一个小学老师,麻烦将下面文本<text>改写成小学生弄听得懂的话。""" <xxxxxxxxx> """
-
提供例子:这个很好理解,类似few-shot,在模型正式回答问题前,附带一些样例,期望大模型能从样例中获得一些启发。
你是一个小学老师,麻烦将下面文本<text>改写成小学生弄听得懂的话。""" <文本1> """# output <答案1>""" <xxxxxxxxx> """# output
-
指定所需要的输出长度:可以要求模型输出指定长度的单词、段落等。
请为我介绍国内最值得去爬的10座山,并说明原因。
提供充足的参考文本
-
指导模型使用参考文本回答:在prompt里,如果可以提供与当前查询相关的信息,那么就可以要求模型根据参考文本来回答问题。
输出景区A的攻略。# 参考文本 """ xxxxxxxxxxx(某一天A景区的天气和售票情况) """# 输出格式 <当前天气>: <票价>: <行程攻略>:
-
指示大模型用制定参考文本中的引用来回答
2.2 将复杂的任务分解为简单的子任务
- 使用意图分类来识别与用户查询相关的指令:如果某一任务存在大量的独立的指令集,这种情况下可以先对查询进行分类,最后根据分类结果来确定要执行哪些指令。通过定义固定类别和硬编码与处理给定类别中的任务相关的指令来实现。此过程可以递归应用,将任务分解为一系列阶段。该方法的优势是每次查询仅包含执行任务下一阶段所需指令,与使用单个查询执行这个任务相比,错误率更低。还可以降低成本,因为更大的提示运行成本更高。
- 对于需要长时间的对话应用,总结或过滤之前的对话:由于模型具有固定上下文长度,因此用户和助手之间的对话(其中整个对话包含在上下文窗口中)不能无限期地继续下去。一旦输入的大小达到预定的阈值长度,会触发一个总结部分对话的查询,并且前一次对话的摘要可以作为系统消息的一部分。或者,可以在整个对话过程中在后台异步总结前一次对话。
- 分段总结长文档并递归构建完整摘要:由于模型具有固定上下文长度,因此它们不能用于在单个查询中汇总长度超过上下文长度减去生成的摘要的长度的文本。要总结非常长的文档(例如一本书),我们可以使用一系列查询来总结文档的每个部分。可以将各部分摘要连接起来并进行总结,从而生成摘要的摘要。此过程可以递归进行,直到总结整个文档。如果需要使用有关前面部分的信息来理解后面的部分,那么另一个有用的技巧是在总结该部分内容的同时,在书中任何给定点之前包含文本的连续摘要。
2.3 给模型思考的时间
- 在匆忙得出结论之前,指导模型自己找到解决方案:当明确指示模型在得出结论之前从第一原则进行推理时,我们回得到更好的结果。例如,假设我们想要一个模型来评估学生对数学问题的解决方案。最明显的方法是直接询问模型学生的解决方案是否正确。
- 使用内心独白或一系列查询来隐藏模型的推理过程:内心独白的理念是指示模型将输出中本应对用户隐藏的部分放入结构化格式中,以便于解析它们。然后将输出呈现给用户之前,对输出进行解析,并只显示部分输出。
- 询问模型在之前的传递中是否遗漏来什么:假设使用模型列出于特定问题相关来源的摘录。列出每一个摘录后,模型需要确定是否应该开始编写另一个摘录或是否应该停止。如果源文档很大,模型通常会过早停止并无法列出所有相关摘录。在这种情况下,通常可以通过使用后续查询提示模型来查找之前传递时遗漏的任任何摘录来获得更好的性能。
2.4 使用外部工具
- 使用基于嵌入的搜索实现高效的知识检索(RAG应用):如果外部信息作为输入的一部分,模型可以利用这些信息源。这可以帮助模型生成更明智和最新的响应。例如,如果用户询问有关特定电影的问题,将有关该电影的高质量信息(例如演员、导演等)添加到模型的输入中可能会很有用。嵌入可用于实现高效的知识检索,以便可以在运行时将信息动态添加到模型输入中。
- 使用代码执行进行更精确的计算或调用外部API:语言模型不能依靠自身准确地执行算术或长时间计算。在需要的情况下,可以指示模型编写和运行代码,而不是自己进行计算。具体来说,可以指示模型将要运行的代码放入指定的格式(例如三重反引号),生成输出后,可以提取并运行代码。最后,如果需要,可以将代码执行引擎(如python解释器)的输出作为模型的输入。
- 让模型访问特定的功能:Chat Completions API允许在请求中传递函数描述列表。这使模型能够根据提供的模式生成函数参数。生成的函数参数由API以JSON格式返回,可用于执行函数调用。函数调用提供的输出随后可以在以下请求中反馈到模型中以关闭循环。这使使用OpenAI模型调用外部函数的推荐方式。
相关文章:
Prompt Engineering 提示工程介绍与使用/调试技巧
1. 介绍 Prompt Engineering 是一种人工智能(AI)技术,它通过设计和改进 AI 的 prompt 来提高 AI 的表现。Prompt Engineering 的目标是创建高度有效和可控的 AI 系统,使其能够准确、可靠地执行特定任务。 如果你从来没有使用过Pr…...

LLaMaFactory - 支持的模型和模板 常用命令
一、 环境准备 激活LLaMaFactory环境,进入LLaMaFactory目录 cd LLaMA-Factoryconda activate llamafactory 下载模型 #模型下载 from modelscope import snapshot_download model_dir snapshot_download(Qwen/Qwen2.5-0.5B-Instruct) 二、启动一个 Qwen3-0.6B…...

大模型深度学习之双塔模型
前言 双塔模型(Two-Tower Model)是一种在推荐系统、信息检索和自然语言处理等领域广泛应用的深度学习架构。其核心思想是通过两个独立的神经网络(用户塔和物品塔)分别处理用户和物品的特征,并在共享的语义空间中通过相…...
MySQL 8主从同步实战指南:从原理到高可用架构落地
MySQL 8主从同步实战指南:从原理到高可用架构落地 本文将用3000字深度解析MySQL 8主从复制机制,配合全流程部署指南及电商平台实战案例,助你构建高性能数据库集群 一、主从复制核心原理剖析 1.1 复制架构全景图 #mermaid-svg-vdts3hTIyCtz4byk {font-family:"trebuche…...

瑞数6代jsvmp简单分析(天津电子税x局)
国际惯例 今天帮朋友看一个gov网站的瑞数加密(天津电子税x局) 传送门(登陆入口界面) 瑞数6特征 1.服务器会发两次包,第一次响应状态码为412,第二次响应状态码为200。 2.有三重debugger,其中有…...
缓存架构方案:Caffeine + Redis 双层缓存架构深度解析
在高并发、低延迟的现代互联网系统中,缓存是提升系统性能和稳定性的重要手段。随着业务复杂度的增长,单一缓存方案(如仅使用Redis或仅使用本地缓存)已难以满足高性能与一致性需求。 本文将围绕 Caffeine Redis 的双层缓存架构展…...
AI笔记 - 模型调试 - 调试方式
模型调试方式 基础信息打印模型信息计算参数量和计算量过滤原则profile方法get_model_complexity_info方法FlopCountAnalysis方法 基础信息 # 打印执行的设备数量:device_count:1 print(f"device_count:{torch.cuda.device_count()}")# 打印当前网络执行…...

榕壹云物品回收系统实战案例:基于ThinkPHP+MySQL+UniApp的二手物品回收小程序开发与优化
摘要:本文深入解析了一款基于ThinkPHPMySQLUniApp框架开发的二手物品回收小程序——榕壹云物品回收系统的技术实现与商业价值。通过剖析项目背景、核心技术架构、功能特性及系统优势,为开发者与潜在客户提供全面的参考指南,助力资源循环利用与…...

《软件工程》第 9 章 - 软件详细设计
目录 9.1 详细设计的任务与过程模型 9.2 用例设计 9.2.1 设计用例实现方案 9.2.2 构造设计类图 9.2.3 整合并优化用例实现方案 9.3 子系统设计 9.3.1 确立内部设计元素 9.3.2 导出设计类图 9.4 构件设计 9.5 类设计 9.5.1 精化类间关系 9.5.2 精化属性和操作 9.5.…...

WebVm:无需安装,一款可以在浏览器运行的 Linux 来了
WebVM 是一款可以在浏览器中运行的Linux虚拟机。不是那种HTMLJavaScript模拟的UI,完全通过HTML5/WebAssembly技术实现客户端运行。通过集成CheerpX虚拟化引擎,可直接在浏览器中运行未经修改的Debian系统。 Stars 数13054Forks 数2398 主要特点 完整 Lin…...

王树森推荐系统公开课 排序06:粗排模型
shared bottom 表示神经网络被所有特征共享。精排模型主要开销在神经网络,神经网络很大且很复杂。 每做一次推荐,用户塔只做一次推理。物品塔存放入向量数据库。 后期融合模型常用于召回,前期融合模型常用于精排。 物品塔短时间内比较稳…...
go并发编程| channel入门
channel 介绍 channel 是在 Go 的并发编程中使用的,这个工具的作用之一是 goroutine 之间通信(线程通信指的是多个线程之间通过共享数据或协作机制来协调操作,通常需要借助锁来保证同步)。Go 中推荐使用 channel(不同…...

PH热榜 | 2025-05-29
1. Tapflow 2.0 标语:将你的文档转化为可销售的指导手册、操作手册和工作流程。 介绍:Tapflow 2.0将各类知识(包括人工智能、设计、开发、营销等)转化为有条理且可销售的产品。现在你可以导入文件,让人工智能快速为你…...
详解GPU
详解GPU GPU(图形处理器)就像电脑里的 “图形小能手”,原本主要用来画画(渲染图形),现在还能帮忙干很多杂活(并行计算) 一、先认识 GPU 的 “钥匙”:驱动和开发工具 装驱…...
WPF【11_10】WPF实战-重构与美化(配置Material UI框架)
11-16 【UI美化】配置Material UI框架 三种比较主流的 UI 设计规范,分别是: 苹果的扁平化 UI 设计、安卓或者说谷歌 的 Material Design 以及微软的 Metro 风格。 这三种风格都极具特色,不过我们接下来将会使用的是 Material Design 。在 W…...
(自用)Java学习-5.16(取消收藏,批量操作,修改密码,用户更新,上传头像)
1. 取消收藏功能 前端实现: 用户点击“取消收藏”按钮时,前端通过变量status判断当前状态(0为未收藏,1为已收藏)。 发送AJAX请求到后端接口: 添加收藏:/favoriteise/addFavoriteise?pid商品ID…...

【Node.js】部署与运维
个人主页:Guiat 归属专栏:node.js 文章目录 1. Node.js 部署概述1.1 部署的核心要素1.2 Node.js 部署架构全景 2. 传统服务器部署2.1 Linux 服务器环境准备系统更新与基础软件安装创建应用用户 2.2 应用部署脚本2.3 环境变量管理2.4 Nginx 反向代理配置2…...

【Java Web】速通JavaScript
参考笔记:JavaWeb 速通JavaScript_javascript 速通-CSDN博客 目录 一、JavaScript快速入门 1. 基本介绍 2. JavaScript特点 3. JavaScript的引入方式(重要) 3.1 写在script标签中 3.2 以外部文件方式引入 二、JS的数据类型 1. 变量 2. 常用数据类型 3.特殊值 三、…...

TDengine 运维——巡检工具(安装前预配置)
背景 TDengine 的安装部署对环境系统有一定的依赖和要求,安装部署前需要进行环境预配置操作,本文档旨在说明安装前预配置工具在安装 TDengine 前对环境的预配置内容和工具的使用方法。 预配置工具使用方法 工具支持通过 help 参数查看支持的语法 Usa…...
C#索引器详解:让对象像数组一样被访问
索引器是C#中一个强大而实用的特性,它允许我们像访问数组一样访问类的成员。本文将全面介绍索引器的概念、语法、实现方式以及实际应用场景。 索引器基础概念 索引器(Indexer)是一组get和set访问器,与属性类似,但有以…...
机器学习课设
🎓 图像处理课程设计任务书 课程名称: 图像处理与模式识别 课设题目: 基于手工特征提取与传统机器学习方法的图像分类系统实现 一、课设目的 本课程设计旨在加深对图像处理与分类算法的理解,提升图像特征提取、传统机器学习模…...
vue 如何对 div 标签 设置assets内本地背景图片
在 Vue 中为 <div> 设置 assets 目录下的本地背景图片,需要通过 Webpack 或 Vite 等构建工具 处理路径引用。以下是详细实现方法: 一、项目结构说明 假设你的项目结构如下: src/assets/images/bg.jpg # 背景图片components/…...
wsl2 docker重启后没了
参考这篇文章:wsl2 docker重启后没了_mob64ca12f55920的技术博客_51CTO博客...
ubuntu 22.04 配置静态IP、网关、DNS
1、打开配置文件 vi /etc/netplan/00-installer-config.yaml 2、修改文件内容 # This is the network config written by subiquity network:ethernets:ens33:dhcp4: false # 禁用 dhcpaddresses:- 192.168.12.15/24 # 静态IProutes:- to: defaultvia: 192.168.12.254 …...

RDS PostgreSQL手动删除副本集群副本的步骤
由于PostgreSQL不支持直接删除副本集群,而是需要先将副本集群升级到主实例(区域集群),然后在逐一将写入器实例删除,然后才可以删除副本集群 查看现有的主从实例集群 将副本集群提升到区域集群 选择副本集群–>操作–>提升 提升只读副本…...

MySQL 自增主键重置详解:保持 ID 连续性
目录 前言正文 前言 爬虫神器,无代码爬取,就来:bright.cn Java基本知识: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新)…...
Vue Hook Store 设计模式最佳实践指南
Vue Hook Store 设计模式最佳实践指南 一、引言 在 Vue 3 组合式 API 与 TypeScript 普及的背景下,Hook Store 设计模式应运而生,它结合了 Vue 组合式 API 的灵活性与状态管理的最佳实践,为开发者提供了一种轻量级、可测试且易于维护的状态…...

国产化Word处理控件Spire.Doc教程:通过Java简单快速的将 HTML 转换为 PDF
在处理 HTML 文件时,你可能会发现它们在不同的浏览器和屏幕尺寸下的显示效果并不一致。而将 HTML 转换为 PDF 则可以有效地保留其布局和格式,从而确保内容在不同设备和平台上的呈现保持一致。本文将介绍如何在 Spire.Doc for Java 的帮助下通过 Java 将 …...
Spring AI 1.0 GA深度解析与最佳实践
随着人工智能技术的快速发展,Spring AI 1.0 GA 的发布标志着 Spring 生态在 AI 领域迈出了重要一步。本文将从原理、全景架构设计、最佳实践、性能测试对比等维度,全面解析如何基于 Spring AI 构建企业级 AI 应用,并以接入 DeepSeek 大模型为…...
Java求职面试:从Spring到微服务的技术挑战
Java求职面试:从Spring到微服务的技术挑战 在这个故事中,我们将进入一个模拟的互联网大厂Java求职者面试现场。面试官严肃而专业,而求职者谢飞机则以其幽默和捉摸不透的回答,让面试过程充满了趣味。 第一轮:基础框架…...