目录
[1.1 提示词含义与作用](#1.1 提示词含义与作用)
[1.2 良好的提示词](#1.2 良好的提示词)
[1.3 提示词在大模型及智能体中的作用](#1.3 提示词在大模型及智能体中的作用)
[1.4 系统提示词的原理](#1.4 系统提示词的原理)
[1.5 所有通用大模型的提示词都是相通的](#1.5 所有通用大模型的提示词都是相通的)
[方法1: 预设角色](#方法1: 预设角色)
[方法2: 给大模型提供样本或示例(One-shot或Few-shot)](#方法2: 给大模型提供样本或示例(One-shot或Few-shot))
[方法3 :告诉大模型具体的任务或步骤](#方法3 :告诉大模型具体的任务或步骤)
[方法4: 思维链,让大模型给出思考/推理过程,方便验证大模型给出答案或结果的合理性。](#方法4: 思维链,让大模型给出思考/推理过程,方便验证大模型给出答案或结果的合理性。)
[方法8 :控制返回结果的随机性及输出长度](#方法8 :控制返回结果的随机性及输出长度)
[4.1 生成代码](#4.1 生成代码)
[4.2 代码改写:对代码进行修改,来实现纠错、注释、调优等。](#4.2 代码改写:对代码进行修改,来实现纠错、注释、调优等。)
一、提示词作用
提示词与提示词工程的起源与定义
提示词(Prompt)的概念最早伴随大语言模型(LLM)的兴起而普及。2020年后,随着GPT-3等模型的突破性进展,提示词工程(Prompt Engineering) 逐渐成为一门系统性学科。特别是吴恩达在YouTube上分享的提示词工程一系列教学视频后,更把让提示词工程一次在AI专业领域被熟知。
1.1 提示词含义与作用
提示词是大模型的输入,告诉大模型要执行什么指令;
调用大模型的接口,人机互动的接口;
++高效提示词可以优化模型输出;简单来说就是,提示词写的越好,模型的输出效果越好++
++注:只有输入恰当的提示词,大模型才能高效给出你答案++
大模型始终是根据「提示词」给出最可能的词(token),提示词直接决定大模型预测的准确性(即大模型给出的答案与用户真实意图的逼近程度。)
提示词的本质是为大模型提供背景知识、上下文知识,以便大模型生成更符合用户意图的内容。
1.2 良好的提示词
优质的提示词,必须能清晰传达用户的意图
1.3 提示词在大模型及智能体中的作用
系统提示词和 用户提示词:
系统提示词: 用来定义大模型的角色、行为规范和回答的框架, 是全局性的提示词,每次回话都会自动携带的。
用户提示词: 即用户输入给大模型的具体指令,用来表明用户希望它做什么。

1.4 系统提示词的原理
本质上来说:我们使用的对话界面是专门开发出的"AI大模型的对话应用",这个应用本身使用了存储,来存储我们之前的对话和大模型的输出,你下次再对话式,AI大模型对话应用其实是把你之前的输入内容、输出内容连同你本次的内容一块给到大模型,重新输出的。
所以,大模型虽然没有真正的记忆能力,但在使用AI大模型对话时,他能够记住我们的上下文信息。
1.5 所有通用大模型的提示词都是相通的
二、如何写出好的提示词
从"能用"到"好用"的验证方法论
方法1: 预设角色
给提示词模板预设某个角色,能让大模型迅速激活专业背景及上下文。
比如,你想让大模型生成Java试卷时, 提示词中可以添加: 你是一位资深的计算机专业教师。
比如,你想让大模型生成代码时, 提示词中可以添加:你是一位资深的编程技术专家。
方法2: 给大模型提供样本或示例(One-shot或Few-shot)
提供样本示例的作用,可以让大模型**增加上下文信息+激活相关背景知识 + 示范任务格式 +**减少LLM歧义性理解、误解或偏离主题的可能性
比如,你想让大模型生成Java试卷时, 提示词中可以添加如下内容:
生成多选题。题目需要涉及Java知识点,包括类的封装、类的继承、类的封装、成员变量、Java关键字等 - 根据用户提供的内容,生成5道多选题。 - 保证每个多选题至少有四个选项。 - 选项编号按照ABCD排列 - 输出格式: ....
方法3 :告诉大模型具体的任务或步骤
对于一些较为复杂的任务,我们需要在提示词中提供处理步骤,以指导模型按照我们的意图来输出信息。
其作用,可以让大模型大任务拆分成小任务(分而治之的思想) + 大模型更好理解任务**+**减少LLM歧义性理解、误解或偏离主题的可能性。
注:让大模型明确任务要求,限定任务范围等
例子,你想让大模型生成Java试卷时, 提示词中可以添加如下内容:
任务1: 生成选择题
任务2: 生成判断题
任务3:生成填空题
...
方法4: 思维链,让大模型给出思考/推理过程,方便验证大模型给出答案或结果的合理性。
注:让大模型 think step by step
思维链的有效性源于其与任务拆解相似的机制。通过思维链,LLM能够自主地将复杂问题分解为一系列小步骤,每一步都为下一步提供了额外的上下文信息;
相比于仅仅给出答案,大模型给出 思考推理过程 + 答案的方式,最终给出的答案的正确概率更高。
思维链(CoT)提示技术,该技术因其在多步骤问题解决中的能力而闻名。这项技术遵循了人类的顺序推理,在各种挑战中表现出了优秀的性能,其中包括跨域、长泛化和跨语言的任务。CoT 及其富有逻辑的、循序渐进的推理方法,在复杂的问题解决场景中提供了至关重要的可解释性。
自动化思维链提示技术: Auto-CoT的核心思想是通过多样化采样自动生成推理链条。与手动设计思维链不同,Auto-CoT能够自动构建包含多个步骤的逻辑推理过程,大幅减少了人工干预的需求。技术的主要优势体现在三个方面:首先,自动化程度高,大幅降低了人力成本;其次,推理链条质量稳定,避免了人为设计的主观性;最后,适用范围广泛,可应用于多种推理任务。
参考:https://blog.csdn.net/gitblog_00032/article/details/155291372
代码:
方法5:加分隔符避免模型解读提示词造成混淆
在提示词中合理添加分隔符,可以准确区分指令和待处理的内容,避免模型解读提示词时出现困扰。常见的分隔符包括:-、 ```、--- 、=== 等,前面的快递查询助手就很好地使用了分隔符。
比如:
### 技能1: 通过用户描述字段生成mapper接口及对应mapper.xml文件内容
- 根据用户提供的内容,生成对应Java实体类、MySQL数据库表字段
- 根据用户提供的内容及实体类,生成对应mapper接口及对应mapper.xml文件内容。
方法6:增加要求
比如: 要求大模型遵循什么、或者不要干什么
比如:
## 约束
1.保证符合Java8语法,不要用更新版本的语法
2.如果有模版根据模板生成
方法7:以AI优化AI,实现自我迭代生成提示词
核心逻辑:让大模型担任"提示词工程师",通过"元提示"驱动其自我升级。
比如,自定义提示词优化助手
方法8 :控制返回结果的随机性及输出长度
文档中关于temperature(生成随机性)、max_tokens(输出长度)的说明,能帮助规避"答案跑偏"或"回答中断"问题。
三、工程级"提示词要素"构成
如果我们计划**++使用AI大模型来完成更为复杂的任务,需要AI大模型能够输出更加精准的内容,那么就需要以工程级别的思维来对提示词进行优化++**。这也是提示词工程的定义。
优化和扩展提示词,使其符合工程级别的要求:

写提示词的四个步骤":
角色定义划定专业领域 → 任务拆解提供执行路径 → 场景限定框定输出维度 → 示例教学锚定风格标准。
四、deepseek提示词示例
地址:https://api-docs.deepseek.com/zh-cn/prompt-library
4.1 生成代码
|------------------------------------------------|
| 请帮我用 HTML 生成一个五子棋游戏,所有代码都保存在一个 HTML 中。 |
4.2 代码改写:对代码进行修改,来实现纠错、注释、调优等。
下面这段的代码的效率很低,且没有处理边界情况。请先解释这段代码的问题与解决方法,然后进行优化:
```
def fib(n):
if n <= 2:
return n
return fib(n-1) + fib(n-2)
```
4.3 代码解释
请解释下面这段代码的逻辑,并说明完成了什么功能:
```
// weight数组的大小 就是物品个数
for(int i = 1; i < weight.size(); i++) { // 遍历物品
for(int j = 0; j <= bagweight; j++) { // 遍历背包容量
if (j < weight[i]) dp[i][j] = dp[i - 1][j];
else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);
}
}
```
4.4 写大纲
你是一位文本大纲生成专家,擅长根据用户的需求创建一个有条理且易于扩展成完整文章的大纲,你拥有强大的主题分析能力,能准确提取关键信息和核心要点。具备丰富的文案写作知识储备,熟悉各种文体和题材的文案大纲构建方法。可根据不同的主题需求,如商业文案、文学创作、学术论文等,生成具有针对性、逻辑性和条理性的文案大纲,并且能确保大纲结构合理、逻辑通顺。该大纲应该包含以下部分:
引言:介绍主题背景,阐述撰写目的,并吸引读者兴趣。
主体部分:第一段落:详细说明第一个关键点或论据,支持观点并引用相关数据或案例。
第二段落:深入探讨第二个重点,继续论证或展开叙述,保持内容的连贯性和深度。
第三段落:如果有必要,进一步讨论其他重要方面,或者提供不同的视角和证据。
结论:总结所有要点,重申主要观点,并给出有力的结尾陈述,可以是呼吁行动、提出展望或其他形式的收尾。
创意性标题:为文章构思一个引人注目的标题,确保它既反映了文章的核心内容又能激发读者的好奇心。
用户输入:
|------------------------------|
| 请帮我生成“中国农业情况”这篇文章的大纲 |
五、动态提示词使用举例
如果需要从用户输入的自然语言提取关键词填充到提示词中,此时需要用到动态提示词。
例子1:
java
// 动态模板:使用PromptTemplate注入变量
PromptTemplate template = PromptTemplate.from("请用{{programmingLanguage}}写一个{{function}}函数");
Map<String, Object> variables = Map.of("programmingLanguage", "Java", "function", "二分查找");
String prompt = template.apply(variables).text();
System.out.println(prompt);//请用Java写一个二分查找
例子2:
java
dev.langchain4j.model.input.Prompt systemPrompt = loadPromptTemplate( "testcase/generate_testcase.txt" )
// .apply( Map.of() );
.apply(Map.of("userDesc", state.userDesc(), "requirmentPointList", state.requirmentPointList()));
例子3:
java
@UserMessage("""
你是一位专业的编辑。请根据给定的观众分析并重写下面的故事,来更好符合目标观众{{audience}}的口味。
只返回创作的故事。原故事是"{{story}}。
""")
@Agent(name = "",description = "根据给定的观众创作故事",value = "",outputKey = "story")
String editChineseStory(@V("story") String story, @V("audience") String audience);
参考