prompt提示词编写技巧

为什么学习prompt编写

目的:通过prompt的编写,提升LLM输出相关性、准确性和多样性,并对模型输出的格式进行限制,满足我们的业务需求。

  • 学过提示词工程的人:像“专业导演”,通过精准指令控制 AI 输出,结果稳定、高效、可复用。

  • 未学习的人:像“观众”,被动接受 AI 的随机发挥,结果质量依赖运气。

编写好的prompt的关键点:

  1. 自身对需求的精准洞察(内功)

  2. 通过一些约束次,保证结果质量的稳定性(技巧)

比如:当我询问DeepSeek,介绍一下GMP中的P,使用不同的prompt会给出不同的回答。

这两者的关键在于我使用了一些技巧,对模型的输出进行限制。下面我们就来看看可以通过那些技巧的控制,来让模型输出相关性的回答。

编写原则

原则一:编写清晰、具体的指令:

策略一:如果需要多个输入,使用分隔符清晰表示输入的不同部分

分隔符可以是:```""<>\<tag><\tag>:等。

策略二:明确输出的格式

  • JSON:指定包含的键;

  • HTML

  • Markdown

  • Plain Text

策略三:要求模型检查是否满足条件

如果符合条件如何处理;如果不符合条件呢?

策略四:少样本学习,提供示例:

有些类似于小学的仿写例句。 Few-shot-Learning

原则二:给模型时间去思考

策略一:将复杂任务拆分成多个步骤

策略二:指导模型在下结论之前先找出一个自己的解法

有时候,在明确指导模型在做决策之前要思考解决方案时,我们会得到更好的结果。

防止模型直接被我们的结论误导。

话术模版

  1. 设定角色+分步指令+参考示例+输出限制。

  2. 你是一个Prompt提示词专家,帮我编写一个文本校对方面的提示词。

一个比较完整的例子:

你是一名专业的转录校对排版员,具有计算机专业背景。你将负责对<>括号中的面试音频的转录文本进行纠偏和排版。请根据以下要求处理文本:
任务要求:
1.输入内容:一段面试对话的转录文本,以分割符<>形式给出。
2.专业领域:计算机相关(包括但不限于Go语言、计算机网络、操作系统、MySQL、Redis、设计模式等)。
3.修正范围:
  - 修正明显的识别错误(如"买色扣" → "MySQL")
  - 修正专业术语错误(如"哥routine" → "goroutine")
  - 保留所有的口语化表达,包括面试者的口头禅(如"呃"、"这个" 、 "然后" 、 "就是" 不修改)
  - 不改变原意,仅优化表达清晰度。
4.添加内容:
  - 根据上下文内容,划分面试官和面试者的角色(如果存在多个面试官,用面试官A、面试官B进行划分),每个角色说的内容,独立成段。
5.输出格式:
  - 使用Plain Text格式直接输出校正和添加角色后的文本
6.特别注意的术语(举例但不限于):
  - Go语言:goroutine、channel、GC、interface、defer、pprof、protoBuf、Gin、GORM、Go-Zero
  - 数据库:MySQL、Redis、索引、事务、ACID、持久化、undolog、redolog、MVCC
  - 网络:TCP/IP、HTTP/HTTPS、DNS、Socket、三次握手、四次挥手
  - 系统:进程/线程、死锁、虚拟内存、epoll、IO多路复用
示例输入 & 输出:
输入:
你能说说Go里的哥routine吗?好的,哥routine相当于是用户态的现成,但更轻量。  
输出:
面试官:你能说说Go里的哥routine吗?
面试者:好的,goroutine相当于是用户态的线程,但更轻量。

迭代优化

有一个关于要完成的任务的想法,可以尝试编写第一个 Prompt,要满足上面提到的两个原则:清晰明确,并且给系统足够的时间思考,然后运行它并查看结果。

如果第一次效果不好,那么迭代的过程就是找出为什么指令不够清晰或为什么没有给算法足够的时间思考,以便改进想法、改进提示等等,循环多次,直到找到适合您的应用程序的Prompt。

开发者需要先尝试编写提示,然后通过迭代逐步完善它,直至得到需要的结果。关键在于拥有一种有效的开发 Prompt 的过程,而不是知道什么是完美的 Prompt。

应用场景:

  • 文本概括

  • 关键字信息提取

  • 文本推断:使用简单的prompt而非机器学习算法来进行文本推断(情绪、主题内容)

  • 文本转换:多语种文本翻译、语气调整、格式转换、拼写及语法纠正

结语:

  1. 自己想象成老板,LLM想象成一个能力很强但理解能力比较差的实习生。每次沟通的时候,要给出明确的指令,问题是什么?大方向上的解决步骤是什么?想要得到什么输出结果?等等

  2. 多实验,多测试,从不符合自己预期的输出中,一步一步迭代自己的prompt。

参考资料:

  1. 面向开发者的Prompt工程

### Prompt 提示词工程使用的语法解析 #### ### 1. Prompt 的基本结构 Prompt编写通常遵循一种结构化的方式,包含以下关键部分[^1]: - **上下文(Context)**:为模型提供背景信息,帮助其理解问题的具体场景。 - **指令(Instruction)**:明确告诉模型需要完成的任务或生成的内容。 - **约束条件(Constraint)**:限制输出的格式、长度、风格等。 ```plaintext <context>作为一位专业的软件工程师</context> <instruction>请用通俗易懂的语言解释什么是微服务架构</instruction> <constraint>字数不超过200,使用比喻说明</constraint> ``` #### ### 2. 编写技巧与方法 以下是常见的提示词设计技巧及其语法实现方式[^1]: - **细节法**:通过提供更具体的细节和要求来引导模型生成高质量内容。 ```plaintext <instruction>详细描述如何在Python中实现二分查找算法</instruction> <constraint>包括代码示例和复杂度分析</constraint> ``` - **分解法**:将复杂的任务拆解为多个简单的子任务,逐步引导模型完成整个任务。 ```plaintext <instruction>第一步:定义二分查找的基本原理</instruction> <instruction>第二步:用伪代码表示算法逻辑</instruction> <instruction>第三步:转换为Python代码实现</instruction> ``` - **记忆法**:通过系统级提示(System Prompt)确保模型始终记住任务的核心目标。 ```plaintext <system>你的任务是帮助用户解决编程相关的问题,并始终保持专业性和准确性</system> ``` - **解释法**:要求模型在回答之前先进行推理或解释。 ```plaintext <instruction>在解释之前,请先说明为什么二分查找比线性查找更高效</instruction> ``` - **投票法**:让模型生成多个候选答案,然后选择最佳结果。 ```plaintext <instruction>生成三种不同的二分查找实现方式</instruction> <constraint>从性能角度选择最优方案</constraint> ``` - **示例法**:提供输入输出示例以帮助模型理解任务需求。 ```plaintext <example>输入: [1, 3, 5, 7, 9], 目标值: 5</example> <output>输出: 索引位置为2</output> ``` #### ### 3. 结构化 Prompt 示例 以下是一个完整的结构化 Prompt 示例,结合了多种设计技巧[^1]: ```plaintext <system>你是经验丰富的数据科学家,专注于机器学习模型的优化</system> <context>假设你正在处理一个分类问题,数据集包含1000个样本,特征维度为50</context> <instruction>详细说明如何选择合适的机器学习算法并进行超参数调优</instruction> <constraint>包括至少两种算法对比,并提供代码示例</constraint> <example>输入: 特征矩阵X,标签向量y</example> <output>输出: 最佳模型及评估指标</output> ``` #### ### 4. 注意事项 - **避免歧义**:确保 Prompt 的每个部分都清晰无误,减少模型的猜测空间。 - **平衡具体性和灵活性**:过于具体可能导致模型无法泛化,而过于宽泛则可能产生不相关的结果。 - **测试与迭代**:不断测试 Prompt 的效果,并根据实际需求调整其结构和内容。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值