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

AGI大模型(5):提示词工程

1 什么是提示词工程(Prompt)

所谓的提示词其实指的就是提供给模型的⼀个⽂本⽚段,⽤于指导模型⽣成特定的输出或回答。提示词的⽬的是为模型提供⼀个任务的上下⽂,以便模型能够更准确地理解⽤户的意图,并⽣成相关的回应。

2 什么是提示⼯程(Prompt Engineering)

所谓的提示⼯程也可以被称为「指令⼯程」,提示⼯程的核⼼思想是,通过精⼼设计的提示,可以显著提⾼模型的性能和输出质量。

貌似简单,但其实意义⾮凡。(提问的智慧)

  • Prompt 是 AGI 时代的「编程语⾔」
  • Prompt 工程是 AGI时代的「软件工程]
  • 提示⼯程师是 AGI 时代的「程序员」

如果要学好提示工程,那么其实就是要知道如何对咱们的Prompt进行调优,与⼤模型进⾏更好的交互。

3 获得更好结果的6中策略(ChatGPT)

  • write clear instructions 编写清晰的说明
  • provide reference text 提供参考⽂本
  • split complex tasks into simpler subtasks 将复杂任务拆分为更简单的⼦任务
  • give the model time to think 给模型时间思考
  • use external tools 使⽤外部⼯具
  • test changes systematically 系统地测试更改

4 提示语策略差异

4.1 推理模型

  • 提示语更简洁,只需明确任务⽬标和 需求(因其已内化推理逻辑)
  • ⽆需逐步指导,模型⾃动⽣成结构化 推理过程(若强⾏拆解步骤,反⽽可能限制其能⼒)

4.2 通用模型

  • 需显式引导推理步骤(如通过CoT提示),否则可能跳过关键逻辑
  • 依赖提示语补偿能⼒短板(如要求分步思考、提供示例)

5 关键原则

5.1 模型选择

  • 优先根据任务类型⽽⾮模型热度选择(如数学任务选推理模型,创意任务选通⽤模型)

5.2 提示语设计

  • 推理模型:简洁指令,聚焦⽬标,信任其内化能⼒。(“要什么直接说”)
  • 通⽤模型:结构化、补偿性引导(“缺什么补什么”)

5.3 避免误区

  • 不要对推理模型使⽤“启发式”提示(如⻆⾊扮演),可能⼲扰其逻辑主线
  • 不要对通⽤模型“过度信任”(如直接询问复杂推理问题,需分步验证结果)

6 任务需求与提示语策略

7 常用技巧

7.1 使⽤ 清晰,明确,避免模糊的词语

在对话中包含详细信息以获得更好的答案

  • 给openai写⾸诗,⽤中⽂
  • 给openai写⼀⾸四句的中⽂诗,模仿李⽩的《望庐⼭瀑布》

7.2 ⻆⾊扮演

给我⼀个减肥的计划 VS 我想让你扮演⼀个专业的健身私⼈教练。 你应该利⽤你的运动科学知识、营养建议和其他相关因素为你的客户定制专业的计划。给我⼀个减肥的计划。

7.3 告诉⽤户的⻆⾊

怎么提⾼英语成绩? VS 我是⼀名幼⼉园的5岁⼩朋友,还不会写字。怎么提⾼英语成绩?

7.4 指定输出的格式

给openai写⼀⾸四句的中⽂诗,模仿李⽩的《望庐⼭瀑布》,输出格式为json

7.5 少样本提示

内容如下:

1. ⽣成⽂本:ChatGPT可以⽣成与给定主题相关的⽂章、新闻、博客、推⽂等等。您可以提供⼀些关键词或主题,然后ChatGPT将为您⽣成相关的⽂本。
2. 语⾔翻译:ChatGPT可以将⼀种语⾔的⽂本翻译成另⼀种语⾔。
3. 问答系统:ChatGPT可以回答您提出的问题,⽆论是事实性的问题、主观性的问题还是开放性的问题。
4. 对话系统:ChatGPT可以进⾏对话,您可以与ChatGPT聊天,让它回答您的问题或就某个话题进⾏讨论。
5. 摘要⽣成:ChatGPT可以从较⻓的⽂本中⽣成摘要,帮助您快速了解⽂章的主要内容。
6. ⽂本分类:ChatGPT可以将⼀些给定的⽂本分类到不同的类别中,例如新闻、体育、科技等等。
7. ⽂本纠错:ChatGPT可以⾃动纠正⽂本中的拼写错误和语法错误,提⾼⽂本的准确性。
请把上⾯7段话各⾃的开头⼏个词,翻译成英⽂,并按序号输出

7.6 给一个样本提示

内容如下:

1. ⽣成⽂本:ChatGPT可以⽣成与给定主题相关的⽂章、新闻、博客、推⽂等等。您可以提供⼀些关键词或主题,然后ChatGPT将为您⽣成相关的⽂本。
2. 语⾔翻译:ChatGPT可以将⼀种语⾔的⽂本翻译成另⼀种语⾔。
3. 问答系统:ChatGPT可以回答您提出的问题,⽆论是事实性的问题、主观性的问题还是开放性的问题。
4. 对话系统:ChatGPT可以进⾏对话,您可以与ChatGPT聊天,让它回答您的问题或就某个话题进⾏讨论。
5. 摘要⽣成:ChatGPT可以从较⻓的⽂本中⽣成摘要,帮助您快速了解⽂章的主要内容。
6. ⽂本分类:ChatGPT可以将⼀些给定的⽂本分类到不同的类别中,例如新闻、体育、科技等等。
7. ⽂本纠错:ChatGPT可以⾃动纠正⽂本中的拼写错误和语法错误,提⾼⽂本的准确性。
请把上⾯7段话各⾃的开头⼏个词,翻译成英⽂,并按序号输出。例如,第1段话的开头是"⽣成⽂本",那么就输出"generate text".

8 Prompt调优

找到好的 prompt 是个持续迭代的过程,需要不断调优。

⾼质量 prompt 核⼼要点:具体、丰富、少歧义

  • 简洁:尽量⽤最简短的⽅式表达问题。过于冗⻓的问题可能包含多余的信息,导致模型理解错误或答⾮所问。
  • 具体:避免抽象的问题,确保问题是具体的,不含糊。详细上下⽂:如果问题涉及特定上下⽂或背景信息,要提供⾜够的详情以帮助
  • 模型理解,即使是直接提问也不例外。
  • 避免歧义:如果⼀个词或短语可能有多重含义,要么明确其含义,要么重新表述以消除歧义。
  • 逻辑清晰:问题应逻辑连贯,避免出现逻辑上的混淆或⽭盾,这样才能促使模型提供有意义的回答。

希望你扮演⼀个写作助⼿,以“xxxxx”为主题,其中需包含以下⼏个要素:
1. 引⼈⼊胜的开头:开头是吸引读者的第⼀步,⼀段好的开头能引发读者的好奇⼼并促使他们继续阅读。
2. 提问引出主题:明确且有深度的问题能够有效地导向主题,引导读者思考。
3. 观点与案例结合:多个实际的案例与相关的数据能够为抽象观点提供直观的证据,使读者更易理解和接受。
4. 社会现象分析:关联到实际社会现象,可以提⾼⽂案的实际意义,使其更具吸引⼒。
5. 总结与升华:对全⽂的总结和升华可以强化主题,帮助读者理解和记住主要内容。
6. ⾦句收尾:有⼒的结束可以留给读者深刻的印象,提⾼⽂案的影响⼒。
7. 带有脱⼝秀趣味的开放问题:留下⼀个开放性问题,可以让读者后续继续思考。

9 Prompt 的典型构成

  • ⻆⾊:给 AI 定义⼀个最匹配任务的⻆⾊,⽐如:「你是⼀位软件⼯程师」「你是⼀位⼩学⽼师」
  • 指示:对任务进⾏描述
  • 上下⽂:给出与任务相关的其它背景信息(尤其在多轮交互中)
  • 例⼦:必要时给出举例,学术中称为 one-shot learning, few-shot learning或 in-context learning;实践证明其对输出正确性有帮助
  • 输⼊:任务的输⼊信息;在提示词中明确的标识出输⼊
  • 输出:输出的格式描述,以便后继模块⾃动解析模型的输出结果,⽐如(JSON、XML)

# ⻆⾊:你是⼀位精通简体中⽂的专业翻译
曾参与《纽约时报》和《经济学⼈》中⽂版的翻译⼯作,因此对于新闻和时事⽂章的翻译有深⼊的理解。我希望你能帮我将以下英⽂新闻段落翻译成中⽂,⻛格与上述杂志的中⽂版相似。
# 规则:
- 翻译时要准确传达新闻事实和背景。
- 保留特定的英⽂术语或名字,并在其前后加上空格,例如:"中 UN ⽂"。
- 分成两次翻译,并且打印每⼀次结果:
1. 根据新闻内容直译,不要遗漏任何信息
2. 根据第⼀次直译的结果重新意译,遵守原意的前提下让内容更通俗易懂,符合中⽂表达习惯
# 初始化
本条消息只需要回复OK,接下来的消息我将会给你发送完整内容,收到后请按照上⾯的规则打印两次翻译结果。

10 用代码完成提示工程

代码如下:

from openai import OpenAI
import os
from dotenv import load_dotenv # pip install python-dotenv
load_dotenv()
# 代理 你们不需要 直接去掉
# os.environ["http_proxy"] = "http://127.0.0.1:7897"
# os.environ["https_proxy"] = "http://127.0.0.1:7897"
client = OpenAI()
"""直接写提示词"""
# prompt = '输出⼀个九九乘法⼝诀表'
prompt = '请使⽤python语⾔ 只能利⽤for循环不能使⽤其他的语法 输出⼀个九九乘法⼝诀表并写好相应的注释'
"""对任务进⾏描述"""
instruction = """
你的任务是识别⽤户输⼊的的信息
提取出对应的时间(time),地点(Locations)、⼈物(character)
"""
"""输出"""
output = """
并以JSON格式输出
"""
# input_text = """在北京,⼩明和⼩红在下午两点钟相约去公园散步。"""
# input_text = """在本周末,我将和我的同事王五⼀起去海洋公园玩耍。"""
input_text = """今天晚上 我会和我的闺蜜⼩美⼀起去酒馆喝酒"""
"""例⼦"""
# examples = """
# 在北京,⼩明和⼩红在下午两点钟相约去公园散步。:{"Locations": "北京","character": ["⼩明", "⼩红"],"time": "下午两点钟"}
# """
examples = """
在本周末,我将和我的同事王五⼀起去海洋公园玩耍。:{"时间": "本周末","地点": "海洋公园","⼈物": ["我", "我的同事王五"]}
"""
prompt = f"""{instruction}{output}
{examples}
⽤户输⼊:
{input_text}
"""
print(prompt)
def get_completion(prompt, model="gpt-3.5-turbo"):messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,temperature=0, # 模型输出的随机性,0 表示随机性最⼩)return response.choices[0].message.content
print(get_completion(prompt))

新建.env文件

OPENAI_API_KEY="你的key"
OPENAI_BASE_URL="你的openaiUrl"

结果如下:

相关文章:

AGI大模型(5):提示词工程

1 什么是提示词工程(Prompt) 所谓的提示词其实指的就是提供给模型的⼀个⽂本⽚段,⽤于指导模型⽣成特定的输出或回答。提示词的⽬的是为模型提供⼀个任务的上下⽂,以便模型能够更准确地理解⽤户的意图,并⽣成相关的回…...

Redis Sentinel (哨兵模式)深度解析:构建高可用分布式缓存系统的核心机制

一、传统主从复制的痛点 在分布式系统架构中,Redis 作为高性能缓存和数据存储解决方案,其可用性直接关系到整个系统的稳定性。传统的主从复制架构虽然实现了数据冗余,但在面临节点故障时仍存在明显缺陷: ​手动故障转移&#xf…...

微信小程序-实现锚点跳转,页面加载后自动跳转、点击跳转到指定位置

一、页面加载后滚动到指定位置,onLoad或onReady里执行。 scrollAfterLoading() {const query wx.createSelectorQuery()query.select(#cont1).boundingClientRect()query.selectViewport().scrollOffset()query.exec(function (res) {wx.pageScrollTo({scrollTop:…...

[LeetCode热门100题]|137,260,268,面试17.19

1、137 只出现一次数字|| 1、题目描述 137 只出现一次数字||https://leetcode.cn/problems/single-number-ii/description/ 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你…...

Android子线程更新View的方法原理

对于所有的Android开发者来说,“View的更新必须在UI线程中进行”是一项最基本常识。 如果不在UI线程中更新View,系统会抛出CalledFromWrongThreadException异常。那么有没有什么办法可以不在UI线程中更新View?答案当然是有的! 一…...

Kafka常用指令(详细)

Kafka常用指令(详细) 启停命令 前台启动 前台启动命令 ./bin/kafka-server-start.sh config/server.properties 后台启动方式1 后台启动命令加上参数-daemon,窗口关闭之后kafka后台程序继续运行 ./bin/kafka-server-start.sh -daemon co…...

Golang Channel 使用详解、注意事项与死锁分析

#作者:西门吹雪 文章目录 一、引言:Channel 在 Go 并发编程中的关键地位二、Channel 基础概念深度剖析2.1 独特特性2.2 类型与分类细解 三、Channel 基本使用实操指南3.1 声明与初始化3.3 单向 Channel 的运用 四、Channel 典型使用场景实战案例4.1 协程…...

使用LiteFlow实现阻塞审批工作流

在 LiteFlow 中实现阻塞的审批工作流,你可以使用异步处理与同步逻辑结合,实现节点的等待 使用 LiteFlow 实现阻塞审批工作流 下面是如何实现一个带有阻塞审批功能的 LiteFlow 工作流示例。 1. 引入依赖 确保您的 pom.xml 文件中已引入 LiteFlow 和 S…...

2025移动端软件供应链安全开源治理方案最佳实践

2025年3月13日,由中国软件评测中心、CAPPVD漏洞库联合主办的“第六期移动互联网APP产品安全漏洞技术沙龙”在海口成功召开。悬镜安全基于移动端数字供应链安全开源治理方案荣获中国软件评测中心“2024移动互联网APP产品安全漏洞治理”优秀案例,并获颁证书…...

Git Fast-forward 合并详解:原理、场景与最佳实践

在使用 Git 进行团队协作时,我们经常需要合并分支。合并方式有很多种,其中 Fast-forward(快速合并) 是一种最简单且无冲突的合并方式。本文将详细介绍 Fast-forward 的原理、适用场景、常见问题及最佳实践。 一、Fast-forward 合并…...

《C#上位机开发从门外到门内》2-3:SPI总线协议详解及应用实践

文章目录 一、引言二、SPI总线协议的基本原理三、SPI通信模式详解 —— CPOL与CPHA3.1 时钟极性(CPOL)3.2 时钟相位(CPHA)3.3 四种SPI模式 四、主从设备通信机制4.1 通信流程概述4.2 数据帧结构与传输细节4.3 主设备与从设备的协同…...

vscode出现:No module named ‘requests‘ 问题的解决方法

问题: ① No module named requests ② pip install requests:显示已经安装成功 运行失败原因: 我的失败原因是因为:我的python环境有两个,电脑C盘默认一个、pycharm下载后在它的路径下有一个。而vscode所运行的环境…...

【openwebui 搭建本地知识库(RAG搭建本地知识库)】

安装准备 openwebui 这个本地安装之前写过使用python安装。也可以直接用docker 命令 docker run --rm -d \-p 3080:8080 \-p 3081:8081 \-e WEBUI_AUTHtrue \-e DEFAULT_LOCALEcn \-e GLOBAL_LOG_LEVEL"INFO" \-e AIOHTTP_CLIENT_TIMEOUT100 \--privilegedtrue \-…...

Docker Compose 使用笔记

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具; docker-compose.yml 文件则是 Docker Compose 用来配置应用服务的核心文件,它以 YAML 格式编写。 YAML 文件用途: 服务定义:在 docker-compose.yml 文件中&…...

雷池WAF 处理 HTTP 请求的流程

项目介绍 SafeLine,中文名 "雷池",是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、…...

JAVA-Thread类实现多线程

引言: 本章博客涉及进程线程内容,如果不了解的可以看:什么是进程线程-CSDN博客 线程是操作系统的概念,操作系统提供的API供程序员使用操作。但是不同的操作系统(Winodws、Linux、Unix……差别很大),但是做为JAVA程序员就不需要担心…...

【算法】DFS、BFS、拓扑排序

⭐️个人主页:小羊 ⭐️所属专栏:算法 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 持续更新中...1、DFS2、BFSN 叉树的层序遍历二叉树的锯齿形层序遍历二叉树最大宽度 3、多源BFS腐烂的苹果 4、拓扑排序 持续更新中…...

MySQL中 IN 到底走不走索引?

文章目录 前言数据库表结构查询sqlEXPLAIN介绍EXPLAIN 的输出每列解释 强制走索引查询时添加条件(复合索引字段)查询小时查询分钟 总结 前言 在 MySQL 中,IN 语句是否能够利用索引取决于多个因素,包括但不限于查询的具体形式、表的统计信息、索引的选择…...

centos没有ll

vi /etc/bashrc alias ll‘ls -l’ source /etc/bashrc...

腾讯云低代码开发应用

创建客户端应用 如上所示,登录腾讯云微搭低代码业务控制台,开始搭建企业官网应用 如上所示,在腾讯云微搭低代码业务控制台中,开始创建企业官网应用 如上所示,在腾讯云微搭低代码业务控制台中,开始编辑企业官…...

医疗APP开发如何实现跨机构数据互通

医疗APP开发如何实现跨机构数据互通 在数字化医疗时代,医疗APP开发已成为连接医疗机构、患者和医疗资源的重要桥梁。然而,如何实现跨机构的数据互通,成为医疗APP开发中的一大挑战。本文将探讨如何通过医疗APP开发实现跨机构数据互通,提升医疗服务效率和患者体验。我们将涵…...

深度学习项目--基于DenseNet网络的“乳腺癌图像识别”,准确率90%+,pytorch复现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 如果说最经典的神经网络,ResNet肯定是一个,从ResNet发布后,很多人做了修改,denseNet网络无疑是最成功的…...

级联树SELECTTREE格式调整

步骤&#xff1a; 1、将全部列表设置成Map<Long, List<Obejct>> map的格式&#xff0c;方便查看每个父级对应的子列表&#xff0c;减少循环次数 2、对这个map进行递归&#xff0c;重新进行级联树的集合调整&#xff0c;将子集放置在对应的childs里面。 public Dyna…...

编译RTTR 0.9.6 (CMake + vs2019)解决std::iterator对rapidjson编译事项

RTTR编译 使用CMake和VS2019 x64编译RTTR 0.9.6指南一、下载RTTR 0.9.6并配置CMake二、在VS2019上编译RTTR 0.9.6解决rapidjson与C17兼容性问题 三、安装RTTR四、最简单的还是用vcpkg 使用CMake和VS2019 x64编译RTTR 0.9.6指南 本文将指导您完成从下载RTTR 0.9.6到使用CMake生…...

深入理解JavaScript构造函数与原型链:从原理到最佳实践

一、开篇&#xff1a;为什么需要理解原型链&#xff1f; 在JavaScript开发中&#xff0c;90%以上的"诡异"bug都与原型链机制相关。理解构造函数与原型链的运行原理&#xff0c;不仅能帮助我们写出更优雅的代码&#xff0c;还能在框架源码阅读、性能优化等场景中游刃…...

【Linux 指北】常用 Linux 指令汇总

第一章、常用基本指令 # 注意&#xff1a; # #表示管理员 # $表示普通用户 [rootlocalhost Practice]# 说明此处表示管理员01. ls 指令 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xf…...

第27周JavaSpringboot 前后端联调

电商前后端联调课程笔记 一、项目启动与环境搭建 1.1 项目启动 在学习电商项目的前后端联调之前&#xff0c;需要先掌握如何启动项目。项目启动是整个开发流程的基础&#xff0c;只有成功启动项目&#xff0c;才能进行后续的开发与调试工作。 1.1.1 环境安装 环境安装是项…...

QT中的布局管理

在 Qt 中&#xff0c;布局管理器&#xff08;如 QHBoxLayout 和 QVBoxLayout&#xff09;的构造函数可以接受一个 QWidget* 参数&#xff0c;用于指定该布局的父控件。如果指定了父控件&#xff0c;布局会自动将其管理的控件添加到父控件中。 在你的代码中&#xff0c;QHBoxLa…...

.net 6.0 webapi支持 xml返回xml json返回json

// 添加控制器并配置格式化器 var builder WebApplication.CreateBuilder(); builder.Services.AddControllers(options > {options.Filters.Add<ContentTypeFilter>();options.ReturnHttpNotAcceptable true; // 强制要求Accept头匹配// 添加 XML 格式化器options.…...

docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境

docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境 docker-compose.yml services:mysql-8.0:container_name: mysql-8.0image: mysql:8.0restart: always#ports:#- "3306:3306"volumes:- ./etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro- ./var/log…...