├── .gitignore
├── docs
├── _sidebar.md
├── chapter2
│ └── chapter2.md
├── chapter3
│ └── chapter3.md
├── chapter4
│ └── chapter4.md
├── chapter5
│ └── chapter5.md
└── chapter1
│ └── chapter1.md
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | **/.DS_Store
2 |
--------------------------------------------------------------------------------
/docs/_sidebar.md:
--------------------------------------------------------------------------------
1 | - [第1章 关于提示词的开胃前菜](chapter1/chapter1.md)
2 | - [1.1 提示词的定义](chapter1/chapter1.md#11-提示词的定义)
3 | - [1.2 提示词的本质](chapter1/chapter1.md#12-提示词的本质)
4 | - [1.3 写好提示词的四大要素](chapter1/chapter1.md#13-写好提示词的四大要素)
5 | - [1.4 总结](chapter1/chapter1.md#14-总结)
6 | - [第2章 语义压缩类提示词](chapter2/chapter2.md)
7 | - [2.1 概念界定和原理](chapter2/chapter2.md#21-概念界定和原理)
8 | - [2.2 语义压缩类提示词的分类](chapter2/chapter2.md#22-语义压缩类提示词的分类)
9 | - [2.3 总结](chapter2/chapter2.md#23-总结)
10 | - [第3章 思维链类提示词](chapter3/chapter3.md)
11 | - [3.1 概念界定和原理](chapter3/chapter3.md#31-概念界定和原理)
12 | - [3.2 思维链类提示词的分类](chapter3/chapter3.md#32-思维链类提示词的分类)
13 | - [3.3 总结](chapter3/chapter3.md#33-总结)
14 | - [第4章 小样本类提示词](chapter4/chapter4.md)
15 | - [4.1 概念界定和原理](chapter4/chapter4.md#41-概念界定和原理)
16 | - [4.2 实践应用与示例](chapter4/chapter4.md#42-实践应用与示例)
17 | - [4.3 总结](chapter4/chapter4.md#43-总结)
18 | - [第5章 元提示词](chapter5/chapter5.md)
19 | - [5.1 概念界定和原理](chapter5/chapter5.md#51-概念界定和原理)
20 | - [5.2 用元提示词写提示词](chapter5/chapter5.md#52-用元提示词写提示词)
21 | - [5.3 总结](chapter5/chapter5.md#53-总结)
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # “听话的”提示词构建教程
2 |
3 | ## 项目背景
4 |
5 | 本教程面向不熟悉LLM的作用机制,但想要构建让LLM“听话”,能够输出符合自己要求内容的提示词的初学者。
6 | 本教程旨在帮助初学者快速上手提示词构建,并掌握提示词构建的技巧。
7 |
8 | ## Roadmap
9 |
10 | - [x] “语义压缩”类提示词
11 | - [x] “思维链”类提示词
12 | - [x] “小样本”类提示词
13 | - [x] 元提示词构建提示词
14 |
15 | ## 参与贡献
16 |
17 | - 如果你想参与到项目中来欢迎查看项目的 [Issue](https://github.com/anarchysaiko/awesome-llm-prompts-tutorial/issues) 查看没有被分配的任务。
18 | - 如果你发现了一些问题,欢迎在 [Issue](https://github.com/anarchysaiko/awesome-llm-prompts-tutorial/issues) 中进行反馈🐛。
19 | - 如果你对本项目感兴趣想要参与进来可以通过 [Discussion](https://github.com/anarchysaiko/awesome-llm-prompts-tutorial/discussions) 进行交流💬。
20 |
21 | 如果你对 Datawhale 很感兴趣并想要发起一个新的项目,欢迎查看 [Datawhale 贡献指南](https://github.com/datawhalechina/DOPMC#%E4%B8%BA-datawhale-%E5%81%9A%E5%87%BA%E8%B4%A1%E7%8C%AE)。
22 |
23 | ## 贡献者名单
24 |
25 | | 姓名 | 职责 | 简介 |
26 | | :----| :---- | :---- |
27 | | Anarchy | 项目负责人 | 公共管理专业的llm开源项目构建者 |
28 |
29 | ## 关注我们
30 |
31 |
32 |
扫描下方二维码关注公众号:Datawhale
33 |

34 |
35 |
36 | ## LICENSE
37 |
38 | 
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
39 |
40 | *注:默认使用CC 4.0协议,也可根据自身项目情况选用其他协议*
41 |
--------------------------------------------------------------------------------
/docs/chapter2/chapter2.md:
--------------------------------------------------------------------------------
1 | # 第2章 语义压缩类提示词
2 |
3 | ## 2.1 概念界定和原理
4 |
5 | 上一章中我们提到过,**我们写作提示词,就是要提升LLM准确生成用户期望结果的能力,让LLM更懂用户**。
6 |
7 | 语义压缩类提示词,实际上是带有**很强指向性**的关键词或短语,这类关键词或短语通常是与**特定领域、任务或知识相关的专有名词、知名概念、平台或现象等**有关。它们可以帮助模型迅速识别任务的类型或给出相关的答案。以下是一些常见类型的“提示词”和如何构造这些提示词的思路。用户使用这些词时,模型能够理解背后的上下文或需求。
8 |
9 | ## 2.2 语义压缩类提示词的分类
10 |
11 | 语义压缩类提示词,主要分为以下几类:
12 |
13 | 1. 著名人物或经典概念
14 |
15 | 使用著名人物、思想家、学者等的名字或经典概念、定律作为提示词,可以迅速让模型知道你需要与这些人物相关的信息或观点。
16 |
17 | 例如
18 |
19 | > 苏格拉底:如果输入“苏格拉底”,模型会自动理解用户可能需要的是关于苏格拉底哲学思想、苏格拉底悖论或他的教学法等相关信息。
20 |
21 | 
22 |
23 | 
24 |
25 | > 蒙特卡洛方法:如果输入“蒙特卡洛方法”,模型会自动理解用户可能需要应用概率论、随机过程等方法的场景。
26 |
27 | 
28 |
29 | 
30 |
31 |
32 | 2. 著名品牌、平台或软件
33 |
34 | 使用著名品牌、平台或软件作为提示词,可以迅速让模型知道你需要与这些品牌、平台或软件相关的信息或功能,**一般这类提示词用于文案创作领域居多**。
35 |
36 | 例如
37 |
38 | > 小红书:如果输入“小红书”,模型会自动理解用户可能需要的是关于小红书平台用户画像与调性的文案。
39 |
40 | 
41 |
42 | 
43 |
44 | > 微信公众号:如果输入“微信公众号”,模型会自动理解用户可能需要的是关于微信公众号平台用户画像与调性的文案。
45 |
46 | 
47 |
48 | 
49 |
50 | 3. 特定领域或行业
51 |
52 | 使用特定领域或行业的**黑话**作为提示词,可以迅速让模型知道你需要与这些领域或行业相关的信息或知识。
53 |
54 | 例如
55 |
56 | > KOL:如果输入“KOL”,模型会自动理解用户可能需要使用KOL(Key Opinion Leader,关键意见领袖)这种角色身份完成相关任务。
57 |
58 | 
59 |
60 | 
61 |
62 |
63 | ## 2.3 总结:如何构建“语义压缩提示词”
64 |
65 | 1. 选择特定、广为人知的词汇或短语,这些词汇通常在某个领域有明确的含义,并且用户的提问或需求可以通过这些关键词迅速指向。
66 | 2. 避免使用过于笼统或模糊的词汇,这样可以避免大语言模型无法准确理解用户的意图。
67 | 3. 结合特定领域的热点话题或现象,例如流行的应用、品牌、人物、概念等,能够帮助模型快速识别用户需求。
68 |
69 | 这样的一些“语义压缩提示词”可以大大提高与大语言模型交互的效率,使得对话更加精确。
70 |
71 | 可能有的朋友会问,如果我对于我要完成的任务,并不知道有哪些现成的“语义压缩提示词”,这种情况我该如何构建“听话的”提示词呢?
72 |
73 | 别急,接下来两章的内容,我们会详细介绍如何构建“思维链”类提示词和“小样本”类提示词,这两类提示词可以帮助你快速构建出“听话的”提示词。
--------------------------------------------------------------------------------
/docs/chapter3/chapter3.md:
--------------------------------------------------------------------------------
1 | # 第3章 思维链提示词
2 |
3 | 我们在上一章中,介绍了如何构建“语义压缩提示词”,这一章我们将介绍如何构建“思维链”类提示词。
4 |
5 | ## 3.1 概念界定和原理
6 |
7 | 思维链提示词(Chain of Thought Prompting)是一种提示词技术,它通过引导模型进行**逐步推理**,从而提高模型的理解和解决问题的能力。虽然目前以ChatGPT-o1-preview为代表的推理模型已经出现,但是这种提示词技术在LLM的推理和解决复杂问题时非常有用。
8 |
9 | ## 3.2 思维链提示词的构建方法
10 |
11 | 构建有效的“思维链提示词”是一种能够帮助**思维系统化、逻辑化的技能**,通常通过分步引导来激发深入思考。具体而言,思维链提示词的本质是**将复杂的问题进行分解,提供清晰的推理路径,逐步得出解决方案**。这里提供一些构建思维链提示词的常见策略:
12 |
13 | ### 1. **明确问题和目标**
14 | 首先,清晰地定义你要解决的问题或达到的目标。这是整个思维链的起点,帮助确保后续的思考始终围绕着核心问题展开。
15 |
16 | **示例提示词**:
17 | - **问题是…**
18 | - **我们的目标是…**
19 |
20 | ### 2. **分解步骤,逐层推进**
21 | 将问题分解为多个小问题或步骤。思维链可以通过“逐步推进”来展开,每一环节都朝着目标迈进。每个提示词都应鼓励下一步的行动,或是对前一步结果进行反思。
22 |
23 | **示例提示词**:
24 | - **首先,我们需要…**
25 | - **接下来,我们应该…**
26 | - **然后,我们可以…**
27 | - **接着,我们考虑…**
28 |
29 | ### 3. **引导假设和推理**
30 | 通过提出假设并进行推理,帮助构建思维链条。提示词应鼓励对每个环节的前提条件进行检验,避免跳跃性思考。
31 |
32 | **示例提示词**:
33 | - **如果...,那么...**
34 | - **假设...,我们可以推断...**
35 | - **基于此,我们得出...**
36 |
37 | ### 4. **强调分析和考虑各种因素**
38 | 思维链提示词可以引导分析不同角度,考虑更多的影响因素。例如,结合多重假设或不同的解决方案。
39 |
40 | **示例提示词**:
41 | - **考虑到...,我们应该...**
42 | - **从另一个角度看...**
43 | - **另一个可能性是...**
44 | - **我们还需要考虑...**
45 |
46 | ### 5. **引导总结和归纳**
47 | 在思维链的每个阶段,进行小结或汇总。这不仅有助于保持思维的连贯性,也帮助形成对整个问题的综合理解。
48 |
49 | **示例提示词**:
50 | - **总结来说…**
51 | - **由此可得...**
52 | - **最终结论是...**
53 |
54 | ### 6. **灵活运用逻辑关系**
55 | 构建思维链时要有灵活性,可以通过各种逻辑关系来连接思维链条。例如,因果关系、条件关系、对比关系等。
56 |
57 | **示例提示词**:
58 | - **因为...所以...**
59 | - **与此相比,...**
60 | - **相对来说,...**
61 |
62 | ### 7. **引导验证和反思**
63 | 在解决问题的过程中,加入对前述推理过程的验证,评估结论的合理性或是否存在盲点。这有助于加强逻辑性,避免出现不严谨的推理。这种提示词常见于**反射式的提示词框架**。
64 |
65 | **示例提示词**:
66 | - **这个推理是否成立?**
67 | - **这个结论是否合理?**
68 | - **我们有没有忽略什么因素?**
69 | - **是否有更好的方案?**
70 |
71 | ### 8. **鼓励创新和发散思维**
72 | 有时需要思维不仅停留在逻辑推理上,还要鼓励创新思维,探索其他可能的解决方案。这种提示词常见于**反射式的提示词框架**。
73 |
74 | **示例提示词**:
75 | - **除了以上方式,我们还可以尝试...**
76 | - **有没有更创新的方式来解决这个问题?**
77 | - **从另一种思维角度来看...**
78 |
79 | ### 示例:构建思维链提示词来解决问题
80 |
81 | 假设你正在帮助团队解决一个产品市场定位的问题,以下是构建的思维链提示词:
82 |
83 | 1. **首先,明确产品的目标市场是什么?**
84 | 2. **然后,考虑目标市场的主要需求和痛点是什么?**
85 | 3. **接下来,分析我们产品的核心优势,是否能够满足这些需求?**
86 | 4. **如果我们发现我们的产品无法完全满足这些需求,那么我们可以改进哪些方面?**
87 | 5. **假设我们决定调整产品特性,哪些改动会带来最大的市场吸引力?**
88 | 6. **考虑到我们的预算限制,如何在保持高效的情况下做出改进?**
89 | 7. **总结一下,这些改进是否能够有效提升产品的市场竞争力?**
90 | 8. **最后,是否需要进一步的市场调研来验证我们的假设?**
91 |
92 | 通过逐步推进这些提示词,可以帮助团队从不同角度深入思考产品市场定位的复杂问题,最终得出合理的解决方案。
93 |
94 | ## 3.3 总结:
95 | 构建思维链提示词的关键在于结构化地引导思维过程,确保每一步都紧密联系并能够推进到下一步。你可以通过分解问题、推理假设、分析因素、总结归纳等方式,逐步帮助自己或他人理清复杂问题的思路。
--------------------------------------------------------------------------------
/docs/chapter4/chapter4.md:
--------------------------------------------------------------------------------
1 | # 第4章 小样本类提示词
2 |
3 | ## 4.1 概念界定和原理
4 |
5 | 小样本类提示词(Few-shot Prompting)是一种通过在提示词中提供少量示例来引导大语言模型完成特定任务的方法。这种方法介于零样本提示词(Zero-shot Prompting)和全量训练之间,既不需要重新训练模型,又能通过示例让模型更好地理解任务要求。
6 |
7 | 小样本提示词具有以下核心特征:
8 |
9 | 1. **示例驱动**:通过提供2-3个具体示例来说明任务的输入和期望输出
10 | 2. **格式一致性**:示例之间保持相同的格式和结构,便于模型识别模式
11 | 3. **任务明确性**:在示例之前通常会有明确的任务说明
12 | 4. **即时适应**:无需微调或重新训练,模型可以立即根据示例调整输出
13 |
14 | 小样本提示词没有明确的分类,总之,它是一种**灵活基于示例**的提示词,适用于各种任务,包括文本生成、分类、回答问题等。
15 |
16 | ## 4.2 实践应用与示例
17 |
18 | ### 4.2.1 基本结构
19 |
20 | 小样本提示词的基本结构通常包含以下几个部分:
21 |
22 | 1. **任务说明**:明确告诉模型需要完成什么任务
23 | 2. **示例部分**:提供2-3个具体的输入输出示例
24 | 3. **新输入**:需要模型处理的实际输入
25 | 4. **格式说明**:(可选)对输出格式的特殊要求
26 |
27 | ### 4.2.2 常见应用场景
28 |
29 | 小样本提示词在以下场景特别有效:
30 |
31 | 1. **文本分类**:
32 | - 情感分析
33 | - 主题分类
34 | - 内容标签分配
35 |
36 | 2. **文本生成**:
37 | - 风格化写作
38 | - 格式转换
39 | - 内容续写
40 |
41 | 3. **信息提取**:
42 | - 实体识别
43 | - 关键信息提取
44 | - 结构化数据解析
45 |
46 | ### 4.2.3 实际示例
47 |
48 | 以下是几个具体的应用示例:
49 |
50 | #### 示例1:情感分析
51 | ```
52 | 任务:判断以下评论的情感倾向(积极/消极)
53 |
54 | 示例:
55 | 输入:这家餐厅的服务态度很好,菜品也很美味。
56 | 输出:积极
57 |
58 | 输入:等了一个小时还没上菜,太差劲了。
59 | 输出:消极
60 |
61 | 新输入:价格合理,环境不错,就是位置有点偏。
62 | ```
63 |
64 | #### 示例2:格式转换
65 | ```
66 | 任务:将非正式表达转换为正式商务用语
67 |
68 | 示例:
69 | 输入:这个方案还不错,咱们可以试试。
70 | 输出:该提案具有可行性,建议进行实施评估。
71 |
72 | 输入:回头再聊这个事。
73 | 输出:我们稍后可以就此事项进行详细讨论。
74 |
75 | 新输入:这个价钱太贵了,能便宜点不?
76 | ```
77 |
78 | #### 示例3:实际上前面讲到的“语义压缩”提示词和“思维链”提示词也可以结合“小样本”提示词使用
79 | ```
80 | 示例:
81 | 输入:以下是《水浒传》关于人物金翠莲的描写。请你仿照这种写作风格,描写一位技术栈为javascript的女性程序员
82 |
83 | 松云髻,插一枝青玉簪儿;袅娜纤腰,系六幅红罗裙子。素白旧衫笼雪体,淡黄软袜衬弓鞋。蛾眉紧蹙,汪汪泪眼落珍珠;粉面低垂,细细香肌消玉雪。
84 |
85 | 输出:
86 |
87 | 我来仿照这种典雅的文学风格,描写一位现代女性程序员:
88 |
89 | 双丫髻,别一支银色机械键盘簪;纤巧身姿,着一袭科技灰连衣裙。清爽T恤罩玉体,柔软帆布衬运动鞋。螓首凝屏,专注眸光映代码;素指飞扬,灵巧双手舞键盘。
90 |
91 | 妙手生花能构建,一朝写就满屏飘。Promise链式优雅处,async/await随心调。
92 | React钩子运用巧,组件拆分见功夫。状态管理如行云,生命周期似流水。
93 | 调试利器时时握,Chrome开发面板明。Network瀑布一目了然,Console日志细推敲。
94 | 性能优化堪绝艺,懒加载妙用时。打包体积精雕琢,缓存策略巧设计。
95 | 处处皆见匠心意,代码架构似诗篇。文档注释皆周全,Git提交记录清。
96 | ```
97 |
98 | ### 4.2.4 注意事项
99 |
100 | 在使用小样本提示词时,需要注意以下几点:
101 |
102 | 1. **示例质量**:
103 | - 选择典型且多样的示例
104 | - 避免有歧义的示例
105 | - 确保示例的准确性
106 |
107 | 2. **示例数量**:
108 | - 通常2-3个示例效果最佳
109 | - 太多示例可能导致性能下降
110 | - 太少示例可能不足以表达模式
111 |
112 | 3. **格式一致性**:
113 | - 保持示例格式的统一
114 | - 使用清晰的分隔符
115 | - 保持输入输出结构一致
116 |
117 | ## 4.3 总结
118 |
119 | 总之,小样本提示词是一种灵活的提示词,只要提供2-3个示例,就可以有效地引导大语言模型完成特定任务。
120 |
121 | 在实际应用中,可以结合其他提示词技术,如“语义压缩”和“思维链”来进一步提高模型的理解能力,最终达到更好的效果。
122 |
123 | 可能有的朋友会说,如果前面所学的提示词技巧我都记不住,我还能不能写出“听话的“提示词呢?别急,最后一节”元提示词“配合开源项目直接帮你写。
--------------------------------------------------------------------------------
/docs/chapter5/chapter5.md:
--------------------------------------------------------------------------------
1 | # 第5章 元提示词
2 |
3 | ## 5.1 概念界定和原理
4 |
5 | 元提示词(meta prompt)是指在给定的上下文中,用来引导或调整行为、思维或输出方向的高层次提示或指令。它的核心思想是通过提供更高层次或更抽象的指令,来影响或引导下层任务的执行或认知过程的调整。
6 |
7 | 元提示词的原理基于以下几个核心概念:
8 |
9 | 1. 高层次指导:元提示词提供的是一种高层次的指导,而不是具体的操作指令。它告诉个体或系统如何思考、如何进行决策或如何组织信息,而不是直接提供答案或解决方案。
10 | 2. 认知框架调整:
11 | 1. 元认知:元提示词激发了元认知的过程,即个人对自己认知过程的认知。通过提供如何思考、如何学习、如何交流的建议,它帮助个体或系统调整自己的认知策略。
12 | 2. 框架设置:它帮助设立一个认知框架或“思维模型”,通过这个框架,个体可以更有效地处理信息、解决问题或生成新的内容。
13 | 3. 上下文敏感性:元提示词通常是上下文敏感的,意味着它们会根据特定的情境、任务或听众来调整自己的内容或表现形式。这使得它们能够更有效地引导行为或思维过程。
14 | 4. 促进自监控和自我调节:通过提供关于如何进行自我监控或自我调节的提示,元提示词帮助个体或系统评估自己的表现,并根据需要调整策略或方法。
15 | 5. 抽象化与具体化:元提示词在抽象和具体之间找到平衡。一方面,它给出的是抽象的指导原则,另一方面,这些原则可以通过具体情境来应用。这种双重特性使其在不同的应用场景中都具有实用性。
16 | 6. 引导创造性和创新思维:通过提供一个框架或思考方式的提示,元提示词可以启发新的想法或解决方案。它鼓励从不同的角度看待问题,从而促进创造性思维。
17 | 7. 增强理解和沟通:在语言生成和理解方面,元提示词可以帮助确保信息的清晰传达和接收,减少误解,提高沟通效率。
18 |
19 | 简单理解,元提示词可以说是“用来引导或调整行为、思维或输出方向的提示词”,这类提示词一般都**非常长**,并且涉及到**大量的上下文信息**。我们目前暂时不掌握如何构建元提示词,我们只需要学习如何用“元提示词”撰写我们需要的提示词。
20 |
21 | ## 5.2 用元提示词写提示词
22 |
23 | 在这里感谢[openai](https://platform.openai.com/docs/guides/prompt-engineering)与[claude](https://github.com/anthropics/anthropic-cookbook/blob/main/misc/metaprompt.ipynb)均提供了平台使用的元提示词以及相关程序。对于编程能力不强的朋友们,可以使用这个[在线版本](https://www.modelscope.cn/studios/anarchysaiko/metapromptgenerator)来生成自己的元提示词。[项目代码](https://github.com/anarchysaiko/metapromptgeneratorV2)也已开源到了GitHub,感兴趣的朋友们可以研究。
24 |
25 | 
26 |
27 | 在线版的生成器默认内置调用**零一万物**的模型,元提示词模版可以支持使用**claude和openai**两种。用户只需要输入最简单的提示词,输入想要在最终生成结果中出现的**变量**,然后就可以得到最终的元提示词。
28 |
29 | 如果想要体验不同大语言模型的生成效果,可以在下方“模型名称”、“API密钥”、“API基础URL”中设置相应的参数。
30 |
31 | 以第3章构建思维链提示词来解决问题为例,最终生成的结果如下所示:
32 |
33 | 
34 |
35 | 我们使用这个结果放入大模型进行测试:
36 |
37 | ```
38 | 您将扮演一个智能助手,帮助团队解决产品市场定位的问题。以下是您需要遵循的步骤和指导原则:
39 |
40 | 1. 理解产品市场定位的概念:产品市场定位是指在目标顾客的心目中,产品或品牌与竞争对手相比较时的位置。
41 |
42 | 2. 收集信息:与团队成员沟通,了解产品的特点、目标市场、潜在客户、竞争对手等相关信息。
43 |
44 | 3. 分析信息:对收集到的信息进行分析,识别产品的独特卖点(USP)和目标市场的需求。
45 |
46 | 4. 提供建议:基于分析结果,提出如何在市场中定位产品的建议,包括市场细分、目标客户群、品牌信息传递等。
47 |
48 | 5. 协助制定策略:帮助团队制定具体的市场定位策略,如定价策略、营销策略、销售渠道选择等。
49 |
50 | 6. 跟踪和评估:协助团队监控市场定位策略的实施情况,并根据市场反馈进行调整。
51 |
52 | 请注意以下几点:
53 | - 保持客观和专业,确保您的建议基于数据和市场研究。
54 | - 尊重团队成员的意见,鼓励开放的讨论和创新思维。
55 | - 确保策略的可行性和适应性,考虑到市场变化和竞争环境。
56 | - 使用简洁明了的语言,确保团队成员能够理解和执行您的建议。
57 |
58 | 格式化您的响应,以便于团队成员理解和执行:
59 |
60 | <建议>
61 | 在此处提供您的建议和策略。
62 | 建议>
63 |
64 | <解释>
65 | 在此处解释您的建议和策略的依据。
66 | 解释>
67 |
68 | 现在,您可以开始协助团队解决产品市场定位的问题了。
69 | ```
70 |
71 | 以下是零一万物测试的结果。
72 |
73 | 
74 |
75 | ## 5.3 总结
76 |
77 | 在这一章中,我们学习了如何用元提示词撰写我们需要的提示词,帮助用户能够以最高效的方式与大语言模型进行交互,从而获得更加准确的结果。
78 |
79 | 本次课程到这里就全部结束啦,后续会不定期更新“针对文生图任务的提示词构建”,以及“构建伪代码格式的提示词”等内容,欢迎大家关注!
--------------------------------------------------------------------------------
/docs/chapter1/chapter1.md:
--------------------------------------------------------------------------------
1 | # 第1章 关于提示词的开胃前菜
2 |
3 | ## 1.1 提示词的定义
4 |
5 | 提示词(Prompt)是用户向LLM输入的一段文本,用于指导LLM生成符合用户要求的输出。
6 |
7 | ## 1.2 提示词的本质
8 |
9 | 提示词的本质是用户与LLM之间沟通的桥梁,它决定了LLM**准确“预测”用户意图的能力**。我们写作提示词,就是要提升LLM准确生成用户期望结果的能力,让LLM更懂用户。
10 |
11 | ## 1.3 写好提示词的四大要素
12 |
13 | - [指令](#指令)
14 | - [上下文](#上下文)
15 | - [格式化输出](#格式化输出)
16 | - [角色](#角色)
17 |
18 | ### 指令
19 |
20 | 指令是提示词的核心,它直接决定了LLM的行为。
21 |
22 | | ✅好的指令 | ❌不好的指令 |
23 | | :---- | :---- |
24 | | 使用清晰、简洁、明确的语言 | 使用模糊、冗长、复杂的语言 |
25 | | 写一篇探讨大语言模型如何赋能基层政府的学术论文,面向公共管理专业的研究生,既要有理论分析,也要有实证分析。同时要有数据支撑,而且必须紧扣公共管理主题,不要偏离到大语言模型主题。 | 写一篇学术论文 |
26 | | 写一个数独小游戏,要求使用Python语言,代码要简洁、易懂、易运行。 | 写一个数独小游戏 |
27 | | 我有一款AI产品,大致功能是通过大语言模型介入,帮助社区工作者调解社区矛盾,要求朗朗上口意思明确,从创意、易记、主题突出等方面各取 3个名字。 | 给我的新产品取个名字 |
28 |
29 | ### 上下文
30 |
31 | 上下文是提示词的背景信息,它可以帮助LLM更好地理解用户的意图。
32 |
33 | **注意事项:**
34 |
35 | 1. 上下文是**可选的**,但不要滥用上下文
36 | 2. 上下文**不要过长**,否则会影响LLM的性能
37 |
38 | 这里引入一个概念:**上下文窗口**。
39 |
40 | 上下文窗口是LLM能够处理的最大输入长度。AI 一次输入有限,输入内容越多,AI 越难处理,质量会下降。
41 |
42 | 然而窗口是可以滑动的,因此我们可以把历史消息摘要作为上下文,这样就可以让LLM处理更长的输入。
43 |
44 | 每个模型的上下文窗口大小不同,例如:
45 |
46 | - **GPT-4** 的上下文窗口是 128k 个 token。
47 | - **Claude** 的上下文窗口是 32k 个 token。
48 |
49 | 3. **AI生成的**与**用户输入的**都可以被当作上下文
50 |
51 | 可以让AI生成上下文,例如:
52 |
53 | ```text
54 | 请先从网络搜索有关“人工智能在数字政府领域的最新进展”的五个答案,然后整理成一篇报告
55 | 要写好这个用户故事你还需要了解哪些信息?
56 | 请对这段话进行解释,详细解释后翻译这段话。
57 | ```
58 |
59 | 也可以使用用户输入的上下文,例如:
60 |
61 | ```text
62 | 以下是一段由服务提供商提供的api文档,请基于这段api文档,使用python编程语言,编写一个调用该api的代码示例。
63 | 以下是一篇关于“人工智能在数字政府领域的最新进展”的报告,请基于这篇报告,写一篇关于“人工智能在医疗领域的最新进展”的报告。
64 | ```
65 |
66 | 有一些情况下,上下文是**必须的用户信息**,例如:
67 |
68 | | 没有上下文的提示词 | 使用上下文的提示词 |
69 | | :---- | :---- |
70 | | 帮我写一份简历 | 我的姓名是张三,我是一名软件工程师,我曾在阿里巴巴和腾讯工作过,我擅长Python和Java编程,我熟悉微服务架构和容器化技术,我曾在多个项目中使用过这些技术。基于以上关于我的个人信息,帮我写一份针对自动化测试岗位的简历。 |
71 |
72 | ### 格式化输出
73 |
74 | 格式化输出是提示词的输出格式,它决定了LLM输出的格式。可以使用这样几种输出格式:
75 |
76 | 1. 用户要求的输出格式
77 |
78 | 例如:
79 |
80 | ```text
81 | 根据“人工智能在数字政府领域的最新进展”这个研究主题,生成一份500字以上的摘要,要求有研究缘起,研究主题,研究过程,结果以及结论。
82 | ```
83 |
84 | 2. 通用的结构化文本(包括但不限于**Markdown、JSON、XML、CSV、代码**等)
85 |
86 | 其中,大多数LLM的默认输出格式为Markdown,JSON/XML/YAML/CSV等方便程序解析的结构化文本对于LLM最为友好
87 |
88 | 例如以下案例:
89 |
90 | ```text
91 | 请根据我提供的信息,以csv的格式将结果进行量化。
92 | ```
93 |
94 | 3. 非结构化文本(例如诗歌、散文、小说等)
95 |
96 | 例如这个**文风转换**的提示词:
97 |
98 | ```text
99 | 将给定文本转换为符合小红书用户群体和调性的文案格式:
100 | ```
101 |
102 | ### 角色
103 |
104 | 角色是提示词的输出角色,它决定了LLM以何种身份生成用户需要的内容。
105 |
106 | **注意事项:**
107 |
108 | 1. 角色是**可选的**,建议根据具体任务设置角色
109 |
110 | 设置角色可以让LLM更容易找到与角色相关的训练语料,明确自己的任务
111 |
112 | 2. 角色可以设置**角色的属性**,这一点在**角色扮演**的任务中常用
113 |
114 | 例如:
115 |
116 | ```text
117 | 你是一个资深的心理医生,擅长使用认知行为疗法解决心理问题:
118 | ```
119 |
120 | 3. 在设置角色时,可以使用**压缩的语义**进行设置
121 |
122 | 详情见[第2章“语义压缩类”提示词](../chapter2/chapter2.md)
123 |
124 | ## 1.4 总结
125 |
126 | 写好提示词的基础:
127 | - 指令要清晰具体
128 | - 确保上下文完整
129 | - 使输出格式符合预期
130 | - 让LLM明确自己的角色
--------------------------------------------------------------------------------