提示词工程
Prompt 是一种在自然语言处理(NLP)中用于引导语言模型生成特定类型文本的技术。它的基本原理是通过向语言模型提供一个包含任务相关信息的输入文本片段(即 Prompt),利用语言模型在预训练阶段学到的语言知识和模式,引导模型生成符合预期的输出。例如,对于一个文本生成任务,Prompt 可以是一个问题、一个主 题描述或者一个部分完成的句子,模型会根据这个 Prompt 来续写或生成完整的文本。
https://blog.csdn.net/qq_56438555/article/details/144886517
1 提示词案例
1.1 翻译软件
可以通过提示词的设计让大模型变为翻译工具

1.2 让Deepseek绘画
Deepseek本身是没有提供绘画功能的,可以通过提示词的功能增强。让大模型具备生成图片的功能。
1 | |



1.3 生成数据
还可以通过提示词生成各种的测试数据。简化很多的操作,比如
1 | |

上面获取到的是json格式的数据。也可以让大模型把数据转换为 insert into 语句的数据,这样更加方便直接使用
1 | |

1.4 代码生成
很多时候需要通过代码实现各种复杂的功能,这往往会比较耗费时间和精力, 现在也可以通过提示词来让大模型直接生成满足需要的代码。直接拷贝过去就可以了。比如提示词是
1 | |

2 提示词介绍
分享两个网站:
- https://www.promptingguide.ai/zh/applications/coding
- https://platform.openai.com/docs/guides/prompt-engineering#strategy-write-clear-instructions
Prompt 是一种人为构造的输入序列,用于引导 GPT 模型根据先前输入的内容生成相关的输出。简单来说,就是你向模型提供的 “提示词”。在 ChatGpt 中,我们可以通过设计不同的 prompt,让模型生成与之相关的文本。例如,假设我们想让 ChatGpt 担任英语翻译。我们可以给模型提供以下 prompt:
1 | |
如何来写好提示词呢
https://github.com/mattnigh/ChatGPT3-Free-Prompt-List
CRISPE Prompt Framework,CRISPE 是首字母的缩写,分别代表以下含义:
CR:Capacity and Role(能力与角色),你希望 ChatGPT 扮演怎样的角色。
I:Insight(洞察),背景信息和上下文。
S:Statement(陈述),你希望 ChatGPT 做什么。
P:Personality(个性),你希望 ChatGPT 以什么风格或方式回答你。
E:Experiment(实验),要求 ChatGPT 为你提供多个答案。
github 上的那些prompt 角色大全基本都是 CRISPE 框架。

先定角色,后说背景,再提要求,最后定风格。是否生成多个例子可以看自己喜好。
Prompt = 角色 + 指令 + 期望 + 内容
Prompt的重要性
合理使用 prompt 可以为 ChatGpt 带来很多好处。以下是一些例子:
提高生成准确性:通过正确的 prompt 引导,模型能够更好地理解用户的意图, 从而生成更加准确的文本。
增强自由度:通过多种不同的 prompt,可以让模型生成各种各样的文本,增强了模型的表现力和自由度。
提高效率:如果已经知道要生成的文本大致内容,通过正确的 prompt 可以让模型更快地生成出想要的结果。
3 Prompt Engineering最佳实践
定义:Prompt Engineering 是设计和优化输入提示(prompt)以获得预期输出的过程。在与大型语言模型(如 GPT-4)交互时,如何构造提示会显著影响模型的回答质量。
例子:
~ 简单提示: “告诉我关于猫的事情。”
~ 优化提示: “请详细描述猫的生物学特征、行为习惯以及它们在不同文化中的象征意义。”
通过优化提示,用户可以引导模型生成更详细和有用的回答。Prompt Engineering 是设计和优化输入提示以获得预期输出的过程。为了在使用大型语言模型(如 GPT-4)时获得最佳结果,以下是一些最佳实践:
明确目标
最佳实践:明确你希望模型完成的任务或回答的问题。
实例:
目标不明确:“告诉我关于气候变化的事情。”
目标明确:“请简要描述气候变化的主要原因及其对农业的影响。”
提供上下文
最佳实践:为模型提供必要的背景信息或上下文,以帮助其理解任务。
示例:
- 无上下文: “解释一下微积分。”
- 有上下文: “作为一名高中生,我正在学习微积分。请用简单的语言解释一下微积分的基本概念。”
使用具体的指示
最佳实践:使用明确的指示和要求,避免模糊不清的提示。
示例:
- 模糊指示:“写一篇关于技术的文章。”
- 具体指示:“请写一篇关于人工智能在医疗领域应用的文章,包含以下几点:应用场景、 优势和挑战。”
提供示例
最佳实践:通过提供示例来展示你期望的输出格式或内容。
示例:
- 无示例: “生成一个关于产品的报告。”
- 有示例: “生成一个关于产品的报告,格式如下:\n\n- 产品名称:\n- 价格:\n- 特 点:\n- 优点:\n- 缺点:”
使用分步指示
最佳实践:对于复杂任务,分解为多个步骤,逐步引导模型完成。
示例:
- 一步完成: “解释并解决这个数学问题:2x + 3 = 7。”
- 分步指示: “首先,解释如何解方程。然后,解方程2x + 3 = 7。”
控制输出长度
最佳实践:通过提示控制输出的长度,确保内容简洁或详细。
示例:
- 无长度控制: “解释一下量子力学。”
- 有长度控制: “用不超过100字解释量子力学的基本概念。”
使用占位符和模板
最佳实践:使用占位符和模板来指示需要填充的内容或格式。
示例:
- 无模板: “生成一个用户注册表单。”
- 有模板: “生成一个用户注册表单,包含以下字段:用户名、密码、邮箱、电话号码。”
反复试验和调整
最佳实践:不断试验和调整提示,观察模型的输出,并根据需要进行优化。
示例:
- 初始提示: “描述一下Python编程语言。”
- 调整提示: “描述一下Python编程语言的主要特点和常见应用场景。”
指定输出格式
最佳实践:明确指定输出格式,确保生成内容符合预期。
示例:
- 无格式指定: “生成一个关于公司财务状况的报告。”
- 有格式指定: “生成一个关于公司财务状况的报告,格式如下:\n\n1. 收入:\n2. 支 出:\n3. 净利润:\n4. 财务分析:”
使用多轮对话
最佳实践:在需要时,通过多轮对话逐步引导模型生成所需内容。
示例:
- 单轮对话: “告诉我关于Python编程的所有信息。”
- 多轮对话:
- 用户: “告诉我Python编程的主要特点。”
- 模型: “Python是一种高级编程语言,具有易读性、广泛的库支持和跨平台兼容 性。”
- 用户: “请详细描述Python的常见应用场景。”
- 模型: “Python常用于Web开发、数据科学、人工智能、自动化脚本和软件开发。”
使用反思和迭代
最佳实践:在生成初步答案后,反思并可能修改其回答,以提高准确性和质量。
示例:
- 初步回答: “Python是一种编程语言。”
- 反思和修改: “Python是一种高级编程语言,广泛用于Web开发、数据科学、人工智能等领域,因其易读性和丰富的库支持而受到欢迎。”
4 Prompt Engineering 进阶
java代码的封装
1 | |
1 | |
4.1 零样本提示

定义:零样本提示(Zero-shot) 是指模型在没有任何示例的情况下完成任务。模型必须依靠其预训练知识和提示来生成答案。
例子:
- 提示: “翻译这句话:’The cat is on the roof.’”
- 回答: “猫在屋顶上。”
模型没有看到过具体的翻译示例,但仍然能够正确翻译句子。 这种方法的优势是任务通用性高,可以快速应用于各种新任务,而且能够节省训练资源和时间,也不会消耗特别多的Token。但由于没有针对特定任务进行训练,模型只能依靠预训练知识和推理能力,所以生成内容的准确性可能不如经过特定任务训练的模型。例如,在专业领域的知识问答任务中,零样本提示可能会因为模型对专业术语的理解不够准确或者缺乏专业知识细节,而生成不太准确的答案。
4.2 少样本提示
https://juejin.cn/post/7257441472446038071

定义:少样本提示(Few-shot) 是指模型在完成任务之前,先提供几个示例来帮助模型理解任务。
例子:
- 提示: “翻译以下句子:’The dog is in the garden.’ -> ‘狗在花园里。’ ‘The bird is in the tree.’ -> ‘鸟在树上。’ ‘The cat is on the roof.’ ->”
- 回答: “猫在屋顶上。” 通过提供几个翻译示例,模型可以更准确地完成翻译任务。
相较于零样本提示,少样本提示能够提供更具体的任务信息,帮助模型更好地理解任务要求,从而提高任务性能。而且与传统的有监督训练需要大量的标注数据不同,少 样本提示只需要少量的精心选择的示例即可,这对于数据获取困难或成本高昂的任务非常有利。 但是,少样本提示的效果对示例的选择非常敏感。示例的质量、多样性、代表性等因 素都会影响模型的学习效果。如果示例过于简单或复杂、缺乏代表性或者存在错误,都可能导致模型学习到错误的任务模式。除此之外,这样做的代价是消耗更多的token,并且当输入和输出文本较长时,可能会达到上下文长度限制。
以相同的情感导向判别任务为例,利用少样本提示进行模型测试:
1 | |

尽管少样本提示能够提高模型在特定任务上的性能,但与经过大量数据充分训练的模型相比,其性能仍然有限。在一些复杂任务中,如复杂的逻辑推理、高精度的翻译等任务,少样本提示可能无法满足要求,仍然需要更多的训练数据和精细的训练方法来进一步提升模型性能。
4.3 链式思考(CoT)提示
定义:链式思考(Chain-of-Thought) 是一种提示技术,通过展示模型思考过程的步骤来解决复杂问题。这种方法可以帮助模型更好地推理和生成答案。
1 | |
输出
1 | |
提示
1 | |
输出
1 | |

标准的prompt
Q:罗杰有5个⽹球。他⼜买了2罐网球。每个罐⼦有3个⽹球。有多少他现在有多少个网球?
A:答案是11个
Q:自助餐厅有23个苹果。如果他们用20做午餐,又买了6个,他们有多少个苹果?
A:答案是27个
链式思考的prompt
Q:罗杰有5个网球。他又买了2罐网球。每个罐子有3个网球。他现在有多少个网球?
A:罗杰⼀开始有5个球。2罐3个网球,等于6个网球。5 + 6 = 11。答案是11。
Q:自助餐厅有23个苹果。如果他们用20做午餐,又买了6个,他们有多少个苹果?
A:自助餐厅最初有23个苹果。他们使用20个做午饭。23 - 20 = 3。他们又买了 6个苹果,得到3 + 6= 9。答案是9个。
该方法通过提供中间推理步骤实现了复杂的推理能力,可以结合少样本提示方法引导 模型得到更加准确合理的输出,例如:
1 | |
输入给Chatgpt后得到的结果如下:

零样本 COT 提示

具体的案例

自动思维链(Auto-CoT)
生活中的场景这么多,如果每个场景都写个思维链,岂不要累死,于是Amazon Science团队提出了自动思维链(Auto-CoT)的概念,它通过自动化流程构建“让我们一步步思考”的思维过程,以提高模型在复杂推理任务中的表现。
自动思维链(Auto - CoT)是一种在自然语言处理领域,特别是针对复杂任务推理的自动化技术。它是思维链(CoT)方法的一种扩展,旨在自动生成思维链提示,而不是像传统 CoT 那样依赖人工设计的带有推理步骤的示例。其核心目标是通过自动化手段,让语言模型能够自动生成连贯的推理步骤来解决复杂问题,进一步提升模型在复杂任务中的性能。

具体的例子
1 | |
输入给Chatgpt后得到的结果如下:

4.4 自我一致性
自我一致性旨在“替换链式思维提示中使用的天真贪婪解码方法”。其想法是通过少样本 CoT 采样多个不同的推理路径,并使用生成结果选择最一致的答案。这有助于提高 CoT 提示在涉及算术和常识推理的任务中的性能。

4.5 ReAct
定义:ReAct 是一种结合反应(Reaction)和行动(Action)的提示技术,通常用于交互式任务或复杂决策。
例子:
- 提示:”你是一个虚拟助手。用户问:’我今天应该穿什么衣服?’ 你需要根据天气情况给出建议。步骤1:查询天气。步骤2:根据天气给出建议。
- 回答:
- 步骤1:”查询天气:今天的天气是晴天,温度在25-30度之间。”
- 步骤2: “建议:今天适合穿轻便的夏装,比如T恤和短裤。”
通过分步骤反应和行动,模型可以更有效地完成复杂任务。这块需要结合后面讲解的 SpringAI等框架来实现。
4.6 Prompt Chaining
定义:Prompt Chaining 是将多个提示串联起来,以分步解决复杂问题或完成多步骤任务。
例子:
- 任务:写一篇关于气候变化的文章
- 提示链:
- “首先,简要介绍什么是气候变化。”
- “接下来,描述气候变化的主要原因。”
- “然后,讨论气候变化的影响。”
- “最后,提出应对气候变化的建议。”
通过将任务分解为多个步骤,模型可以更系统和有条理地完成复杂任务。这些技术和方法帮助用户更有效地与大型语言模型互动,获得更高质量的输出。另一个例子:
1 | |
4.7 思维树(ToT)
对于需要探索或预判战略的复杂任务来说,传统或简单的提示技巧是不够的。思维树基于思维链提示进行了总结,引导语言模型探索把思维作为中间步骤来解决通用问题。
ToT 维护着一棵思维树,思维由连贯的语言序列表示,这个序列就是解决问题的中间步骤。使用这种方法,LLM 能够自己对严谨推理过程的中间思维进行评估。LLM 将生成及评估思维的能力与搜索算法(如广度优先搜索和深度优先搜索)相结合,在系统性探索思维的时候可以向前验证和回溯。

思维树的推理流程为:
- 语义理解:对输入的文本进行语义理解,将自然语言转换为计算机能够理解的形式,通常会使用一系列预训练的语义表示模型,如 BERT、GPT 等,来对输入文本进行编码和表示,从而捕捉到输入文本中的语义信息。
- 构建思维树:基于对输入文本的语义表示,构建一个思维树,以表示文本中的不同思维路径和关系。这个过程涉及到树状结构的设计和构建算法。
- 路径选择:在生成输出文本时,根据输入文本和构建的思维树选择合适的思维路径。该过程通常涉及到路径搜索算法,以确定最相关和最合适的思维路径,ToT 可以考虑到多个可能的思维路径,并根据输入文本的不同语义信息动态调整路径选择策略。
- 整合信息:选择了合适的思维路径后,从不同路径中获取信息,并将其整合起来,形成一个综合的理解。此过程涉及到信息融合和加权的算法,以确保生成的输出文本能够考虑到多个因素和可能性。
- 生成输出:根据整合的信息生成输出文本,通常采用生成式模型,如 GPT,来生成连贯、自然的文本。ToT 会根据整合的信息和选择的思维路径来指导文本生成过程,以生成准确、多样化的输出。
案例:
1 | |