# Welcome

欢迎来到AI Wiki，本网站包含两方面内容：第一方面是人工智能领域基础概念、术语解释及知识百科，第二方面是关于各类AI应用的Prompt Engineering学习经验和方法教程。本网站内容会不断更新，希望能够帮助到你。

### AI Wiki 知识百科

分享AI相关术语、词汇，帮你快速入门了解各类AI知识。

* [什么是人工智能 (AI)-Google](/ai-wiki/shen-me-shi-ren-gong-zhi-neng-aigoogle)
* [人工智能-百度百科](/ai-wiki/ren-gong-zhi-neng-bai-du-bai-ke)
* [人工智能-Wikipedia](/ai-wiki/ren-gong-zhi-neng-wikipedia)
* [Artificial Intelligence Wiki (English)](/ai-wiki/artificial-intelligence-wiki-english)
* [机器之心人工智能专业词汇表](/ai-wiki/ji-qi-xue-xi-ke-cheng-shu-yu-biao)
* [人工智能专业术语表](/ai-wiki/ren-gong-zhi-neng-zhuan-ye-shu-yu-biao)
* [机器学习课程术语表](/ai-wiki/ji-qi-xue-xi-ke-cheng-shu-yu-biao)

### Prompt Engineering 教程

从使用者的角度，学习如何上手及更好的使用 Prompt Engineering。

* [Prompt Engineering 是什么？​](/prompt-engineering-tutorial/prompt-engineering-shi-shen-me)
* [Learn Prompting (多语言)](/prompt-engineering-tutorial/learn-prompting-duo-yu-yan)
* [Learning Prompt (中文)](/prompt-engineering-tutorial/learning-prompt-zhong-wen)
* [Learn Prompt (English)](/prompt-engineering-tutorial/learn-prompt-english)
* [Deep Learning (English)](/prompt-engineering-tutorial/deep-learning-english)

### ChatGPT 教程

由浅入深，从使用者的角度，教你如何使用 ChatGPT，以及如何更好地使用 ChatGPT。

* [基础篇](/chatgpt-tutorial/ji-chu-pian)
* [高级篇](/chatgpt-tutorial/gao-ji-pian)
* [技巧篇](/chatgpt-tutorial/ji-qiao-pian)
* [Awesome ChatGPT Prompts (English)](/chatgpt-tutorial/awesome-chatgpt-prompts-english)

### Midjourney 教程

通过各种场景案例，教你如何使用 Midjourney。即使是小白，看完教程后，也能够快速上手

* [基础篇](/midjourney-tutorial/ji-chu-pian)
* [高级篇](/midjourney-tutorial/gao-ji-pian)
* [技巧篇](/midjourney-tutorial/ji-qiao-pian)
* [Text Prompt 篇](/midjourney-tutorial/text-prompt-pian)
* [Big List](/midjourney-tutorial/big-list)

### Sora 教程

Sora 中文学习手册，新手入门教程。

* [基础篇](/sora-tutorials/ji-chu-pian)
* [高级篇](/sora-tutorials/gao-ji-pian)
* [技巧篇](/sora-tutorials/ji-qiao-pian)


# 什么是人工智能 (AI)-Google

{% embed url="<https://cloud.google.com/learn/what-is-artificial-intelligence?hl=zh-cn>" %}

### 什么是人工智能 (AI)？

人工智能 (AI) 是一组技术，使计算机能够执行各种高级功能，包括查看、理解和翻译口语和书面语言、分析数据、提出建议等各种能力。

AI 是现代计算创新的支柱，可为个人和企业挖掘价值。例如，光学字符识别 (OCR) 使用 AI 从图片和文档中提取文本和数据，将非结构化内容转换为可供企业直接使用的结构化数据，并发掘有价值的数据洞见。

### 人工智能(AI)的定义 <a href="#artificial-intelligence-defined" id="artificial-intelligence-defined"></a>

人工智能是一个构建能够推理、学习和行动的计算机和机器的科学领域，这种推理、学习和行动通常需要人类智力，或者涉及超出人类分析能力的数据规模。

AI 是一个广博的领域，涵盖许多不同的学科，包括计算机科学、数据分析和统计、硬件和软件工程、语言学、神经学，甚至哲学和心理学。

在业务使用的操作层面上，AI 是一组主要基于机器学习和深度学习的技术，用于数据分析、预测、对象分类、自然语言处理、推荐、智能数据检索等等。

### 人工智能(AI)的类型 <a href="#types-of-artificial-intelligence" id="types-of-artificial-intelligence"></a>

人工智能可以采用多种方式进行组织，具体取决于开发阶段或正在执行的操作。

例如，AI 开发通常分为四个阶段。

1. **反应式机器：**&#x6709;限的 AI，仅根据预编程规则对不同类型的刺激做出反应。不使用内存，因此无法通过新数据进行学习。1997 年击败国际象棋冠军加里·卡斯帕罗夫的 IBM 深蓝超级计算机就是反应式机器的一个例子。
2. **有限内存：**&#x5927;多数现代 AI 都被视为具有有限内存的 AI。它可以通过使用新数据（通常是通过人工神经网络或其他训练模型）进行训练，从而使用内存随着时间的推移而改进。深度学习是机器学习的一部分，被视为具有有限内存的人工智能。
3. **心智理论：**&#x5FC3;智理论 AI 目前不存在，但研究正在实现其可能性。它描述了可以模拟人类思维并具有与人类相同的决策能力的 AI，包括识别和记忆情感以及在社交场合中像人类一样做出反应。&#x20;
4. **自我意识：**&#x81EA;我意识 AI 比心智理论 AI 前进了一步，它描述了一种神秘的机器，这种机器知道自己的存在并具有人类的智力和情感能力。与心智理论 AI 一样，自我意识 AI 目前也不存在。

对人工智能类型进行广泛分类的一种更有用的方法是按照机器可以做什么来分类。我们目前所说的所有人工智能都被认为是“窄” (narrow) 人工智能，因为它只能根据其编程和训练来执行一组范围狭窄的操作。例如，用于对象分类的 AI 算法无法执行自然语言处理。Google 搜索是一种窄 AI，预测分析或虚拟助理也是窄 AI。

人工通用智能 (AGI) 是指机器可以像人类一样“感知、思考和行动”。AGI 目前不存在。下一个等级将是人工超级智能 (ASI)，即机器可以在所有方面发挥出优于人类的功能。

### 人工智能(AI)训练模型 <a href="#artificial-intelligence-training-models" id="artificial-intelligence-training-models"></a>

企业在谈论 AI 时，通常会谈论“训练数据”。“训练数据”是什么意思呢？请记住，有限内存人工智能是利用新数据进行训练，进而随着时间的推移而改进的 AI。机器学习是人工智能的一个子集，它使用算法训练数据来获取结果。

概括地说，机器学习中经常使用三种学习模型：

**监督式学习：**&#x4E00;种使用带标签的训练数据（结构化数据）将特定输入映射到输出的机器学习模型。简单来说，要训练算法识别猫的图片，则向其提供标记为猫的图片。

**非监督式学习：**&#x4E00;种根据无标签数据（非结构化数据）学习模式的机器学习模型。与监督式学习不同，最终结果不会提前知道。相反，算法会从数据中学习，根据特性将其归类。例如，非监督式学习擅长模式匹配和描述性建模。

除了监督式和非监督式学习之外，人们通常还会采用一种名为“半监督式学习”的混合方法，其中只会对部分数据添加标签。在半监督式学习中，最终结果是已知的，但算法必须决定如何组织和构造数据以获得期望的结果。

**强化学习：**&#x4E00;种可以广义地描述为“边做边学”的机器学习模型。“代理”通过反复试验（反馈环）学习执行定义的任务，直到其性能处于理想范围内。当代理出色执行任务时，它会获得正强化；当代理表现不佳时，它会获得负强化。强化学习的一个例子是教机器人手捡球。

### 常见的人工神经网络类型 <a href="#common-types-of-artificial-neural-networks" id="common-types-of-artificial-neural-networks"></a>

AI 中一种常见的训练模型是人工神经网络（一种松散地基于人脑的模型）。

神经网络是人工神经元系统（有时称为感知机），该系统是用于对数据进行分类和分析的计算节点。数据被输入神经网络的第一层，每个感知机都会做出决定，然后将该信息传递到下一层的多个节点。超过三层的训练模型称为“深度神经网络”或“深度学习”。某些现代神经网络有数百或数千层。最终感知机的输出完成神经网络的任务集，例如对对象进行分类或在数据中查找模式。

您可能会遇到的一些最常见的人工神经网络类型包括：

**前馈神经网络 (FF)：**&#x4E00;种最早的神经网络形式，其中数据单向流过人工神经元层，直到获得输出。在现代，大多数前馈神经网络都被视为具有多个层（以及多个“隐藏”层）的“深度前馈神经网络”。前馈神经网络通常与称为“反向传播算法”的纠错算法配对使用。简单说来，该算法从神经网络的结果开始，然后一直反向工作到开始，发现错误以提高神经网络的准确率。许多简单但强大的神经网络都是深度前馈神经网络。

**循环神经网络 (RNN)：**&#x4E00;种与前馈神经网络不同的神经网络，它们通常使用时序数据或涉及序列的数据。与在网络的每个节点中使用权重的前馈神经网络不同，循环神经网络对前一层发生的事情具有“记忆”，这取决于当前层的输出。例如，执行自然语言处理时，RNN 可以“记住”一个句子中使用的其他字词。RNN 通常用于语音识别、翻译和图片说明。

**长/短期内存 (LSTM)：**&#x4E00;种高级形式的 RNN，它可以使用内存来“记住”先前的层中发生的事情。RNN 和 LSTM 之间的区别在于，LSTM 可以通过使用“内存单元”来记住几层之前发生的事情。【译注：原英文中的 LTSM 可能是 LSTM 的笔误】LSTM 常用于语音识别和预测。

**卷积神经网络 (CNN)：**&#x4E00;种神经网络，其中包含现代人工智能中一些最常见的神经网络。CNN 最常用于图像识别，它使用几个不同的层（一个卷积层，然后是一个 pooling 层），这些层在将图像重新组合在一起（在全连接层中）之前过滤图像的不同部分。较早的卷积层可能会寻找图像的简单特征，例如颜色和边缘，然后在附加层中寻找更复杂的特征。

**生成对抗网络 (GAN)：**&#x4E00;种网络，涉及两个在游戏中相互竞争的神经网络，该游戏最终会提高输出的准确率。一个网络（生成器）创建另一个网络（判别器）尝试证明真假的样本。GAN 用于制作逼真的图片，甚至用于制作艺术品。

### 人工智能(AI)的优势 <a href="#benefits-of-ai" id="benefits-of-ai"></a>

#### 自动化 <a href="#automation" id="automation"></a>

* AI 可以自动执行工作流和流程，也可以不依靠人工团队来独立自主地开展工作。例如，AI 可以通过持续监控和分析网络流量来帮助自动执行信息安全的各个方面。同样，智能工厂可能使用数十种不同类型的 AI，例如机器人使用计算机视觉在工厂车间移动或检查产品是否存在缺陷、创建数字孪生体，或使用实时分析来衡量效率和产量。

#### 减少人为错误 <a href="#reduce-human-error" id="reduce-human-error"></a>

* AI 可以通过每次都遵循相同流程的自动化功能和算法来消除数据处理、分析、制造装配和其他任务中的人为错误。

#### 消除重复任务 <a href="#eliminate-repetitive-tasks" id="eliminate-repetitive-tasks"></a>

* AI 可用于执行重复任务，从而让人力资源能够空出手来解决影响较大的问题。AI 可用于自动执行流程，例如验证文档、转录电话或回答“你们几点关门？”之类的简单客户问题。机器人通常用于代替人类执行“枯燥、肮脏或危险”的任务。

#### 快速准确 <a href="#fast-and-accurate" id="fast-and-accurate"></a>

* 与人类相比，AI 可以更快地处理更多信息，从而查找模式并发现人类可能错过的数据关系。

#### 无限可用性 <a href="#infinite-availability" id="infinite-availability"></a>

* AI 不受时段、休息需求或其他人类负担的限制。在云端运行时，AI 和机器学习可以“始终开启”，从而持续处理分配的任务。

#### 更快的研发速度 <a href="#accelerated-research-and-development" id="accelerated-research-and-development"></a>

* 快速分析大量数据的能力可以加快获得研发突破的速度。例如，AI 已用于潜在新药物疗法的预测建模，或量化人类基因组。

### 人工智能(AI)的应用和使用场景

#### 语音识别

* 自动将语音转换为文字。

#### 图像识别 <a href="#image-recognition" id="image-recognition"></a>

* 识别图片的各个方面并将其分类。

#### 翻译 <a href="#translation" id="translation"></a>

* 将书面或语音内容从一种语言翻译成另一种语言。

#### 预测性建模 <a href="#predictive-modeling" id="predictive-modeling"></a>

* 挖掘数据，以高粒度预测特定结果。

#### 数据分析 <a href="#data-analytics" id="data-analytics"></a>

* 针对商业智能寻找数据中的模式和关系。

#### 网络安全 <a href="#cybersecurity" id="cybersecurity"></a>

* 独立自主扫描网络以检测是否存在网络攻击和威胁。

{% embed url="<https://cloud.google.com/learn/what-is-artificial-intelligence?hl=zh-cn>" %}


# 人工智能-百度百科

{% embed url="<https://baike.baidu.com/item/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/9180>" %}

**人工智能（Artificial Intelligence），英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。**&#x4EBA;工智能是新一轮科技革命和产业变革的重要驱动力量。

人工智能是智能学科重要的组成部分，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器，该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。人工智能从诞生以来，理论和技术日益成熟，应用领域也不断扩大，可以设想，未来人工智能带来的科技产品，将会是人类智慧的“容器”。人工智能可以对人的意识、思维的信息过程的模拟。人工智能不是人的智能，但能像人那样思考、也可能超过人的智能。&#x20;

人工智能是一门极富挑战性的科学，从事这项工作的人必须懂得计算机知识，心理学和哲学等。人工智能是包括十分广泛的科学，它由不同的领域组成，如机器学习，计算机视觉等等。总的说来，人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。但不同的时代、不同的人对这种“复杂工作”的理解是不同的。

### 定义详解

关于什么是“智能”，涉及到诸如意识（CONSCIOUSNESS）、自我（SELF）、思维（MIND）（包括无意识的思维（UNCONSCIOUS\_MIND））等问题。人唯一了解的智能是人本身的智能，这是普遍认同的观点。但是我们对我们自身智能的理解都非常有限，对构成人的智能的必要元素也了解有限，所以就很难定义什么是人工智能。人工智能的研究往往涉及对人的智能本身的研究。其它关于动物或其它人造系统的智能也普遍被认为是人工智能相关的研究课题。

尼尔逊教授对人工智能下了这样一个定义：“人工智能是关于知识的学科――怎样表示知识以及怎样获得知识并使用知识的科学。”而另一个美国麻省理工学院的温斯顿教授认为：“人工智能就是研究如何使计算机去做过去只有人才能做的智能工作。”这些说法反映了人工智能学科的基本思想和基本内容。即人工智能是研究人类智能活动的规律，构造具有一定智能的人工系统，研究如何让计算机去完成以往需要人的智力才能胜任的工作，也就是研究如何应用计算机的软硬件来模拟人类某些智能行为的基本理论、方法和技术。

20世纪70年代以来，人工智能被称为世界三大尖端技术之一（空间技术、能源技术、人工智能）。也被认为是21世纪三大尖端技术（基因工程、纳米科学、人工智能）之一。这是因为近三十年来它获得了迅速的发展，在很多学科领域都获得了广泛应用，并取得了丰硕的成果，人工智能已逐步成为一个独立的分支，无论在理论和实践上都已自成一个系统。

人工智能是研究使用计算机来模拟人的某些思维过程和智能行为（如学习、推理、思考、规划等）的学科，主要包括计算机实现智能的原理、制造类似于人脑智能的计算机，使计算机能实现更高层次的应用。人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。可以说几乎是自然科学和社会科学的所有学科，其范围已远远超出了计算机科学的范畴，人工智能与思维科学的关系是实践和理论的关系，人工智能是处于思维科学的技术应用层次，是它的一个应用分支。从思维观点看，人工智能不仅限于逻辑思维，要考虑形象思维、灵感思维才能促进人工智能的突破性的发展，数学常被认为是多种学科的基础科学，数学也进入语言、思维领域，人工智能学科也必须借用数学工具，数学不仅在标准逻辑、模糊数学等范围发挥作用，数学进入人工智能学科，它们将互相促进而更快地发展。&#x20;

{% embed url="<https://baike.baidu.com/item/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/9180>" %}


# 人工智能-Wikipedia

Artificial Intelligence - Wikipedia

{% embed url="<https://zh.wikipedia.org/zh-sg/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD>" %}

**人工智能（英语：artificial intelligence，缩写为AI）亦称智械、机器智能，指由人制造出来的机器所表现出来的智能。**&#x901A;常人工智能是指通过普通计算机程序来呈现人类智能的技术。该词也指出研究这样的智能系统是否能够实现，以及如何实现。同时，通过医学、神经科学、机器人学及统计学等的进步，常态预测则认为人类的很多职业也逐渐被其取代。

人工智能于一般教材中的定义领域是“智能主体（intelligent agent）的研究与设计”\[3]，智能主体指一个可以观察周遭环境并作出行动以达致目标的系统。约翰·麦卡锡于1955年的定义是“制造智能机器的科学与工程”。安德烈亚斯·卡普兰（Andreas Kaplan）和迈克尔·海恩莱因（Michael Haenlein）将人工智能定义为“系统正确解释外部数据，从这些数据中学习，并利用这些知识通过灵活适应实现特定目标和任务的能力”。人工智能可以定义为模仿人类与人类思维相关的认知功能的机器或计算机，如学习和解决问题。人工智能是计算机科学的一个分支，它感知其环境并采取行动，最大限度地提高其成功机会。此外，人工智能能够从过去的经验中学习，做出合理的决策，并快速回应。因此，人工智能研究人员的科学目标是通过构建具有象征意义的推理或推理的计算机程序来理解智能。人工智能的四个主要组成部分是：

* 专家系统：作为专家处理正在审查的情况，并产生预期或预期的绩效。&#x20;
* 启发式问题解决：包括评估小范围的解决方案，并可能涉及一些猜测，以找到接近最佳的解决方案。&#x20;
* 自然语言处理：在自然语言中实现人机之间的交流。&#x20;
* 计算机视觉：自动生成识别形状和功能的能力。 人工智能的研究是高度技术性和专业的，各分支领域都是深入且各不相通的，因而涉及范围极广。

人工智能的研究可以分为几个技术问题。其分支领域主要集中在解决具体问题，其中之一是，如何使用各种不同的工具完成特定的应用程序。

AI的核心问题包括建构能够跟人类似甚至超卓的推理、知识、计划、学习、交流、感知、移动 、移物、使用工具和操控机械的能力等。通用人工智能（GAI）目前仍然是该领域的长远目标。目前弱人工智能已经有初步成果，甚至在一些影像识别、语言分析、棋类游戏等等单方面的能力达到了超越人类的水平，而且人工智能的通用性代表着，能解决上述的问题的是一样的AI程序，无须重新开发算法就可以直接使用现有的AI完成任务，与人类的处理能力相同，但达到具备思考能力的统合强人工智能还需要时间研究，比较流行的方法包括统计方法，计算智能和传统意义的AI。目前有大量的工具应用了人工智能，其中包括搜索和数学优化、逻辑推演。而基于仿生学、认知心理学，以及基于概率论和经济学的算法等等也在逐步探索当中。

### 概论

人工智能的定义可以分为两部分，即“人工”和“智能”。“人工”即由人设计，为人创造、制造。

关于什么是“智能”，较有争议性。这涉及到其它诸如意识、自我、心灵，包括无意识的精神等等问题。人唯一了解的智能是人本身的智能，这是普遍认同的观点。但是我们对我们自身智能的理解都非常有限，对构成人的智能必要元素的了解也很有限，所以就很难定义什么是“人工”制造的“智能”。因此人工智能的研究往往涉及对人智能本身的研究。其它关于动物或其它人造系统的智能也普遍被认为是人工智能相关的研究课题。

人工智能目前在电脑领域内，得到了愈加广泛的发挥。并在机器人、经济政治决策、控制系统、仿真系统中得到应用。

### 发展史

人工智能的历史源远流长。在古代的神话传说中，技艺高超的工匠可以制作人造人，并为其赋予智能或意识。现代意义上的AI始于古典哲学家用机械符号处理的观点解释人类思考过程的尝试。20世纪40年代基于抽象数学推理的可编程数字电脑的发明使一批科学家开始严肃地探讨构造一个电子大脑的可能性。

1956年，在达特茅斯学院举行的一次会议上正式确立了人工智能的研究领域。会议的参加者在接下来的数十年间是AI研究的领军人物。他们中有许多人预言，经过一代人的努力，与人类具有同等智能水平的机器将会出现。同时，上千万美元被投入到AI研究中，以期实现这一目标。

研究人员发现自己大大低估了这一工程的难度，人工智能史上共出现过好几次低潮。由于詹姆斯·莱特希尔爵士的批评和国会方面的压力，美国和英国政府于1973年停止向没有明确目标的人工智能研究项目拨款。七年之后受到日本政府研究规划的刺激，美国政府和企业再次在AI领域投入数十亿研究经费，但这些投资者在80年代末重新撤回了投资。AI研究领域诸如此类的高潮和低谷不断交替出现；至今仍有人对AI的前景作出异常乐观的预测。

尽管在政府官僚和风投资本家那里经历了大起大落，AI领域仍在取得进展。某些在20世纪70年代被认为不可能解决的问题今天已经获得了圆满解决并已成功应用在商业产品上。与第一代AI研究人员的乐观估计不同，具有与人类同等智能水平的机器至今仍未出现。图灵在1950年发表的一篇催生现代智能机器研究的著名论文中称，“我们只能看到眼前的一小段距离……但是，我们可以看到仍有许多工作要做”。

进入入21世纪，得益于大数据和计算机技术的快速发展，许多先进的机器学习技术成功应用于经济社会中的许多问题。麦肯锡全球研究院在一份题为《大数据：创新、竞争和生产力的下一个前沿领域》的报告中估计，到2009年，美国经济所有行业中具有1000名以上员工的公司都至少平均拥有一个200兆兆字节的存储数据。

到2016年，AI相关产品、硬件、软件等的市场规模已经超过80亿美元，纽约时报评价道AI已经到达了一个热潮。大数据应用也开始逐渐渗透到其他领域，例如生态学模型训练、经济领域中的各种应用、医学研究中的疾病预测及新药研发等。深度学习（特别是深度卷积神经网络和循环网络）更是极大地推动了图像和视频处理、文本分析、语音识别等问题的研究进程。

{% embed url="<https://zh.wikipedia.org/zh-cn/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%8F%B2>" %}

{% embed url="<https://cloud.google.com/learn/what-is-artificial-intelligence?hl=zh-cn>" %}


# Artificial Intelligence Wiki (English)

A repository of machine learning, data science, and artificial intelligence (AI) terms for individuals and businesses.

{% embed url="<https://machine-learning.paperspace.com/>" %}

Whether you're looking to explore new concepts or brush up on your terminology, this wiki offers up-to-date information on key topics in data science, machine learning, and deep learning.

Not sure where to start? Check out our definition of [MLOps](broken://pages/-LvCPpgqGXEMEH5p0Ptb) to discover a modern approach to model training and deployment.

## What is Artificial Intelligence (AI)?

Artificial Intelligence is an umbrella term for a range of concepts and technologies that allow machines to exhibit human-like capabilities.  Some common implementations include self-driving cars, human-impersonating chatbots, and facial recognition apps.  A few recent breakthroughs have led to applications that don't just mimic human intelligence but go well above and beyond, performing tasks that are otherwise impossible for humans.

AI dates back to the 1950s and has been through several boom and bust cycles.  Over the past few years, we've seen tremendous resurgence in investment and excitement in AI due to the culmination of three key ingredients:&#x20;

1. Abundant and cheap parallel computation with **GPUs**
2. Growing **data** sets and collection techniques
3. Advancements in underlying algorithms -- especially the advent of a neural network-based approach called **Deep Learning**

![Source: NVIDIA](/files/-LvD0gbfAKEIMXcVxdqQ)

AI powers applications used by hundreds of millions of people every day.  Businesses are using AI to perform an almost infinite number of tasks, from implementing recommender systems for e-commerce apps to diagnosing cancer.

### Barriers to AI Adoption

AI is in its infancy and as an early-stage technology it is rapidly changing and challenging to implement.  To gain more widespread adoption, AI needs to overcome a number of hurdles.  These obstacles generally fall into two primary areas:

1. A lack of best practices ([MLOps](broken://pages/-LvCPpgqGXEMEH5p0Ptb)) across the entire model lifecycle
2. Infrastructure complexity inherent in developing and productionizing models

Today, Data Scientists only spend around 25% of their time developing models -- the other 75% of their time is spent managing tooling and infrastructure. &#x20;

> *"The biggest barrier to AI adoption is an infrastructure and tooling problem, not an algorithm problem."*\
> \-- Dillon Erb, Paperspace CEO

These are the challenges that end-to-end AI platforms like Paperspace **Gradient** were built to solve. &#x20;

## Artificial Intelligence + Gradient

Gradient enables teams to quickly develop, track, and deploy machine learning models from concept to production.  The platform provides **infrastructure automation** and **model lifecycle management** with organization-wide visibility, reproducibility, and governance as first-class citizens.&#x20;

**For data scientists**, Gradient provides the freedom to use familiar tools. Since Gradient provides DevOps support and resource orchestration, teams can focus on training algorithms and creating business value.&#x20;

**For organizations**, Gradient reduces project costs by streamlining hardware resources and data science team productivity.  The Kubernetes-native platform provides a unified ML hub that maximizes speed to deployment and time-to-value.

Gradient pioneered the concept of [*CI/CD for machine learning*](broken://pages/-LvE7LpJKbQa5FnCh_S_) which is helping transform data driven organizations into model driven organizations. This is also known as *agile ML*.

#### [View on Gitbook](https://machine-learning.paperspace.com/)

{% embed url="<https://machine-learning.paperspace.com/>" %}


# 机器之心人工智能专业词汇库

本术语库目前拥有专业术语约 2442 个、专项领域篇 2 篇，主要为人工智能领域基础概念和术语。

本术语库前两版主要是将机器之心在编译技术文章和论文过程中所遇到的专业术语记录下来，希望有助于大家查阅和翻译，同时也希望大家能积极指出我们编译的不当之处，共同推进知识高效、广泛地传播。

自第三版起，在日常编译工作积累之外，我们将逐领域基于权威教科书及文献，联合领域专家进一步扩展并完善本仓库，为社区提供具有统一性的 AI 及相关领域的中英术语翻译对照参考。

机器之心将从三个方面持续完善术语的收录和扩展阅读的构建：

①第一阶段机器之心将继续完善基础术语的构建，即通过权威教科书或其它有公信力的资料抽取常见术语；

②第二阶段机器之心将持续性地把编译论文或其他资料中所出现的非常见术语更新到术语表中；

③第三阶段机器之心将联合更多的领域专家，构建专项领域的术语表。

#### `机器之心词汇库 GitBook：`[`https://jiqizhixin.gitbook.io/artificial-intelligence-terminology-database/`](https://jiqizhixin.gitbook.io/artificial-intelligence-terminology-database/)

{% embed url="<https://jiqizhixin.gitbook.io/artificial-intelligence-terminology-database/>" %}

作为最早关注人工智能技术的媒体，机器之心在编译国外技术博客、论文、专家观点等内容上已经积累了超过两年多的经验。期间，从无到有，机器之心的编译团队一直在积累专业词汇。虽然有很多的文章因为专业性我们没能尽善尽美的编译为中文呈现给大家，但我们一直在进步、一直在积累、一直在提高自己的专业性。

两年来，机器之心编译团队整理过翻译词汇对照表「红宝书」，编辑个人也整理过类似的词典。而我们也从机器之心读者留言中发现，有些人工智能专业词汇没有统一的翻译标准，这可能是因地区、跨专业等等原因造成的。举个例子，DeepMind 的一篇论文中有个词汇为 differentiable boundary tree，当时机器之心的翻译为可微分界树，但后来有读者表示这样的译法如果不保留英文很难明白表达的意思且建议翻译为可微分边界树。

因此，我们想把机器之心内部积累的人工智能专业词汇中英对照表开放给大家，希望为大家写论文、中文博客、阅读文章提供帮助。同时，这也是一份开放的表单，希望越来越多的人能够提供增添、修改建议，为人工智能的传播助力。

#### **`机器之心项目 Github：`**[`https://github.com/jiqizhixin/Artificial-Intelligence-Terminology`](https://github.com/jiqizhixin/Artificial-Intelligence-Terminology?spm=a2c6h.12873639.article-detail.6.6ef94ad0Gjcadc)

{% embed url="<https://github.com/jiqizhixin/Artificial-Intelligence-Terminology>" %}

####


# 人工智能专业术语表

全网最全人工智能专业术语表，中英文对照。

人工智能不仅是指寻求如何替代人类的机器人或人类寻求自我挑战的游戏，更是指运用复杂的程序化数学，其结果与高质量的训练数据相结合，推动了我们在日常生活中所看到的技术进步。从无人驾驶汽车到寻找癌症的治疗方法，人工智能正在逐渐渗透我们的生活之中。

以下是内容由“澳鹏 | AI 与机器学习干货大本营”编辑，希望能帮助对人工智能领域感兴趣的学者或是专业人士，如果有任何遗漏也请随时回复我们，我们将及时更新！（按英语首字母顺序排列）

**`原文地址：`**[**`https://xie.infoq.cn/article/d01f62482e48c78526724a556`**](https://xie.infoq.cn/article/d01f62482e48c78526724a556)

{% embed url="<https://xie.infoq.cn/article/d01f62482e48c78526724a556>" %}


# A

**A/B Testing（A/B 测试）**

一种受控的真实实验，用于比较系统或模型的两个变体 A 和 B。

**Activation Function（激活函数）**

在人工神经网络的情境中，接受来自上一层的所有输入的加权和并生成输出值来激活下一层的函数。

**Active Learning (Active Learning Strategy)（主动学习/主动学习策略）**

半监督机器学习的一种特殊情况，在这种情况下，学习代理能够以交互的方式查询数据库（通常是人工标注员），以获取新数据点的标签。

**Algorithm（算法）**

一种关于如何解决某一类问题的过程的明确规范，它能够执行计算、处理数据并进行自动推理。

**Annotation（标注）**&#x9644;加到一条数据之上的元数据，通常由人工标注员提供。

**Area Under the Curve (AUC)（曲线下面积）**

机器学习中用于确定在多个使用的模型中哪个模型具有最高性能的一种方法。

**Artificial Intelligence（人工智能）**

机器模拟人类智力和行为做出决策、执行任务的能力。

**Artificial General Intelligence （通用人工智能）**

**Artificial Neural Networks（人工神经网络）**

由简单互联单元（称作神经元）的连续层所构成的一种架构，这些单元与非线性激活函数交织在一起，会让人模糊地联想到动物大脑中的神经元。

**Association Rule Learning（关联规则学习）**

一种基于规则的机器学习方法，用于发现大型数据集中变量之间的关系。

**Autoencoder（自动解码器）**

一种人工神经网络，用于以无监督、非线性的方式生成高效的数据表示，通常用于降低维度。

**Automated Speech Recognition（自动语音识别）**

计算语言学的一个子领域，主要是关于通过计算机识别和翻译口语的方法。


# B

**Backpropagation (Backpropagation Through Time)（反向传播/基于时间的反向传播）**

用于训练人工神经网络，进而计算网络权重计算所需梯度的一种方法。

**Batch（批量）**

在模型训练的单个梯度更新中使用的示例集。

**Bayes’s Theorem（贝叶斯定理）**

统计学家根据可能与某个存在相关的先验条件知识描述某个事件的概率时所用的一个著名定理。

**Bias (Inductive Bias, Confirmation Bias)（偏差-归纳偏差、确认偏差）**

归纳偏差：学习者在给定输入条件下预测尚未遇到的输出时所用的假设事项集。确认偏差：以确认自己的信念或假设的方式搜索、解释、赞成和回想信息，而较少关注与之相矛盾的信息的趋势。

**Bias-Variance Tradeoff（偏差与方差权衡）**

当数据科学家尝试同时最大程度地减小偏差和方差时所产生的冲突，该冲突不利于监督算法推广到他们的训练集范围之外。

**Boosting（提升）**

主要用于减少监督学习中的偏差和方差的一种机器学习集成元算法，以及将弱学习者转化为强学习者的一系列机器学习算法。

**Bounding Box（边界框）**

完全包含一组点或一个对象的最小（矩形）框。


# C

**Chatbot（聊天机器人）**

一种旨在通过对话与人类用户进行交互的计算机程序或 AI。

**Classification（分类）**

对映射函数进行从输入变量到离散输出变量的近似处理的任务，或者从广义上来说，是指用于确定特定实例所属的类的某一类机器学习算法。

**Clustering（聚类）**

在机器学习中，是指对一组对象进行分组，使得同一组（即集群）中的对象彼此之间的“相似性”高于与其他组中的对象“相似性”的无监督任务。

**Cold-Start（冷启动）**

由于系统无法针对尚未收集到足够信息的用户或项目推断出任何信息而引起的潜在问题。

**Collaborative Filtering（协作过滤）**

在推荐系统中使用的一种方法，用于通过收集来自较大用户组的偏好来预测用户的兴趣。

**Computer Vision（计算机视觉）**

机器学习的领域之一，主要研究如何获得对图像或视频的高级理解。

**Confidence Interval（置信区间）**

一种区间估计，可能包含未知总体参数的真实值。该区间与置信水平相关，而置信水平用于量化参数在区间中的置信度。

**Contributor（贡献者）**

提供标注服务的人工标注员。

**Convolutional Neural Network (CNN)（卷积神经网络）**

一种深层、前馈人工神经网络类别，通常用于计算机视觉。

**Central Processing Unit (CPU)（中央处理单元）**

计算机中通过执行指令指定的基本算术、逻辑、控制和输入/输出操作来执行计算机程序的指令的电子电路。

**Cross-Validation (k-fold Cross-Validation, Leave-p-out Cross-Validation)（交叉验证-k 折交叉验证、留 p 法交叉验证）**

旨在评估如何将预测模型的结果推广到新数据集的一组流程，包括 k 折交叉验证及留 p 法交叉验证。


# D

**Data (Structured Data, Unstructured Data, Data augmentation)（数据-结构化数据、非结构化数据、数据增强）**

所有机器学习和人工智能项目的最基本要素。

**非结构化数据：**&#x672A;经处理的原始数据。文本数据是非结构化数据的完美示例，因为它没有格式化为特定功能。

**结构化数据：**&#x4EE5;机器学习算法可摄取的方式处理的数据；如果是监督机器学习，则为已标记的、经处理后的数据。

**数据增强：**&#x5C06;内外部来源衍生的新信息添加到数据集的过程（一般通过标注来实现）。

**Decision Tree（决策树）**

监督机器学习算法的一个类别，在此类算法中，数据会根据给定参数或条件进行迭代拆分。

**Deep Blue（深蓝）**

由 IBM 开发的国际象棋游戏计算机，作为全球首个在常规时限内同时战胜了国际象棋游戏和国际象棋比赛卫冕世界冠军的计算机国际象棋游戏系统而闻名。

**Deep Learning (Deep Reinforcement Learning)（深度学习/深度强化学习）**

与特定任务的算法相反，基于学习数据表示的更广泛的机器学习方法系列。深度学习包括监督学习、半监督学习或无监督学习。

**维度（降维、维度灾难）**

**降维：**&#x901A;过获取一组主变量来减少所考虑的随机变量数量的过程。另请参见特征选择。

**维度灾难：**&#x7531;于维数越多，可用数据量越稀疏这一事实，在高维空间中分析和组织数据时出现的一种现象。


# E

**Embedding (Word Embedding)（嵌入/词嵌入）**

某个实例中所含的某个数学结构的另一个实例，例如作为另一个组的子组的组。

**Ensemble Methods（集成方法）**

在统计和机器学习中，集成方法使用多种学习算法来获得更好的预测性能，而这种性能可以单独从任何组合式学习算法中获得。与统计力学中通常是无限的统计集成不同，机器学习集成仅由一组有限的替代模型组成，但通常允许在这些替代模型之间存在更灵活的结构。

**Entropy（熵）**

随机数据源传达的平均信息量。

**Epoch（时期）**

在深度学习模型训练场景中，完整训练数据集的一次训练循环。


# F

**Feature (Feature Selection, Feature Learning)（特征-特征选择、特征学习）**

用作模型输入的变量。

**Feature Learning（特征学习）**

旨在自动从原始数据中发现特征检测或分类所需的表示的一组技术。

**False Positive（误报）**

由于结果在虚无假设原本不应该存在的情况下拒绝虚无假设而导致的误差。

**False Negative（漏报）**

由于结果在虚无假设应该存在的情况下未拒绝虚无假设而导致的误差。

**Feed-Forward (Neural) Networks（前馈神经网络）**

一种人工神经网络，其中神经元之间的连接不会向后移动或形成循环。

**F-Score（F 得分）**

衡量模型准确性的一个指标，它会考量准确率和召回率来计算得分。更具体地说，F 得分是准确率和召回率的调和平均值，该平均值的最大值为 1（完美的准确率和召回率），最小值为 0。


# G

**Garbage In, Garbage Out（垃圾进垃圾出）**

一项原则，具体说的是：只要输入数据存在缺陷，就会导致误导性的结果并产生无意义的输出，也就是“垃圾”。

**General Data Protection Regulation (GDPR)（通用数据保护条例）**

欧盟颁布的一部针对欧盟内所有个体的数据保护和隐私法规，旨在控制公民和居民对其个人数据的控制。

**Genetic Algorithm（遗传算法）**

基于进化论的一种启发式搜索算法，进化论反映了自然选择的过程，在这个过程中，最能适应环境的个体会被选出生产下一代。

**Generative Adversarial Networks (GANs)（生成对抗网络）**

无监督机器学习中使用的一种人工智能算法类别，作为零和游戏框架中相互竞争的两个神经网络的组合予以实施。

**Graphic Processing Unit (GPU)（图形处理单元）**

一种专用的电子电路，它采用并行处理架构，旨在快速操作和更改内存，以加速图像渲染，从而使其可以同时执行多个计算。

**Ground Truth（事实真相）**

通过直接观察（而非推论）获得的一条信息。


# H

**Human-in-the-Loop（人机协同）**

人机协同 (HITL) 是人工智能的一个分支，它同时利用人类智能和机器智能来构建机器学习模型。在传统的“人机协同”方法中，人们会参与到一个良性循环，在其中训练、调整和测试特定算法。

**Hyperparameter (Hyperparameter Tuning)（超参数/超参数优化）**

模型外部的一种配置，其值无法从数据中估算出来，数据科学家会在模型训练过程中不断对其进行调整。-手动确定训练特定模型最佳配置的过程。


# I

**ImageNet（ImageNet 数据集）**

一个庞大的视觉数据集，由 1400 万个手工标注图像的 URL 组成，并以两万个不同类别进行组织，旨在用于视觉对象识别研究。

**Image Recognition（图像识别）**

计算机视觉中用于确定图像是否包含某些特定对象、特征或活动的问题。

**Inference（推理）**

通过将经训练的模型运用到新的未标记实例来进行预测的过程。

**Information Retrieval（信息检索）**

计算机科学的一个领域，旨在研究在文档中搜索信息、搜索文档本身、搜索描述数据的元数据以及搜索文本、图像或声音数据库的过程。


# J

**Jensen-Shannon Divergence （JS距离）**


# K


# L

**Layer (Hidden Layer)（层/隐藏层）**

人工神经网络中的一系列神经元，旨在处理一组输入特征，或者从广义上来说，处理这些神经元的输出。

隐藏层：神经元的一层，其输出连接到其他神经元的输入，因此不能作为网络输出直接实现可视化。

**Learning-to-Learn（元学习）**

机器学习领域的一个新方向，主要是研究算法如何通过分析自己的学习过程并对其加以改进来改变其归纳方式。

**Learning-to-Rank（排序学习）**

运用机器学习构建信息检索系统的排名模型。

**Learning Rate（学习率）**

梯度下降算法在人工神经网络训练阶段的每次迭代中所用的标量值，与梯度相乘得出结果。

**Logit Function（Logit 函数）**

在数学中（尤其是在统计学中）使用的 S 型“逻辑”函数的逆函数。

**Long Short-Term Memory Networks（长短期记忆网络）**

递归神经网络的一种变体，可用作梯度消失问题的一种解决方案。


# M

**Machine Learning（机器学习）**

人工智能的一个子领域，通常使用统计技术来赋予计算机“学习”能力，即借助数据来逐步提高特定任务的性能，而无需进行显式编程。

**Machine Learning Lifecycle Management（机器学习生命周期管理）**

机器学习系统的 DevOps。

**Machine Translation（机器翻译）**

计算语言学的一个子领域，主要是研究如何使用软件将文本或语音从一种语言翻译成另一种语言。

**Model（模型）**

模型是机器学习系统通过训练过程从训练数据中所学到内容的抽象表示。

**Monte Carlo（蒙特卡洛方法）**

一种使用重复随机采样生成合成模拟数据的近似方法。

**Multi-Modal Learning（多模式学习）**

机器学习的一个子领域，旨在将多模式信号合并到一起进行解释，并构建模型来处理和关联来自多种数据类型的信息。

**Multi-Task Learning（多任务学习）**

机器学习的一个子领域，同时利用多个任务之间的异同来解决多个任务。


# N

**Naive Bayes（朴素贝叶斯）**

基于贝叶斯定理并在特征之间具有很强的独立性假设的一系列简单概率分类器。

**Named Entity Recognition（命名实体识别）**

信息提取的一个子任务，旨在将文本中的命名实体识别和分类为预定类别，例如名称、位置、词性等。

**Natural Language Processing (NLP)（自然语言处理）**

人工智能领域之一，主要是研究计算机语言与人类语言之间的交互，尤其是如何处理和分析大量自然语言数据。

**Neural Networks（神经网络）**

参见人工神经网络。

**Neuron（神经元）**

人工神经网络中的一个单元，用以处理多个输入值，以生成单个输出值。

**Node（节点）**

参见神经元。


# O

**Optical Character Recognition（光学字符识别）**

将打印、手写或键入文本的图像转换为机器友好的文本格式。

**Optimization（优化）**

从可用替代方案中（基于某些标准）选择最佳方案。

**Overfitting（过度拟合）**

模型在不知情的情况下识别出噪声中的模式并假设这些模式代表了底层结构；模型的生成结果与特定数据集过于接近，因此无法很好地归纳到不可见的观察结果。

<br>


# P

**Pattern Recognition（模式识别）**

机器学习的领域之一，主要专注于数据模式的（监督或无监督）识别。

**Pooling (Max Pooling)（轮询/最大轮询）**

将卷积层生成的矩阵缩减为较小矩阵的过程。

**Personally Identifiable Information（个人可识别信息）**

可以单独使用或与某些其他信息结合使用，以识别特定个人的任何信息。

**Precision（准确率）**

正确的阳性结果数除以分类器返回的所有样阳性结果数。

**Prediction（预测）**

带有输入实例的训练模型的推断输出。

**Preprocessing（预处理）**

将原始数据转换为更易理解格式的过程。

**Pre-trained Model（预训练模型）**

通常已使用另一个数据集进行了初步训练的模型或模型的组成部分。另请参见：转移学习。

**Principal Component Analysis（主组件分析）**

使用正交变换将一组可能相关变量的观测值转换为一组线性不相关变量（称为主组件）的过程。

**Prior（先前技术）**

在考虑新证据之前，代表特定数量的先前存在信念的概率分布。


# Q


# R

**Random Forest（随机森林）**

一种集成学习方法，其工作原理是在训练时构造大量决策树并输出每个单独树的结果的组合版本（例如均值或众数）。

**Recall（召回率）**

所有相关样本中被正确分类为阳性的样本数所占百分比。

**Rectified Linear Unit（整流线性单元）**

使用整流函数作为激活函数的单元。

**Recurrent Neural Networks（递归神经网络）**

人工神经网络的类别之一，其中神经元之间的连接沿着序列形成有向图，使其表现出时序动态时间行为并使用其内部状态（内存）来处理顺序信号。

**Regression (Linear Regression, Logistic Regression)（回归-线性回归、逻辑回归）**

一组用于估计变量间关系的统计过程。

线性回归：一种简单的回归类型，以特征的线性组合作为输入，并输出连续值。

逻辑回归：一种回归类型，通过将 S 型函数运用到线性预测对分类问题中每个可能的离散标签值生成概率。

**Regressor（回归器）**

一种特征，即用作模型输入的解释性变量。

**Regularization（正则化）**

引入额外信息以防过度拟合的过程。

**Reinforcement Learning（强化学习）**

机器学习的子领域之一，主要是受人类行为的启发，研究代理应如何在给定的环境中采取行动，以实现累积奖励概念的最大化。

**Reproducibility (crisis of)（可再现性危机）**

科学领域的一种方法论危机，即学者们发现：许多科学研究的结果很难或不可能在独立研究人员或最初研究人员自己的后续研究中复制或再现。

**Restricted Boltzmann Machines（受限玻尔兹曼机）**

受限玻尔兹曼机 (RBM) 是一种生成型随机人工神经网络，可以学习其输入集上的概率分布。


# S

**Semi-Supervised Learning（半监督学习）**

监督学习技术的一个类别，它还可以利用可用的未标记数据进行训练，通常结合使用少量的已标记实例与大量的未标记行。另请参见监督学习和无监督学习。

**情绪分析（Sentiment Analysis）**

使用自然语言处理、文本分析、计算语言学和生物特征识别等功能系统地识别、提取、量化和研究受影响的状态和主观信息。

**Speech Recognition（语音识别）**

参见自动语音识别。

**Statistical Distribution（统计分布）**

在统计学中，经验分布函数是指与样本的经验指标相关的分布函数。该累积分布函数是一个阶跃函数，在 n 个数据点中的每个数据点上都跳了 1/n 次。它在测量变量的任何指定值处的值都是小于或等于对应指定值的测量变量观察值的分数。

**Supervised Learning（监督学习）**

一种机器学习任务，主要是指基于示例输入/输出对学习将输入映射到输出的函数。

**Support Vector Machines (SVM)（支持向量机）**

由一个单独的超平面正式定义的一种判别分类器类别，对于每个提供的带标记训练数据点，算法都会输出一个对新示例进行分类的最佳超平面。

**Synthetic Data（合成数据）**

当无法收集足够的实际数据或原始数据不满足特定要求时人工生成的数据。


# T

**TensorFlow（TensorFlow 代码库）**

一种开源代码库，在机器学习社区中非常流行，用于跨一系列任务的数据流编程。它是一个符号数学库，还可用于神经网络等机器学习应用。

**Time Series (Time Series Data)（时序/时序数据）**

在特定时间记录并根据它们的出现顺序进行索引处理的一系列数据点。

**Testing (Testing Data)（测试/测试数据）**

测试是指在监督机器学习情境中，使用保留数据评估模型最终性能的过程。

测试数据：数据科学家针对模型开发的测试阶段而选择的可用数据的子集。

**Topic Modeling（主题建模）**

无监督机器学习算法的一种类别，它使用聚类功能在文本数据中查找隐藏的结构并作为一个主题对其进行解释。

**Training Data（训练数据）**

在监督机器学习情境中，构建可从数据中学习并根据数据进行预测的算法。

训练数据：数据科学家针对模型开发的训练阶段而选择的可用数据的子集。

**Transfer Learning（转移学习）**

机器学习的一个领域，其重点在于使用获得的知识来解决特定问题，并将此类知识运用到其他相关问题。

**Turing Test（图灵测试）**

由艾伦·图灵开发的一种测试，用于评估机器表现出与人类相同的智能行为的能力。该测试包括人机聊天。如果在测试房间之外见证对话的评估人员不能可靠地区分人类与受测机器，则可以认定该机器已经通过了图灵测试。

**Type I Error（I 类误差）**&#x53C2;见[ **False Positive（误报）**](/ai-wiki/ren-gong-zhi-neng-zhuan-ye-shu-yu-biao/f)**。**

**Type II Error（II 类误差）**&#x53C2;见 [**False Negative（漏报）**](/ai-wiki/ren-gong-zhi-neng-zhuan-ye-shu-yu-biao/f)**。**

<br>


# U

**Uncertainty（不确定性）**

可能包含真实值的一系列值。

**Underfitting（拟合不足）**

机器学习算法无法正确捕获数据的底层结构，通常是因为模型不够高级或不适用于当前任务；与过度拟合的涵义相反。

**Unsupervised Learning（无监督学习）**

机器学习的领域之一，包括对用于描述未标记数据结构的函数进行推断。


# V

**Validation（验证）**

使用保留数据评估训练模型性能的过程；与模型性能最终评估的测试阶段相反，验证阶段旨在确定是否需要对模型进行任何迭代修改。

**Vanishing/Exploding Gradients（消失/爆炸梯度）**

数据科学家在采用基于梯度的学习方法和反向传播对人工神经网络进行训练时，由于神经网络中接收与误差函数偏导数成比例的更新的权重（考虑到每个训练迭代中的当前权重）而面临的可怕困难和主要障碍。

**Variance（方差）**

由于对训练集中小波动的敏感性而引起的误差，该误差按照针对随机变量与其平均值的平方偏差的期望值进行计算。


# W


# X


# Y


# Z


# 机器学习课程术语表

本资源收录了机器学习课程用到的相关术语，涉及机器学习基础、机器学习理论、Applied Math、SVM、Ensemble、DNN、Regularization、Matrix Factorization、Optimization、CNN、 Auto Encoder、RNN、Representation、Network Embedding、GAN、Adversarial Learning、Online Learning、Reinforcement Learning、AutoML、Graphic Model、Topic Model、MCMC、Mean-Field、non-parametric models等。

**`项目源地址：`**[**`https://aminer.cn/ml_taxonomy`**](https://aminer.cn/ml_taxonomy)

{% embed url="<https://www.aminer.cn/ml_taxonomy>" %}


# Prompt Engineering 是什么？​

解释这个词之前，首先需要解释 prompt 这个词。

简单的理解它是**给 AI 模型的指令**。

它可以是一个问题、一段文字描述，甚至可以是带有一堆参数的文字描述。AI 模型会基于 prompt 所提供的信息，生成对应的文本，亦或者图片。

比如，我们在 ChatGPT 里输入 `What is the capital of China?` (中国的首都是什么？)，这个问题就是 prompt。

而 Prompt Engineering （中文意思为提示工程，缩写为 PE）则是：

> **Prompt Engineering** 是一种人工智能（AI）技术，它通过设计和改进 AI 的 prompt 来提高 AI 的表现。
>
> **Prompt Engineering** 的目标是创建高度有效和可控的 AI 系统，使其能够准确、可靠地执行特定任务。

看上去很难懂，我试着换个方式让你理解。

你可能用过不少 AI 相关的产品，你或许会觉得好像只需要会说话、会打字，就能让 AI 输出答案。好像不需要什么技术。

的确，如果你只想让 AI 给你答案，你不需要额外做什么，只需要输入文字即可。但如果你想要得到满意的答案，甚至精确的答案。就需要用到 PE 这个技术。

因为人类的语言从根本上说是不精确的，目前机器还没法很好地理解人类说的话，所以才会出现 PE 这个技术。另外，受制于目前大语言模型 AI 的实现原理，部分逻辑运算问题，需要额外对 AI 进行提示（这里你不需要深究原因，暂时先知道这是个问题即可）。


# Learn Prompting (多语言)

免费和开源的PE学习课程

欢迎来到提示工程（Prompt Engineering）课程！

提示工程（Prompt Engineering）是**与 AI 进行有效沟通已实现预期结果**的过程。随着 AI 技术持续快速的发展，掌握提示工程技能变得尤为重要。提示工程技术可以应用于各种各样的任务，使其成为任何寻求提高日常和创新活动效率的人的有用工具。

本课程为不熟悉 AI 和 PE 的**初学者**量身打造，它将是你完美的起点。然而即使你不是初学者，你仍然会在本课程中找到有价值的见解。本课程是目前**最全面**的提示工程课程，内容涵盖 AI 简介到高级 PE 技术。

**`课程学习地址：`**[**`https://learnprompting.org/zh-Hans/docs/intro`**](https://learnprompting.org/zh-Hans/docs/intro)

{% embed url="<https://learnprompting.org/zh-Hans/docs/intro>" %}

**`项目Github：`**[**`https://github.com/trigaten/Learn_Prompting`**](https://github.com/trigaten/Learn_Prompting)

{% embed url="<https://github.com/trigaten/Learn_Prompting>" %}


# Learning Prompt (中文)

免费的 Prompt Engineering 教程，现已包含 ChatGPT 和 Midjourney 教程

本教程包含两个部分，内容是我在学习 Prompt Engineering 过程中，总结出来的一些经验和方法。如果你也在学习，希望这份教程能够帮到你。

1. [ChatGPT 教程](https://wiki.aig123.com/chatgpt-tutorial)：由浅入深，从使用者的角度，教你如何使用 ChatGPT，以及如何更好地使用 ChatGPT。
2. [Midjourney 教程](https://wiki.aig123.com/midjourney-tutorial)：通过各种场景案例，教你如何使用 Midjourney。即使是小白，看完教程后，也能够快速上手。

它不是什么？

* 本教程不是 prompt 大全，如果你预期是找到能直接用的 prompt，建议你谷歌找一找。本教程更多地是教你方法，以及解释这些方法为何有效。
* 本教程不是权威指南，在这个领域我也只是学生。

**`课程学习地址：`**[**`https://learningprompt.wiki/docs`**](https://learningprompt.wiki/docs)

{% embed url="<https://learningprompt.wiki/docs>" %}

**`项目Github：`**[**`https://github.com/thinkingjimmy/Learning-Prompt`**](https://github.com/thinkingjimmy/Learning-Prompt)

{% embed url="<https://github.com/thinkingjimmy/Learning-Prompt>" %}


# Learn Prompt (English)

Learn the art of Prompting

Welcome to [LearnPrompt.org](http://learnprompt.org/), your go-to resource for mastering the art of language model communication. We understand the power and potential of language models like **ChatGPT**, and we’re here to help you unlock that potential.

Our website is dedicated to providing you with the information and guidance you need to communicate effectively with ChatGPT and get the results you’re looking for.

**Learning website:** [**https://www.learnprompt.org/**](https://www.learnprompt.org/)

{% embed url="<https://www.learnprompt.org/>" %}


# Deep Learning (English)

In ChatGPT Prompt Engineering for Developers, you will learn how to use a large language model (LLM) to quickly build new and powerful applications.

## ChatGPT Prompt Engineering for Developers

* Learn prompt engineering best practices for application development
* Discover new ways to use LLMs, including how to build your own custom chatbot
* Gain hands-on practice writing and iterating on prompts yourself using the OpenAI API

**Deep Learning:** [**https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/**](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)

{% embed url="<https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/>" %}


# 基础篇

如果你对 AI 和 Prompt Engineering 不是很了解，建议你从基础篇开始读起。如果你已经了解基本的用法，那可以直接跳去高级篇阅读。


# 如何注册ChatGPT账号

{% embed url="<https://www.aig123.com/1574.html>" %}

### 准备

1. 网络代理。要求是韩国，日本，印度，新加坡，美国这些国家的地址都合适。对其他的我们还不太清楚，反正香港或中国的代理肯定不行。
2. 找一个国外手机号码，如果你没有用过接码平台也行，有些接码平台是无法接的，所以我们推荐一个就是[ sms-activate.org](https://sms-activate.org/?ref=4209435)
3. 准备一个浏览器

接下来开始一步一步注册

#### 在接验证码平台注册账号

打开接码平台 [sms-activate.org](https://sms-activate.org/?ref=4209435)，注册一个账号

[![ChatGPT账号注册详细教程](https://lh6.googleusercontent.com/cMeZQKgY35Bnn9cqLhmZuNP4wYfgawEmklF8HfGU6vAXCsIN8WnpmZ4zwEq3lhi116Gw9epgJOGyDjVLET0skBytiuT41ZGa08crSpt1yh6gnpCni-JJjSmPYiFTj9csfrgDStp3iANCPsbHcToModOOSUvhQzQFQtdziT6A6QzMjXez82OcaIQu5h1iCA)](https://lh6.googleusercontent.com/cMeZQKgY35Bnn9cqLhmZuNP4wYfgawEmklF8HfGU6vAXCsIN8WnpmZ4zwEq3lhi116Gw9epgJOGyDjVLET0skBytiuT41ZGa08crSpt1yh6gnpCni-JJjSmPYiFTj9csfrgDStp3iANCPsbHcToModOOSUvhQzQFQtdziT6A6QzMjXez82OcaIQu5h1iCA)

然后要充值余额

[![ChatGPT账号注册详细教程](https://lh5.googleusercontent.com/yVgQqWlnP3Rk0thUlNUP7SAtU66CTD1L4HRHm5KhC_ZSfy0PdY1ANoLJRE_NRRttSCyGdBuR2WprtzCfbbyrXJ4oY99QCg4fg8lH2GbPAYc9GcZ33hPSRirWq1nFhPytxkeJ4VQgvpQlMFNDnw3RAdWcgwK-QXXPh-JqcdRE-ofSl5CM_UZDOm1o2GvWuA)](https://lh5.googleusercontent.com/yVgQqWlnP3Rk0thUlNUP7SAtU66CTD1L4HRHm5KhC_ZSfy0PdY1ANoLJRE_NRRttSCyGdBuR2WprtzCfbbyrXJ4oY99QCg4fg8lH2GbPAYc9GcZ33hPSRirWq1nFhPytxkeJ4VQgvpQlMFNDnw3RAdWcgwK-QXXPh-JqcdRE-ofSl5CM_UZDOm1o2GvWuA)

一次接码OpenAi的验证码费用是大概11\~50卢布，人民币来看差不多是1\~5块钱，不过只能充美金，就先充直个1美金钱。可以选择对你任何方便方式。支付宝也有

[![ChatGPT账号注册详细教程](https://lh3.googleusercontent.com/g7fMxTmyZN6gl2uY0ZYdWebtbwrOZz7mEtdM3h1WwNGJxMcOVEeASgWk_qHmUYh68nRZ8mTuS5Wm7ZPvm8iAlDP8ChF6fDQZtLJYurScOr0SU8thZP9BKYwMPoRoMdg3OSksBQo_Z01Cxaun2knKymAItvkI51Uz8I9fZoRvDocoDD8jph-E0iJuZtLK3Q)](https://lh3.googleusercontent.com/g7fMxTmyZN6gl2uY0ZYdWebtbwrOZz7mEtdM3h1WwNGJxMcOVEeASgWk_qHmUYh68nRZ8mTuS5Wm7ZPvm8iAlDP8ChF6fDQZtLJYurScOr0SU8thZP9BKYwMPoRoMdg3OSksBQo_Z01Cxaun2knKymAItvkI51Uz8I9fZoRvDocoDD8jph-E0iJuZtLK3Q)

充值完成可能需要等一会，就先放着，直接进行下一步。

### 注册OpenAI（ChatGPT的官网）账号

打开ChatGPT的账户注册页面：<https://beta.openai.com/signup>，目前提供了三种注册登陆方式：

* **邮箱注册**（建议使用国外邮箱，推荐使用gmail邮箱）
* **Google账号登录**（使用 Google 账号登录注册ChatGPT时，需要输入Google账号地址及密码）
* **Microsoft账号登**（2023.4.19更新，使用Microsoft Account 注册会提示The email you provided is not supported））

我们这里用邮箱注册作为例子，填写邮箱和验证码，点击继续按钮

[![ChatGPT账号注册详细教程](https://lh4.googleusercontent.com/5FAoNOuw0v992RG1BreZuHjLJv1TpWYSs8Vk8nfTI4YnuKKgO-54rRHromwVnwjXGvHhdoDj0Lu_yjH2E4G4lOV2pvlgC1G-5g6SpvrVGnoxz6yQWtBiryWutOymCtW2UuHzEooXF1O-ilKMdBknLtEskP3MeaI1RZavvrDCXweIUnhdJ8t6eN1vjFoP3Q)](https://lh4.googleusercontent.com/5FAoNOuw0v992RG1BreZuHjLJv1TpWYSs8Vk8nfTI4YnuKKgO-54rRHromwVnwjXGvHhdoDj0Lu_yjH2E4G4lOV2pvlgC1G-5g6SpvrVGnoxz6yQWtBiryWutOymCtW2UuHzEooXF1O-ilKMdBknLtEskP3MeaI1RZavvrDCXweIUnhdJ8t6eN1vjFoP3Q)

用邮箱注册后你要验证邮件。进去邮箱，查看email里的链接。

[![ChatGPT账号注册详细教程](https://lh6.googleusercontent.com/8bcYtPuGvpYcfLzGqi4uF1cHeuiYRW0zYwTUc5EX--LVenBC0iDtpp00UWxbvk7aJAyW08RIhpArfDORzd8N8Eko6fK7prIZxBGEcZmYZ6NlAInYo9mls9S85R-rdsos4joQfLS0-l15GIvblEyXLc3jzoht24aecm-m9CeZIui76iZX3FOWapRuigyYYQ)](https://lh6.googleusercontent.com/8bcYtPuGvpYcfLzGqi4uF1cHeuiYRW0zYwTUc5EX--LVenBC0iDtpp00UWxbvk7aJAyW08RIhpArfDORzd8N8Eko6fK7prIZxBGEcZmYZ6NlAInYo9mls9S85R-rdsos4joQfLS0-l15GIvblEyXLc3jzoht24aecm-m9CeZIui76iZX3FOWapRuigyYYQ)

这里你需要输入需要的信息。

当然，有一些人会在这里遇到一个问题，会出现说不能在当前国家服务的提示。

[![ChatGPT账号注册详细教程](https://lh5.googleusercontent.com/7R1aY59o0MNxWmlONV5KktskGbifyEAP9cn2zYxxvIMkKO5bpaLtAo-76iHN0yPcL413dUxHytKI2hOgFzDi2SShQ60NrEdhhjNTUcjKUtf3xYFNBaiDe3yDdWH90gBmDoQRuVuz3fsNuQaVxUiPqlVWYULR3dAyOB35C2MmT3kOVfWk5fMOty0MUSZ48A)](https://lh5.googleusercontent.com/7R1aY59o0MNxWmlONV5KktskGbifyEAP9cn2zYxxvIMkKO5bpaLtAo-76iHN0yPcL413dUxHytKI2hOgFzDi2SShQ60NrEdhhjNTUcjKUtf3xYFNBaiDe3yDdWH90gBmDoQRuVuz3fsNuQaVxUiPqlVWYULR3dAyOB35C2MmT3kOVfWk5fMOty0MUSZ48A)

不用怕，这个这文章就帮助你解决这个问题。

这方面那，给你一招。一般你出现这种问题，就是因为你的代理没有全局，或者位置不对。香港或中国的的代理是100%无法通过的。

这个问题是非常神奇的，只要你出现了这个提示，那么你接下来怎么切换代理，都是没用的。现在提供给你你一招解决。

### 解决地区问题

首先，你要把你的代理切换到任何合适的地区，我们这里选择了韩国。

然后，先复制下面这段代码

window\.localStorage.removeItem(Object.keys(window\.localStorage).find(i=>i.startsWith(‘@@auth0spajs’)))

接着在地址栏里输入

javascript:

**请注意，这里一定要输入，因为你复制的话是粘贴不了的。**

然后再粘贴我们第一段复制的内容：

[![ChatGPT账号注册详细教程](https://lh6.googleusercontent.com/nZPZ-jlp6ZW_4DH6YpIPFJJGsL6Dz6g2_P3JcGlg8C18mvcmLSLC3FKI7cVeSLe-A0yq_8IdlocOGcmPmF0f7K-IHlQZSWekYbyi6kZXAbMC_mSovCG58f5EQuhDLydd9PWCf3eM47A2YNY790U11ka0Qw1PYUuhL3LyTnegsRRuMc9aTzX8FifLl2WOZg)](https://lh6.googleusercontent.com/nZPZ-jlp6ZW_4DH6YpIPFJJGsL6Dz6g2_P3JcGlg8C18mvcmLSLC3FKI7cVeSLe-A0yq_8IdlocOGcmPmF0f7K-IHlQZSWekYbyi6kZXAbMC_mSovCG58f5EQuhDLydd9PWCf3eM47A2YNY790U11ka0Qw1PYUuhL3LyTnegsRRuMc9aTzX8FifLl2WOZg)

然后按下回车键，刷新页面。如果你的代理没问题，就可以看到正常工作的注册页面了。

### 输入手机号码

[![ChatGPT账号注册详细教程](https://lh5.googleusercontent.com/-P8__DqW8L2ALL1R-prXR67miAndgWSKd1nyRVX6GIOLqqBM-pIYr9-ItBB4Y-dvbK4IsVomBl7ZLrHr60rkJIPh6ra1293C7CNKIgNGo0nRChZQSH4BnAtJ1IZfjJRZDhGnfNp_aGlo_O46QOChyz5REw0Xu3nOP2yqJSQmKRXbIP1xaWhiVmlAHtXE3g)](https://lh5.googleusercontent.com/-P8__DqW8L2ALL1R-prXR67miAndgWSKd1nyRVX6GIOLqqBM-pIYr9-ItBB4Y-dvbK4IsVomBl7ZLrHr60rkJIPh6ra1293C7CNKIgNGo0nRChZQSH4BnAtJ1IZfjJRZDhGnfNp_aGlo_O46QOChyz5REw0Xu3nOP2yqJSQmKRXbIP1xaWhiVmlAHtXE3g)

这里选的是韩国，这是因为我们使用韩国的代理，但是我们最好选择印度。然后到我们的接码网站上去。在左侧搜索OpenAi，然后点击印度。

[![ChatGPT账号注册详细教程](https://lh6.googleusercontent.com/CF_2ilYYa3bJndavHZkG2CRuKOIBnI_pRd7ljOik61P42vHUdfGN-yOautzgUI9Jty04jdoqf9tOQdsAfSlqKDO-SQwyrzS9JvriuPwO3UD7MlMJgbZi_E4M76FhzcL8X5zz8HewvTtwOCHziihUKESUovjR2f8pVg5QYF5gVWxCIOpJJ5NhKP2uruGrJA)](https://lh6.googleusercontent.com/CF_2ilYYa3bJndavHZkG2CRuKOIBnI_pRd7ljOik61P42vHUdfGN-yOautzgUI9Jty04jdoqf9tOQdsAfSlqKDO-SQwyrzS9JvriuPwO3UD7MlMJgbZi_E4M76FhzcL8X5zz8HewvTtwOCHziihUKESUovjR2f8pVg5QYF5gVWxCIOpJJ5NhKP2uruGrJA)

点击”小黄车”。

[![ChatGPT账号注册详细教程](https://lh5.googleusercontent.com/DSqE8eZhRe_v_jftZH4nf7KN74jL5ll3WqWeVQHd3EznubDpdsb2Tp9iI5R8dRtF9ZTlG5hZw2vaP3ihm-Ottk-1Yf6NSku7jdYAEM6APR8HwuLZbF_6dVe6uvtN0Ay9NlqhWiPyhnpeFkXnlsBXWPBA006_Li5SeuIzLLrceyTVw_ja71xCLaqK3v3HDw)](https://lh5.googleusercontent.com/DSqE8eZhRe_v_jftZH4nf7KN74jL5ll3WqWeVQHd3EznubDpdsb2Tp9iI5R8dRtF9ZTlG5hZw2vaP3ihm-Ottk-1Yf6NSku7jdYAEM6APR8HwuLZbF_6dVe6uvtN0Ay9NlqhWiPyhnpeFkXnlsBXWPBA006_Li5SeuIzLLrceyTVw_ja71xCLaqK3v3HDw)

然后我们复制这个号码，粘贴过去。然后我们点击发送验证码就完成了。

等一会网站会提示验证码，我们复制粘贴。

这里你要选择你打算如何使用OpenAI。随便选择吧。

### 使用ChatGPT

注册完后，打开去登陆使用即可。[账号注册](https://www.aig123.com/tag/sign-up)完成了，就可以尽情的使用ChatGPT来玩耍了，重新登录[ChatGPT 官网](https://chat.openai.com)，这时你就可以开始尽情和机器人聊天了。

### Tips

网络代理最好是韩国，日本，印度，新加坡，美国这些国家的地址，对其他的我们还不太清楚，反正香港或中国的代理肯定不行，账号容易被封。


# Prompt简介

### 什么是 Prompt Engineering？[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E7%AE%80%E4%BB%8B#%E4%BB%80%E4%B9%88%E6%98%AF-prompt-engineering) <a href="#shen-me-shi-promptengineering" id="shen-me-shi-promptengineering"></a>

解释这个词之前，首先需要解释 prompt 这个词。

简单的理解它是**给 AI 模型的指令**。

它可以是一个问题、一段文字描述，甚至可以是带有一堆参数的文字描述。AI 模型会基于 prompt 所提供的信息，生成对应的文本，亦或者图片。

比如，我们在 ChatGPT 里输入 `What is the capital of China?` (中国的首都是什么？)，这个问题就是 prompt。

而 Prompt Engineering （中文意思为提示工程，后缩写为 PE）则是：

> Prompt Engineering 是一种人工智能（AI）技术，它通过设计和改进 AI 的 prompt 来提高 AI 的表现。
>
> Prompt Engineering 的目标是创建高度有效和可控的 AI 系统，使其能够准确、可靠地执行特定任务。

看上去很难懂，我试着换个方式让你理解。

你可能用过不少 AI 相关的产品，你或许会觉得好像只需要会说话、会打字，就能让 AI 输出答案。好像不需要什么技术。

的确，如果你只想让 AI 给你答案，你不需要额外做什么，只需要输入文字即可。但如果你想要得到满意的答案，甚至精确的答案。就需要用到 PE 这个技术。

因为人类的语言从根本上说是不精确的，目前机器还没法很好地理解人类说的话，所以才会出现 PE 这个技术。另外，受制于目前大语言模型 AI 的实现原理，部分逻辑运算问题，需要额外对 AI 进行提示（这里你不需要深究原因，暂时先知道这是个问题即可）。

举个例子，如果我们在 ChatGPT 里输入这样的一段话：

```
What is 100*100/400*56?
```

ChatGPT 会返回一个错误的答案 0.4464（注意，如果你用下方的 [Dyno](https://trydyno.com/) 运行，答案应该也是错误的，API 版本的回答是 14）：<br>

但如果我们对 prompt 进行一些修改，答案则会是正确的。注意，如果你用下方的 Dyno 运行旧版的模型 API 的版本，做了修改后，答案应该还是错误的，需要用到 Role Prompting 才能生成正确答案。（这个后续章节会讲解）<br>

另外，目前的 AI 产品还比较早期，因为各种原因，产品设置了很多限制，如果你想要绕过一些限制，或者更好地发挥 AI 的能力，也需要用到 Prompt Engineering 技术。这个我们在后续的章节会讲到。

所以，总的来说，Prompt Engineering 是一种重要的 AI 技术：

* 如果你是 AI 产品用户，可以通过这个技术，充分发挥 AI 产品的能力，获得更好的体验，从而提高工作效率。
* 如果你是产品设计师，或者研发人员，你可以通过它来设计和改进 AI 系统的提示，从而提高 AI 系统的性能和准确性，为用户带来更好的 AI 体验。

### 需要学习 PE 吗？[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E7%AE%80%E4%BB%8B#%E9%9C%80%E8%A6%81%E5%AD%A6%E4%B9%A0-pe-%E5%90%97) <a href="#xu-yao-xue-xi-pe-ma" id="xu-yao-xue-xi-pe-ma"></a>

坦率说来，大家对 PE 有一些争议，

前面一节我解释了 prompt 的各种好处。但也有人认为这个就像当年搜索工具刚出来的时候，出现了不少所谓的「搜索专家」，熟练使用各种搜索相关的奇技淫巧。但现在这些专家都不存在了。因为产品会不断迭代，变得更加易用，无需再使用这些技巧。

拿前面提到的数学问题为例，API 版本算出来是 14，但 ChatGPT 的版本则看上去更准确一些，相信不久的将来，我们无需在公式前加括号，它就能返回正确的结果（2023-03-02）。

但综合我对产品和用户的理解，以及各位大佬的看法，我的理解是：

> **现在 AI 的发展还比较早期，了解和学习 PE 价值相对比较大，但长远来看可能会被淘汰。这个「长远」可能是 3 年，亦或者 1 年。**

OpenAI 的 CEO Sam Altman 在今年 2 月底提到给 ChatBot 写 prompt 是个非常高杠杆的技能。

![image.png](https://media.heptabase.com/v1/images/b92049c5-ff11-40d4-b38d-e7b45d802985/479cf9aa-2ef3-42d4-8568-f9c323e8b05f/image.png)

但如果你看过 Sam Altman [去年的访谈](https://greylock.com/greymatter/sam-altman-ai-for-the-next-era/)，他在去年 9 月的时候就提过，5年内我们很可能就不再需要 PE。

![image.png](https://media.heptabase.com/v1/images/b92049c5-ff11-40d4-b38d-e7b45d802985/14c13281-01c5-47b8-9c38-333d9b57783f/image.png)

**从用户的角度看，我认为学习 prompt 可以让你更好地使用 ChatGPT 等产品。**

**从产品的角度看，对于用户来说，我认为 prompt 会是个短期过度形态，未来肯定会有更友好的交互形式，或者理解能力更强的 AI 产品。**

### One More Thing[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E7%AE%80%E4%BB%8B#one-more-thing) <a href="#one-more-thing" id="one-more-thing"></a>

前特斯拉 AI 负责人 Andrej Karpathy（对了，他之前就在 OpenAI，最近二进宫回OpenAI 了） 今年 1 月底，说了这样的一句话：

![image.png](https://media.heptabase.com/v1/images/b92049c5-ff11-40d4-b38d-e7b45d802985/d01305ed-7008-4576-95ae-f9751f50a020/image.png)

所以本教程所有案例以及 prompt 都会以英文撰写。不管 PE 最后会怎样，看完后，起码你的英语水平会提高。

所以求求各位不要骂我中英文混杂了。哈哈哈 😁

<br>


# 基础用法

注意

本章节会简单介绍下 prompt ，如果你已经懂得使用 ChatGPT 这类产品的用法，可跳过这一章。

如果你没怎么使用过类似 ChatGPT 这类 Chatbot 产品，我简单说下它的基本用法：

* 你只需要登录 ChatGPT 后，在输入框内输入问题，或者指令即可。AI 会根据你的指令，返回相应的内容，在后续的章节中，我会介绍更详细的用法与技巧：

<img src="https://learningprompt.wiki/assets/images/basicprompt-eedea08227be6ba333afbcd9d07dc84d.png" alt="basicprompt.png" height="2326" width="2962">

* 另外，还有一个特别留意的，ChatGPT 跟你之前用的一些 AI 产品不同，它还支持多轮对话，比如当你问 `What is the capital of China?` (中国的首都是什么？)，它回答 Beijing，你可以接着问 `How many people are there？` ，你不需要在问题里重复 Beijing 这个词。ChatGPT 知道 there 指的就是 Beijing。


# 基本原则 & 建议

在和 ChatGPT 对话时，亦或者在使用和设计 prompt 时，有以下几个原则与建议。记住这几个原则，能让你写出更好的 prompt 😁

#### 建议使用最新的模型[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%88%99%20&%20%E5%BB%BA%E8%AE%AE#%E5%BB%BA%E8%AE%AE%E4%BD%BF%E7%94%A8%E6%9C%80%E6%96%B0%E7%9A%84%E6%A8%A1%E5%9E%8B) <a href="#jian-yi-shi-yong-zui-xin-de-mo-xing" id="jian-yi-shi-yong-zui-xin-de-mo-xing"></a>

如果你是直接使用 AI 产品，比如 ChatGPT 或者 Midjourney，那无需在意这个原则。如果你是通过 API 或者 OpenAI Playground 的方式使用，则建议你先使用最新的模型测试。

#### Prompt 里最好包含完整的信息[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%88%99%20&%20%E5%BB%BA%E8%AE%AE#prompt-%E9%87%8C%E6%9C%80%E5%A5%BD%E5%8C%85%E5%90%AB%E5%AE%8C%E6%95%B4%E7%9A%84%E4%BF%A1%E6%81%AF) <a href="#prompt-li-zui-hao-bao-han-wan-zheng-de-xin-xi" id="prompt-li-zui-hao-bao-han-wan-zheng-de-xin-xi"></a>

这个是对结果影响最大的因素。比如如果你想让 AI 写一首关于 OpenAI 的诗。

Less effective prompt:

```
Write a poem about OpenAI.
```

它生成的答案可能就会很宽泛，而更好的方式是增加更多的信息。

Better prompt:

```
Write a short inspiring poem about OpenAI, focusing on the recent DALL-E product launch (DALL-E is a text to image ML model) in the style of a {famous poet}
```

#### Prompt 最好简洁易懂，并减少歧义[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%88%99%20&%20%E5%BB%BA%E8%AE%AE#prompt-%E6%9C%80%E5%A5%BD%E7%AE%80%E6%B4%81%E6%98%93%E6%87%82%E5%B9%B6%E5%87%8F%E5%B0%91%E6%AD%A7%E4%B9%89) <a href="#prompt-zui-hao-jian-jie-yi-dong-bing-jian-shao-qi-yi" id="prompt-zui-hao-jian-jie-yi-dong-bing-jian-shao-qi-yi"></a>

这个比较好理解，即使你跟人说话，说一些简单的短句，对方也会更容易听懂，AI 也是这样。另外，在 prompt 里也需要减少一些歧义，少用模棱两可的词语。

比如像这个就很不明确，什么叫 not too much more？

```
The description for this product should be fairly short, a few sentences only, and not too much more.
```

更好的 prompt 是这样的，明确告知要写多少句话，就比较明确：

```
Use a 3 to 5 sentence paragraph to describe this product.
```

另外需要注意的是，简单并不代表简短。你的 prompt 也可以很长，只要你的 prompt 描述更充分就可以，即使长一点也没有关系。

#### Prompt 要使用正确的语法、拼写，以及标点[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%88%99%20&%20%E5%BB%BA%E8%AE%AE#prompt-%E8%A6%81%E4%BD%BF%E7%94%A8%E6%AD%A3%E7%A1%AE%E7%9A%84%E8%AF%AD%E6%B3%95%E6%8B%BC%E5%86%99%E4%BB%A5%E5%8F%8A%E6%A0%87%E7%82%B9) <a href="#prompt-yao-shi-yong-zheng-que-de-yu-fa-pin-xie-yi-ji-biao-dian" id="prompt-yao-shi-yong-zheng-que-de-yu-fa-pin-xie-yi-ji-biao-dian"></a>

特别是在使用英语的 prompt 的时候，一定要注意语法和拼写。

🚧

例子待补充

#### 从简单的先开始，并给产品多一点耐心[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E5%8E%9F%E5%88%99%20&%20%E5%BB%BA%E8%AE%AE#%E4%BB%8E%E7%AE%80%E5%8D%95%E7%9A%84%E5%85%88%E5%BC%80%E5%A7%8B%E5%B9%B6%E7%BB%99%E4%BA%A7%E5%93%81%E5%A4%9A%E4%B8%80%E7%82%B9%E8%80%90%E5%BF%83) <a href="#cong-jian-dan-de-xian-kai-shi-bing-gei-chan-pin-duo-yi-dian-nai-xin" id="cong-jian-dan-de-xian-kai-shi-bing-gei-chan-pin-duo-yi-dian-nai-xin"></a>

最后一点算是我个人的建议。如我在前面提到的例子 `What is 100*100/40*56？`一样，如果发现机器理解错误，不妨补充点信息，不妨多实验几次，给 AI 多一点耐心。

<br>


# 基本使用场景 & 使用技巧


# 场景1：问答问题

这个场景应该是使用 AI 产品最常见的方法。以 ChatGPT 为例，一般就是你提一个问题，ChatGPT 会给你答案，比如像这样：

<img src="https://learningprompt.wiki/assets/images/Q&#x26;AExample-eedea08227be6ba333afbcd9d07dc84d.png" alt="Q&#x26;amp;AExample.png" height="2326" width="2962">

在这个场景下，prompt 只要满足前面提到的基本原则，基本上就没有什么问题。但需要注意，不同的 AI 模型擅长的东西都不太一样，prompt 可能需要针对该模型进行微调。另外，目前的 AI 产品，也不是无所不能，有些问题你再怎么优化 prompt 它也没法回答你。以 ChatGPT 为例：

1. ChatGPT 比较擅长回答基本事实的问题，比如问 `什么是牛顿第三定律？` 。但不太擅长回答意见类的问题，比如问它 `谁是世界第一足球运动员？`，它就没法回答了。
2. 另外，ChatGPT 的数据仅有 2021 年 9 月以前的，如果你问这个时间以后的问题，比如 `现在的美国总统是谁？`它的答案是「截至2021年9月，现任美国总统是乔·拜登（Joe Biden）。」

🔴 求助

这种直接提问的 prompt ，我们称之为 Zero-shot prompt。模型基于一些通用的先验知识或模型在先前的训练中学习到的模式，对新的任务或领域进行推理和预测。你会在高级篇看到相关的介绍，以及更多有意思的使用方法。

另外，正如我在前面基础用法一章中提到的那样，问答场景里还有一个很重要的玩法，就是多轮聊天，你可以针对某个问题，进行多轮的提问。

### **使用技巧一：To do and Not To do**[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/scenario-1-ask-questions#%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7%E4%B8%80to-do-and-not-to-do) <a href="#shi-yong-ji-qiao-yi-todoandnottodo" id="shi-yong-ji-qiao-yi-todoandnottodo"></a>

注意

我介绍的技巧其实在各个场景都可以使用，我将其放在某个场景下解释，只是因为我觉得它更有可能在这个场景用到。你也会更容易记住这个用法。并不意味着这个技巧仅能在此场景使用。并且多技巧混用也是个不错的用法。

在问答场景里，为了让 AI 回答更加准确，一般会在问题里加条件。比如让 AI 推荐一部电影给你 `Recommend a movie to me` 。但这个 prompt 太空泛了，AI 无法直接回答，接着它会问你想要什么类型的电影，但这样你就需要跟 AI 聊很多轮，效率比较低。

所以，为了提高效率，一般会在 prompt 里看到类似这样的话（意思是不要询问我对什么感兴趣，或者问我的个人信息）：

```
DO NOT ASK FOR INTERESTS. DO NOT ASK FOR PERSONAL INFORMATION.
```

如果你在 ChatGPT 里这样提问，或者使用 ChatGPT 最新的 API ，它就不会问你问题，而是直接推荐一部电影给你，它的 Output 是这样的：

```
Certainly! If you're in the mood for an action-packed movie, you might enjoy "John Wick" (2014), directed by Chad Stahelski and starring Keanu Reeves. The movie follows a retired hitman named John Wick who seeks vengeance against the people who wronged him. It's a fast-paced and stylish film with lots of thrilling action sequences and an engaging story. If you're looking for something that will keep you on the edge of your seat, "John Wick" is definitely worth a watch!
```

但如果你使用的是如 Davinci-003 这样的模型，它的 Output 很可能是这样的，它还会问你的兴趣爱好：

```
Sure, I can recommend a movie based on your interests. What kind of movie would you like to watch? Do you prefer action, comedy, romance, or something else?
```

所以 OpenAI 的 API [最佳实践文档](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api)里，提到了一个这样的最佳实践：

> **Instead of just saying what not to do, say what to do instead. 与其告知模型不能干什么，不妨告诉模型能干什么。**

我自己的实践是，虽然现在最新的模型已经理解什么是 Not Todo ，但如果你想要的是明确的答案，加入更多限定词，告知模型能干什么，回答的效率会更高，且预期会更明确。还是电影推荐这个案例，你可以加入一个限定词：

```
Recommend a movie from the top global trending movies to me.
```

当然并不是 Not Todo 就不能用，如果：

* 你已经告知模型很明确的点，然后你想缩小范围，那增加一些 Not Todo 会提高不少效率。
* 你是在做一些探索，比如你不知道如何做精准限定，你只知道不要什么。那可以先加入 Not Todo ，让 AI 先发散给你答案，当探索完成后，再去优化 prompt。

以下是一些场景案例，我整理了两个 Less Effective（不太有效的） 和 Better（更好的） prompt，你可以自己尝试下这些案例：

| 场景          | Less Effective                                                                   | Better                                                                           | 原因                                                                |
| ----------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| 推荐雅思必背英文单词  | Please suggest me some essential words for IELTS                                 | Please suggest me 10 essential words for IELTS                                   | 后者 prompt 会更加明确，前者会给大概 20 个单词。这个仍然有提升的空间，比如增加更多的限定词语，像字母 A 开头的词语。 |
| 推荐香港值得游玩的地方 | Please recommend me some places to visit in Hong Kong. Do not recommend museums. | Please recommend me some places to visit in Hong Kong including amusement parks. | 后者的推荐会更准确高效一些，但如果你想进行一些探索，那前者也能用。                                 |


# 场景2：基于示例回答

### 场景介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF2%EF%BC%9A%E5%9F%BA%E4%BA%8E%E7%A4%BA%E4%BE%8B%E5%9B%9E%E7%AD%94#%E5%9C%BA%E6%99%AF%E4%BB%8B%E7%BB%8D) <a href="#chang-jing-jie-shao" id="chang-jing-jie-shao"></a>

在某些场景下，我们能比较简单地向 AI 描述出什么能做，什么不能做。但有些场景，有些需求很难通过文字指令传递给 AI，即使描述出来了，AI 也不能很好地理解。

比如给宠物起英文名，里面会夹杂着一些所谓的名字风格。此时你就可以在 prompt 里增加一些例子，我们看看这个例子。

这个是没有任何示例的 Prompt：

```
Suggest three names for a horse that is a superhero.
```

Output 如下所示。第一个感觉还行，第二个 Captain 有 hero 的感觉，但 Canter 就像是说这匹马跑得很慢，感觉不太合适，而且三个都比较一般，不够酷。

```
Thunder Hooves, Captain Canter, Mighty Gallop
```

### **技巧 2：增加示例**[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF2%EF%BC%9A%E5%9F%BA%E4%BA%8E%E7%A4%BA%E4%BE%8B%E5%9B%9E%E7%AD%94#%E6%8A%80%E5%B7%A7-2%E5%A2%9E%E5%8A%A0%E7%A4%BA%E4%BE%8B) <a href="#ji-qiao-2-zeng-jia-shi-li" id="ji-qiao-2-zeng-jia-shi-li"></a>

如果你无法用文字准确解释问题或指示，你可以在 prompt 里增加一些案例：

```
Suggest three names for an animal that is a superhero.

Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: Horse
Names:
```

增加例子后，Output 的结果就更酷一些，或者说是接近我想要的那种风格的名字。

```
Gallop Guardian, Equine Avenger, The Mighty Stallion
```

以下是一些场景案例，我整理了两个 Less Effective（不太有效的）和 Better（更好的）prompt，你可以自己尝试下这些案例：

| 场景            | Less Effective                                                                                                                     | Better                                                                                                                                                                                                                                                                                     | 原因                                |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------- |
| 起产品名          | <p>Product description: A pair of shoes that can fit any foot size.<br>Seed words: adaptable, fit, omni-fit.<br>Product names:</p> | <p>Product description: A home milkshake maker<br>Seed words: fast, healthy, compact.<br>Product names: HomeShaker, Fit Shaker, QuickShake, Shake Maker<br>Product description: A pair of shoes that can fit any foot size.<br>Seed words: adaptable, fit, omni-fit.<br>Product names:</p> | 可以在下方运行这个案例，在不给示例的情况下 AI 会给你什么答案。 |
| 将电影名称转为 emoji | Convert Star Wars into emoji                                                                                                       | <p>Convert movie titles into emoji.<br>Back to the Future: 👨👴🚗🕒<br>Batman: 🤵🦇<br>Transformers: 🚗🤖<br>Star Wars:</p>                                                                                                                                                                | 可以在下方运行这个案例，在不给示例的情况下 AI 会给你什么答案。 |

\
🔴

你可能在试用此技巧的时候发现，即使给了案例，模型也不一定会返回正确的答案，此时你就需要用到更高级的技巧，在高级篇我会讲如何优化这个提示，从而让结果更加准确。

<br>


# 场景3：推理

### 场景介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF3%EF%BC%9A%E6%8E%A8%E7%90%86#%E5%9C%BA%E6%99%AF%E4%BB%8B%E7%BB%8D) <a href="#chang-jing-jie-shao" id="chang-jing-jie-shao"></a>

在问答这个大场景下，还有一个子场景是推理，这个场景非常有意思，而且是个非常值得深挖的场景，prompt 在此场景里发挥的作用非常大。

如果你想用 ChatGPT API 做点什么小应用，我建议可以从这个场景入手，相对来说没有其他场景那么红海。

举个比较简单的例子，我将美国工商管理硕士的入学考试 GMAT 的一道数学题输入进了 ChatGPT：

```
If a real estate agent received a commission of 6 percent of the selling price of a certain house, what was the selling price of the house?
(1) The selling price minus the real estate agent’s commission was $84,600.
(2) The selling price was 250 percent of the original purchase price of $36,000.

(A) Statement (1) ALONE is sufficient, but statement (2) alone is not sufficient.
(B) Statement (2) ALONE is sufficient, but statement (1) alone is not sufficient.
(C) BOTH statements TOGETHER are sufficient, but NEITHER statement ALONE is sufficient.
(D) EACH statement ALONE is sufficient.
(E) Statements (1) and (2) TOGETHER are NOT sufficient.
```

这道题目的中文意思是这样的（你不妨也思考下这个题目？）：

```
如果一个房地产经纪人的佣金是某个房子的售价的6％，那么这个房子的售价是多少？
（1）售价减去房地产经纪人的佣金为84,600美元。
（2）购买价是36,000美元，售价是购买价的250%。

（A）仅陈述（1）足以回答问题，但仅陈述（2）不能回答问题。
（B）仅陈述（2）足以回答问题，但仅陈述（1）不能回答问题。
（C）两个陈述合起来足以回答问题，但没有一个陈述单独足以回答问题。
（D）每个陈述单独足以回答问题。
（E）陈述（1）和（2）合起来不能回答问题。
```

它的 Output 是这样的，它会根据题目的要求去推理和运算：

```
Let's assume the selling price of the house is S.

According to the given information, the real estate agent's commission is 6% of S, which is 0.06S.

So, the amount received by the seller after paying the commission would be (S - 0.06S) = 0.94S.

Statement (1) tells us that 0.94S = $84,600. Solving for S, we get S = $90,000.

Therefore, statement (1) alone is sufficient to determine the selling price of the house.

Statement (2) tells us that the selling price is 250% of the original purchase price, which means S = 2.5*$36,000 = $90,000.

Therefore, statement (2) alone is also sufficient to determine the selling price of the house.

Since both statements individually provide the same answer, we can conclude that together they are also sufficient to determine the selling price of the house.

Hence, the answer is (D) EACH statement ALONE is sufficient.
```

翻译成中文是这样的：

```
假设房子的售价为S。

根据所给信息，房地产经纪人的佣金是S的6％，即0.06S。

因此，在支付佣金后卖方收到的金额为（S-0.06S）= 0.94S。

陈述（1）告诉我们，0.94S = 84,600美元。解出S，我们得到S = $90,000。

因此，陈述（1）单独足以确定房子的售价。

陈述（2）告诉我们，售价是原始购买价的250％，这意味着S = 2.5 * $36,000 = $90,000。

因此，陈述（2）单独也足以确定房子的售价。

由于两个陈述分别提供相同的答案，我们可以得出结论，它们共同足以确定房子的售价。

因此，答案是（D）每个陈述单独足以回答问题。
```

这个场景还比较简单，我就不在这举更多例子了，你可以将各种题目输入进 ChatGPT 里试试。

<br>


# 场景4：无中生有——写代码

### 场景介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF4%EF%BC%9A%E6%97%A0%E4%B8%AD%E7%94%9F%E6%9C%89%E2%80%94%E2%80%94%E5%86%99%E4%BB%A3%E7%A0%81#%E5%9C%BA%E6%99%AF%E4%BB%8B%E7%BB%8D) <a href="#chang-jing-jie-shao" id="chang-jing-jie-shao"></a>

除了回答问题外，另一个重要的场景是让 AI 根据你的要求完成一些内容生成任务，根据输出的结果差异，我将其概括为以下几个主要场景：

1. 无中生有
2. 锦上添花
3. 化繁为简

本章，我们先来聊聊「无中生有」场景。顾名思义，就是让 AI 给你生成一些内容。你只需要向 AI 描述你想写的内容，AI 就会按你的要求写出该内容。比如：

1. 撰写招聘信息
2. 撰写电商平台的货物描述
3. 撰写短视频脚本
4. 甚至让它写代码都可以

像撰写招聘信息等，你只需要明确目标，将目标定得比较明确即可生成能让你较为满意的答案。本章我想聊下写代码。下面是一个让 ChatGPT 写代码的案例。

Prompt：

```
Create a MySQL query for all students in the Computer Science Department:
Table departments, columns = [DepartmentId, DepartmentName]
Table students, columns = [DepartmentId, StudentId, StudentName]
```

Output：

```
SELECT students.*
FROM students
INNER JOIN departments
ON students.DepartmentId = departments.DepartmentId
WHERE departments.DepartmentName = 'Computer Science';
```

### **技巧 3：使用引导词，引导模型输出特定语内容**[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF4%EF%BC%9A%E6%97%A0%E4%B8%AD%E7%94%9F%E6%9C%89%E2%80%94%E2%80%94%E5%86%99%E4%BB%A3%E7%A0%81#%E6%8A%80%E5%B7%A7-3%E4%BD%BF%E7%94%A8%E5%BC%95%E5%AF%BC%E8%AF%8D%E5%BC%95%E5%AF%BC%E6%A8%A1%E5%9E%8B%E8%BE%93%E5%87%BA%E7%89%B9%E5%AE%9A%E8%AF%AD%E5%86%85%E5%AE%B9) <a href="#ji-qiao-3-shi-yong-yin-dao-ci-yin-dao-mo-xing-shu-chu-te-ding-yu-nei-rong" id="ji-qiao-3-shi-yong-yin-dao-ci-yin-dao-mo-xing-shu-chu-te-ding-yu-nei-rong"></a>

在代码生成场景里，有一个小技巧，上面提到的案例，其 prompt 还可以继续优化，在 prompt 最后，增加一个代码的引导，告知 AI 我已经将条件描述完了，你可以写代码了。

在 prompt 的最后增加 SELECT 可以很好地提示 AI 可以写 SQL 代码了。Better prompt：

```
Create a MySQL query for all students in the Computer Science Department:
Table departments, columns = [DepartmentId, DepartmentName]
Table students, columns = [DepartmentId, StudentId, StudentName]
SELECT
```

同样的道理，如果你想让 AI 写 Python 代码，那 import 会是比较好的提示。但需要注意，这个只是告知 AI 可以写代码了，并不能告知 AI 写何种代码，你仍然需要在 prompt 里增加提示，告知 AI 要生成何种语言的代码。

在吴恩达的 ChatGPT Prompt Engineering [课程](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)中，也提到这个技巧，只是在课程中，引导词并不是放在最后，而是在 prompt 里直接说明，让 AI 生成一个 JSON 格式的内容。课程中的例子是这样的（注意这个是 python 代码）：

```
prompt = f"""
Generate a list of three made-up book titles along \
with their authors and genres.
Provide them in JSON format with the following keys:
book_id, title, author, genre.
"""
```

我简单解释下，其关键是在 prompt 里跟 AI 说明，需要 AI 按照 JSON 格式输出内容。


# 场景5：锦上添花——改写内容

### 场景介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF5%EF%BC%9A%E9%94%A6%E4%B8%8A%E6%B7%BB%E8%8A%B1%E2%80%94%E2%80%94%E6%94%B9%E5%86%99%E5%86%85%E5%AE%B9#%E5%9C%BA%E6%99%AF%E4%BB%8B%E7%BB%8D) <a href="#chang-jing-jie-shao" id="chang-jing-jie-shao"></a>

除了从 0 生成内容外，你也可以先给 AI 一段已经写好的内容，然后让 AI 对其进行修改，让 AI 帮你将内容改得更好。实际的场景有如：

1. 翻译：将中文文档翻译成英文，亦或者将英文翻译成中文。关于翻译，我还想强调，像 ChatGPT 除了能翻译人类的语言外，还能翻译编程语言，比如将 Python 代码翻译成 Haskell 代码。
2. 修改：修改内容的语法，甄别内容里的错别字。
3. 润色：润色文章，将内容改成另一种风格。

本章重点介绍下润色场景，下面这是个润色的例子。

Prompt（内容来自维基百科）：

```
Please rewrite the following sentences to make them easier to understand.
OpenAI is an American artificial intelligence (AI) research laboratory consisting of the non-profit OpenAI Incorporated (OpenAI Inc.) and its for-profit subsidiary corporation OpenAI Limited Partnership (OpenAI LP). OpenAI conducts AI research with the declared intention of promoting and developing a friendly AI. OpenAI systems run on the fifth most powerful supercomputer in the world.[5][6][7] The organization was founded in San Francisco in 2015 by Sam Altman, Reid Hoffman, Jessica Livingston, Elon Musk, Ilya Sutskever, Peter Thiel and others,[8][1][9] who collectively pledged US$1 billion. Musk resigned from the board in 2018 but remained a donor. Microsoft provided OpenAI LP with a $1 billion investment in 2019 and a second multi-year investment in January 2023, reported to be $10 billion.[10]
```

它的 Output 是这样的：

```
OpenAI is a research organization that focuses on artificial intelligence (AI). It has two parts: a non-profit called OpenAI Incorporated and a for-profit subsidiary called OpenAI Limited Partnership. The organization's goal is to create AI that is friendly and beneficial to humans. OpenAI uses one of the most powerful supercomputers in the world for its research. The organization was founded in San Francisco in 2015 by a group of people who pledged a total of $1 billion, including Sam Altman, Reid Hoffman, Jessica Livingston, Elon Musk, Ilya Sutskever, and Peter Thiel. Musk resigned from the board in 2018 but still supports the organization financially. In 2019, Microsoft invested $1 billion in OpenAI LP, and in January 2023, they made a second investment reported to be $10 billion.
```

### 技巧 4：增加 Role（角色）或人物[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF5%EF%BC%9A%E9%94%A6%E4%B8%8A%E6%B7%BB%E8%8A%B1%E2%80%94%E2%80%94%E6%94%B9%E5%86%99%E5%86%85%E5%AE%B9#%E6%8A%80%E5%B7%A7-4%E5%A2%9E%E5%8A%A0-role%E8%A7%92%E8%89%B2%E6%88%96%E4%BA%BA%E7%89%A9) <a href="#ji-qiao-4-zeng-jia-role-jiao-se-huo-ren-wu" id="ji-qiao-4-zeng-jia-role-jiao-se-huo-ren-wu"></a>

前面提到的改写例子，我在 prompt 里加了 Role 让其更易于阅读，这个优化方法是 OK 的。也很常用，比如你想将你写的 Email 改得更商务，则只需要加 business 相关的词即可。

我再介绍一个更有效的技巧，就是在 prompt 里增加一些 role（角色）相关的内容，让 AI 生成的内容更符合你的需求。

比如还是上面那个 rewrite 的例子，我在例子前加入这样的一段话，我让 AI 假设自己是一个小学老师，并且很擅长将复杂的内容转变成 7、8 岁小朋友也能听懂的话，然后再改写这段话：

```
You are a primary school teacher who can explain complex content to a level that a 7 or 8 year old child can understand. Please rewrite the following sentences to make them easier to understand:
```

Output 就变成了下面这样。不管是用词，还是语法，看起来都更容易懂了。

```
OpenAI is a place where people work on making computers really smart. It's like a lab where they do research to make computers do amazing things! They want the computers to be really friendly and helpful to people. They use one of the most powerful computers in the world to do this research. A bunch of really rich and smart people gave money to start this lab. One of them is Elon Musk, but he left in 2018. Another really big company, Microsoft, gave them a lot of money too.
```

另外除了增加角色外，还能让 AI 模拟某个人，比如让 AI 以 David Foster Wallace 的风格改写上述那段话：

```
Imagine you are the famous writer David Foster Wallace, please rewrite this sentences.
```

Output 是这样的：

```
As David Foster Wallace, I might rewrite these sentences to sound more like this:

OpenAI is a lab that studies something called artificial intelligence, which is like when computers can do things that normally only humans can do. They have a big computer that's one of the most powerful in the world, and they're trying to make sure the AI they create is friendly and helpful. The lab was started in 2015 in a city called San Francisco, and a bunch of important people gave them a lot of money to do their research. One of those people was Elon Musk, who stopped working there but still gives them money, and Microsoft also gave them a lot of money recently.
```

关于这个技巧的应用，以及如何更好地使用 AI 提升写作能力，建议各位阅读 Nat Eliason 的 [Using ChatGPT as a Writing Coach](https://blog.nateliason.com/p/chatgpt-writing-coach)，他使用 ChatGPT 辅助其写作，就用到了上述的技巧。


# 场景6：锦上添花——信息解释

### 场景介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF6%EF%BC%9A%E9%94%A6%E4%B8%8A%E6%B7%BB%E8%8A%B1%E2%80%94%E2%80%94%E4%BF%A1%E6%81%AF%E8%A7%A3%E9%87%8A#%E5%9C%BA%E6%99%AF%E4%BB%8B%E7%BB%8D) <a href="#chang-jing-jie-shao" id="chang-jing-jie-shao"></a>

锦上添花下的第二大的场景是信息解释。它跟改写内容有点像，但又不太一样，信息解释有可能提供超过原文内容的信息。

举几个信息解释的例子，大家应该就能理解了：

1. 解释代码：比如你看到一段 Python 的代码，但你看不懂，你可以让 AI 解释下代码的含义。
2. 解释论文：看某篇论文看不懂，或者论文里的某一段看不懂，你也可以让 AI 解释。

以解释代码为例，它的 prompt 是这样的（此案例来自 OpenAI [官方案例](https://platform.openai.com/examples/default-python-to-natural-language)）：

```
Explanation of what the code does:

Python 3 
def remove_common_prefix(x, prefix, ws_prefix): 
    x["completion"] = x["completion"].str[len(prefix) :] 
    if ws_prefix: 
        # keep the single whitespace as prefix 
        x["completion"] = " " + x["completion"] 
return x
```

以下是 ChatGPT 的 Output，它阐述了这段代码是拿来干什么的，同时还阐述了各个参数的含义：

```
This is a Python function called remove_common_prefix that takes in three parameters: x, prefix, and ws_prefix.

The x parameter is assumed to be a Pandas DataFrame or Series object with a column named "completion", which contains strings that may or may not start with the prefix string.

The prefix parameter is a string that represents the common prefix that needs to be removed from the beginning of each string in the "completion" column of the DataFrame.

The ws_prefix parameter is a Boolean value that indicates whether or not to keep a single whitespace character as a prefix after the common prefix has been removed.

The function modifies the "completion" column of the DataFrame by removing the prefix string from the beginning of each string in that column using the Pandas str method and string slicing. The len(prefix) : syntax is used to slice the string starting from the character that follows the prefix.

If ws_prefix is True, then the function adds a single whitespace character as a prefix to each string in the "completion" column after removing the prefix.

Finally, the modified DataFrame is returned by the function.
```

<br>


# 场景7：化繁为简——信息总结

### 场景介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF7%EF%BC%9A%E5%8C%96%E7%B9%81%E4%B8%BA%E7%AE%80%E2%80%94%E2%80%94%E4%BF%A1%E6%81%AF%E6%80%BB%E7%BB%93#%E5%9C%BA%E6%99%AF%E4%BB%8B%E7%BB%8D) <a href="#chang-jing-jie-shao" id="chang-jing-jie-shao"></a>

内容生成大场景下的第二个场景是化繁为简，这个场景其实很好理解，就是将复杂的内容，转为简单的内容，一般常遇到的场景有：

1. 信息总结：顾名思义，就是对一堆信息进行总结。
2. 信息解释：这个跟改写内容有点像，但这个更偏向于解释与总结。下一章会给大家介绍更多的例子。
3. 信息提取：提取信息里的某一段内容，比如从一大段文字中，找到关键内容，并分类。

本章会讲一下信息总结。信息总结还是比较简单的，基本上在 prompt 里加入总结 summarize 就可以了。但如果你想要一些特别的效果，不妨组合使用之前介绍的技巧，比如：

1. 使用技巧 2，增加总结示例，让 AI 总结符合你需求的内容
2. 使用技巧 4，增加 role，让 AI 总结的内容具有一定的风格

不过在这个场景，还有个技巧需要各位注意。

### **技巧 5：使用特殊符号将指令和需要处理的文本分开**[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF7%EF%BC%9A%E5%8C%96%E7%B9%81%E4%B8%BA%E7%AE%80%E2%80%94%E2%80%94%E4%BF%A1%E6%81%AF%E6%80%BB%E7%BB%93#%E6%8A%80%E5%B7%A7-5%E4%BD%BF%E7%94%A8%E7%89%B9%E6%AE%8A%E7%AC%A6%E5%8F%B7%E5%B0%86%E6%8C%87%E4%BB%A4%E5%92%8C%E9%9C%80%E8%A6%81%E5%A4%84%E7%90%86%E7%9A%84%E6%96%87%E6%9C%AC%E5%88%86%E5%BC%80) <a href="#ji-qiao-5-shi-yong-te-shu-fu-hao-jiang-zhi-ling-he-xu-yao-chu-li-de-wen-ben-fen-kai" id="ji-qiao-5-shi-yong-te-shu-fu-hao-jiang-zhi-ling-he-xu-yao-chu-li-de-wen-ben-fen-kai"></a>

不管是信息总结，还是信息提取，你一定会输入大段文字，甚至多段文字，此时有个小技巧。

可以用“”“将指令和文本分开。根据我的测试，如果你的文本有多段，增加”“”会提升 AI 反馈的准确性（这个技巧来自于 OpenAI 的 API [最佳实践文档](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api)）

信息

感谢 CraneHuang6 的提醒，这里还能用 ### 符号区隔，不过我一般会用“”“ ，因为我有的时候会用 # 作为格式示例，太多 # 的话 prompt 会看起来比较晕 😂

像我们之前写的 prompt 就属于 Less effective prompt。为什么呢？据我的测试，主要还是 AI 不知道什么是指令，什么是待处理的内容，用符号分隔开来会更利于 AI 区分。

```
Please summarize the following sentences to make them easier to understand.
OpenAI is an American artificial intelligence (AI) research laboratory consisting of the non-profit OpenAI Incorporated (OpenAI Inc.) and its for-profit subsidiary corporation OpenAI Limited Partnership (OpenAI LP). OpenAI conducts AI research with the declared intention of promoting and developing a friendly AI. OpenAI systems run on the fifth most powerful supercomputer in the world.[5][6][7] The organization was founded in San Francisco in 2015 by Sam Altman, Reid Hoffman, Jessica Livingston, Elon Musk, Ilya Sutskever, Peter Thiel and others,[8][1][9] who collectively pledged US$1 billion. Musk resigned from the board in 2018 but remained a donor. Microsoft provided OpenAI LP with a $1 billion investment in 2019 and a second multi-year investment in January 2023, reported to be $10 billion.[10]
```

Better prompt:

```
Please summarize the following sentences to make them easier to understand.

Text: """
OpenAI is an American artificial intelligence (AI) research laboratory consisting of the non-profit OpenAI Incorporated (OpenAI Inc.) and its for-profit subsidiary corporation OpenAI Limited Partnership (OpenAI LP). OpenAI conducts AI research with the declared intention of promoting and developing a friendly AI. OpenAI systems run on the fifth most powerful supercomputer in the world.[5][6][7] The organization was founded in San Francisco in 2015 by Sam Altman, Reid Hoffman, Jessica Livingston, Elon Musk, Ilya Sutskever, Peter Thiel and others,[8][1][9] who collectively pledged US$1 billion. Musk resigned from the board in 2018 but remained a donor. Microsoft provided OpenAI LP with a $1 billion investment in 2019 and a second multi-year investment in January 2023, reported to be $10 billion.[10]
"""
```

另外，在吴恩达的 ChatGPT Prompt Engineering [课程](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)中，还提到，你可以使用其他特殊符号来分割文本和 prompt，比如`<>`，`<tag></tag>` 等，课程中的案例是这样的（注意这个是 python 代码，需要关注的是 prompt 里的 text）：

```
text = f"""
You should express what you want a model to do by \
providing instructions that are as clear and \
specific as you can possibly make them. \
This will guide the model towards the desired output, \
and reduce the chances of receiving irrelevant \
or incorrect responses. Don't confuse writing a \
clear prompt with writing a short prompt. \
In many cases, longer prompts provide more clarity \
and context for the model, which can lead to \
more detailed and relevant outputs.
"""

prompt = f"""
Summarize the text delimited by triple backticks \
into a single sentence.
`{text}`
"""
```

如果你是在开发一款允许用户输入内容，并对内容进行总结的 AI 产品，那你就可以使用到这个技巧。


# 场景8：化繁为简——信息提取

### 场景介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF8%EF%BC%9A%E5%8C%96%E7%B9%81%E4%B8%BA%E7%AE%80%E2%80%94%E2%80%94%E4%BF%A1%E6%81%AF%E6%8F%90%E5%8F%96#%E5%9C%BA%E6%99%AF%E4%BB%8B%E7%BB%8D) <a href="#chang-jing-jie-shao" id="chang-jing-jie-shao"></a>

介绍完信息总结，再聊聊信息提取，我认为这个场景是继场景 3 推理以外，第二个值得深挖的场景。这个场景有非常多的有意思的场景，比如：

1. 将一大段文字，甚至网页里的内容，按要求转为一个表格。按照这个思路你可以尝试做一个更智能的，更易懂的爬虫插件。
2. 按照特定格式对文章内容进行信息归类。

第二个可能比较难理解，举个 OpenAI 里的[例子](https://platform.openai.com/playground/p/DoMbgEMmkXJ5xOyunwFZDHdg?model=text-davinci-003)，它的 prompt 是这样的（为了有足够空间显示内容，我仅节选了 text 里的部分内容，完整内容，可以[点击这里](https://platform.openai.com/playground/p/DoMbgEMmkXJ5xOyunwFZDHdg?model=text-davinci-003)查看）：

```
Extract the important entities mentioned in the article below. First extract all company names, then extract all people names, then extract specific topics which fit the content and finally extract general overarching themes
Desired format:
Company names: <comma_separated_list_of_company_names>
People names: -||-
Specific topics: -||-
General themes: -||-

Text: """Powering Next Generation
Applications with OpenAI Codex
Codex is now powering 70 different applications across a variety of use cases through the OpenAI API.

May 24, 2022
4 minute read
OpenAI Codex, a natural language-to-code system based on GPT-3, helps turn simple English instructions into over a dozen popular coding languages. Codex was released last August through our API and is the principal building block of GitHub Copilot.

Warp is a Rust-based terminal, reimagined from the ground up to help both individuals and teams be more productive in the command-line.

Terminal commands are typically difficult to remember, find and construct. Users often have to leave the terminal and search the web for answers and even then the results might not give them the right command to execute. Warp uses Codex to allow users to run a natural language command to search directly from within the terminal and get a result they can immediately use.

“Codex allows Warp to make the terminal more accessible and powerful. Developers search for entire commands using natural language rather than trying to remember them or assemble them piecemeal. Codex-powered command search has become one of our game changing features.”

—Zach Lloyd, Founder, Warp


Machinet helps professional Java developers write quality code by using Codex to generate intelligent unit test templates.

Machinet was able to accelerate their development several-fold by switching from building their own machine learning systems to using Codex. The flexibility of Codex allows for the ability to easily add new features and capabilities saving their users time and helping them be more productive.

“Codex is an amazing tool in our arsenal. Not only does it allow us to generate more meaningful code, but it has also helped us find a new design of product architecture and got us out of a local maximum.”

—Vladislav Yanchenko, Founder, Machinet"""
```

Prompt 有点长，我解释下，它是让 AI 将文章里的重点内容进行抽离，并将其根据特定格式进行输出。要求将文章里提到的公司、人名、主题都按照 comma separated list（按逗号空格分开）的方式罗列出来。

最后的 output 是这样的：

```
Company names: OpenAI, Microsoft, GitHub, Pygma, Replit, Warp, Machinet
People names: Emile Paffard-Wray, Amjad Masad, Zach Lloyd, Vladislav Yanchenko
Specific topics: GPT-3, OpenAI API, Azure OpenAI Service, GitHub Copilot, Pygma, Replit, Warp, Machinet
General themes: Natural language-to-code, Productivity, Problem solving, Creativity, Learning
```

### **技巧 6：通过格式词阐述需要输出的格式**[​](https://learningprompt.wiki/docs/chatGPT/tutorial-basics/%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%20&%20%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/%E5%9C%BA%E6%99%AF8%EF%BC%9A%E5%8C%96%E7%B9%81%E4%B8%BA%E7%AE%80%E2%80%94%E2%80%94%E4%BF%A1%E6%81%AF%E6%8F%90%E5%8F%96#%E6%8A%80%E5%B7%A7-6%E9%80%9A%E8%BF%87%E6%A0%BC%E5%BC%8F%E8%AF%8D%E9%98%90%E8%BF%B0%E9%9C%80%E8%A6%81%E8%BE%93%E5%87%BA%E7%9A%84%E6%A0%BC%E5%BC%8F) <a href="#ji-qiao-6-tong-guo-ge-shi-ci-chan-shu-xu-yao-shu-chu-de-ge-shi" id="ji-qiao-6-tong-guo-ge-shi-ci-chan-shu-xu-yao-shu-chu-de-ge-shi"></a>

上述的案例，就是用到了这个技巧。这个技巧是技巧 2 的变种，比较常用于生成文本场景。其实在场景 7 中，你也可以用到这个技巧。

假设你想让 AI 总结一篇非常非常长的文章，并且按照特定格式给你总结，那你可以在文章前面明确输出的格式（为了不占用太多显示空间，我省略了正文内容，你可以在 OpenAI 的 Playground 看到[完整案例](https://platform.openai.com/playground/p/3U5Wx7RTIdNNC9Fg8fc44omi)）。它的意思其实是让 ChatGPT 按 Topic 总结，每个 Topic 里按照无序列表（就是里面那个 -）将每个 Topic 的主要观点罗列出来。

```
Summarize the main points of the following speech
Use the following format:
Topic 1: <topic_name_1>
- <point_1>
..
Topic 2: <topic_name_2>
- <point_1>
..
Topic 10: ..

Text: """
Thank you so much, Fred, for that lovely introduction. And thanks to the Atlantic Council for hosting me today.

The course of the global economy over the past two years has been shaped by COVID-19 and our efforts to fight the pandemic. It’s now evident, though, that the war between Russia and Ukraine has redrawn the contours of the world economic outlook. Vladimir Putin’s unprovoked attack on Ukraine and its people is taking a devastating human toll, with lives tragically lost, families internally displaced or becoming refugees, and communities and cities destroyed.
...

"""
```

Output 是这样的：

```
Topic 1: The war in Ukraine
- The war is taking a human toll with lives lost, families displaced, and communities destroyed
- The Biden administration is committed to holding Russia accountable
- The war has violated international law and is a challenge to the international order

Topic 2: The global economy
- The war is having negative impacts on the global economy, including higher commodity prices and inflation
- The IMF and World Bank will be focused on helping developing countries weather the impacts of the war
- The ultimate outcome for the global economy depends on the path of the war
```

关于这个场景和技巧，我想再解释一下为什么潜力很大。根据我使用各种 Summary 或者信息提取的产品，我发现，AI 并不知道什么是重点，所以在总结的过程中，会丢失很多内容。如何引导 AI 进行总结，就变得非常重要，且具有一定的可玩性。

***

感谢 [AlexZhangji](https://github.com/AlexZhangji) 的分享，TA 提到一个使用此技巧的场景：

使用此技巧可以使输出更结构化。比如针对一篇文章进行问答，你不仅想要得到一个答案，也希望 ChatGPT 的答案符合特定的格式，方便你下一步进行自动化。

比如问 "这里的债券 duration 是多少？" , 正常 GPT 模型的答案可能是 "债券 duration 是 4 年" 或 "duration 4 年"。 ChatGPT 的回答不稳定，且不方便继续处理。

解法： 我们可以通过这个技巧，让模型理解我们预期的格式。并在此基础上，为了方便自动化，让模型输出特定的结构化答案 (比如 JSON/Markdown 等)。 也可以方便集成更多的额外要求，比如增加一个"confidence level", 并通过 prompt 的形式指定这些数值的格式与甚至区间。

比如：

```
{context}
Question: What is bond duration mentioned here.
Answer template (Valid JSON format):
{{
"duration": $duration_numeric_value_in_year,
"confidence_level": $answer_confidence_level_high_moderate_or_low,
}}
Answer:
```

***

在吴恩达的 ChatGPT Prompt Engineering [课程](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)中，有提到一个这个技巧的高级用法，在让 AI 按照特定格式输出内容的同时，还让 AI 根据内容是否满足特定条件，来判断应该输出什么结果，下面课程中的案例的 prompt（注意这个是 python 代码，有一些转义字符，可以不用管）：

```
You will be provided with text delimited by triple quotes.
If it contains a sequence of instructions, \
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, \
then simply write \"No steps provided.\"

\"\"\"{text}\"\"\"
```

简单解释下，这个 prompt 分成两步：

让 AI 将输入的 text 转为步骤（就是 prompt 里的 Step 1、2）

然后还增加了一个判断，如果输入的 text 里没有 step 的内容，那么就输出 No Step

假如输入的 text 是一个泡茶的步骤介绍：

```
Making a cup of tea is easy! First, you need to get some \
water boiling. While that's happening, \
grab a cup and put a tea bag in it. Once the water is \
hot enough, just pour it over the tea bag. \
Let it sit for a bit so the tea can steep. After a \
few minutes, take out the tea bag. If you \
like, you can add some sugar or milk to taste. \
And that's it! You've got yourself a delicious \
cup of tea to enjoy.
```

那么 AI 输出的内容是这样的（因为内容中包含了步骤式的内容）：

```
Step 1 - Get some water boiling.
Step 2 - Grab a cup and put a tea bag in it.
Step 3 - Once the water is hot enough, pour it over the tea bag.
Step 4 - Let it sit for a bit so the tea can steep.
Step 5 - After a few minutes, take out the tea bag.
Step 6 - Add some sugar or milk to taste.
Step 7 - Enjoy your delicious cup of tea!
```

但如果我们输入的是这样的 text：

```
The sun is shining brightly today, and the birds are \
singing. It's a beautiful day to go for a \
walk in the park. The flowers are blooming, and the \
trees are swaying gently in the breeze. People \
are out and about, enjoying the lovely weather. \
Some are having picnics, while others are playing \
games or simply relaxing on the grass. It's a \
perfect day to spend time outdoors and appreciate the \
beauty of nature.
```

从内容上看，这段话，没有任何步骤式的内容，所以 AI 的输出是这样的：

```
No steps provided.
```


# 高级篇

高级篇内容相对比较难，如果你对 AI 及 PE 还不是很了解建议先完成基础篇的阅读。


# ChatGPT Prompt Framework

看完基础篇的各种场景介绍后，你应该对 Prompt 有较深的理解。

之前的章节我们讲的都是所谓的「术」，更多地集中讲如何用，但讲「道」的部分不多。高级篇除了会讲更高级的运用外，还会讲更多「道」的部分。

高级篇的开篇，我们来讲一下构成 prompt 的框架。

### Basic Prompt Framework[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/ChatGPT%20Prompt%20Framework#basic-prompt-framework) <a href="#basic-prompt-framework" id="basic-prompt-framework"></a>

查阅了非常多关于 ChatGPT prompt 的框架资料，我目前觉得写得最清晰的是 Elavis Saravia [总结](https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/guides/prompts-intro.md)的框架，他认为一个 prompt 里需包含以下几个元素：

* **Instruction（必须）：** 指令，即你希望模型执行的具体任务。
* **Context（选填）：** 背景信息，或者说是上下文信息，这可以引导模型做出更好的反应。
* **Input Data（选填）：** 输入数据，告知模型需要处理的数据。
* **Output Indicator（选填）：** 输出指示器，告知模型我们要输出的类型或格式。

只要你按照这个框架写 prompt ，模型返回的结果都不会差。

当然，你在写 prompt 的时候，并不一定要包含所有4个元素，而是可以根据自己的需求排列组合。比如拿前面的几个场景作为例子：

* 推理：Instruction + Context + Input Data
* 信息提取：Instruction + Context + Input Data + Output Indicator

### CRISPE Prompt Framework[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/ChatGPT%20Prompt%20Framework#crispe-prompt-framework) <a href="#crispe-prompt-framework" id="crispe-prompt-framework"></a>

另一个我觉得很不错的 Framework 是 [Matt Nigh](https://github.com/mattnigh/ChatGPT3-Free-Prompt-List) 的 CRISPE Framework，这个 framework 更加复杂，但完备性会比较高，比较适合用于编写 prompt 模板。CRISPE 分别代表以下含义：

* **CR：** Capacity and Role（能力与角色）。你希望 ChatGPT 扮演怎样的角色。
* **I：** Insight（洞察力），背景信息和上下文（坦率说来我觉得用 Context 更好）。
* **S：** Statement（指令），你希望 ChatGPT 做什么。
* **P：** Personality（个性），你希望 ChatGPT 以什么风格或方式回答你。
* **E：** Experiment（尝试），要求 ChatGPT 为你提供多个答案。

以下是这几个参数的例子：

| **Step**          | **Example**                                                                                                                                                                                                                                                                                                                                  |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Capacity and Role | <p>Act as an expert on software development on the topic of machine learning frameworks, and an expert blog writer.<br>把你想象成机器学习框架主题的软件开发专家，以及专业博客作者。</p>                                                                                                                                                                                    |
| Insight           | <p>The audience for this blog is technical professionals who are interested in learning about the latest advancements in machine learning.<br>这个博客的读者主要是有兴趣了解机器学习最新进展技术的专业人士。</p>                                                                                                                                                            |
| Statement         | <p>Provide a comprehensive overview of the most popular machine learning frameworks, including their strengths and weaknesses. Include real-life examples and case studies to illustrate how these frameworks have been successfully used in various industries.<br>提供最流行的机器学习框架的全面概述，包括它们的优点和缺点。包括现实生活中的例子，和研究案例，以说明这些框架如何在各个行业中成功地被使用。</p> |
| Personality       | <p>When responding, use a mix of the writing styles of Andrej Karpathy, Francois Chollet, Jeremy Howard, and Yann LeCun.<br>在回应时，混合使用 Andrej Karpathy、Francois Chollet、Jeremy Howard 和 Yann LeCun 的写作风格。</p>                                                                                                                                 |
| Experiment        | <p>Give me multiple different examples.<br>给我多个不同的例子。</p>                                                                                                                                                                                                                                                                                    |

将所有的元素都组合在一起，就变成了这样的 prompt，对比基础 prompt 生成的结果会非常不一样


# Zero-Shot Prompts

在基础篇里的推理场景，我提到了 Zero-Shot Prompting 的技术，本章会详细介绍它是什么，以及使用它的技巧。

### 介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Zero-Shot%20Prompts#%E4%BB%8B%E7%BB%8D) <a href="#jie-shao" id="jie-shao"></a>

Zero-Shot Prompting 是一种自然语言处理技术，可以让计算机模型根据提示或指令进行任务处理。各位常用的 ChatGPT 就用到这个技术。

传统的自然语言处理技术通常需要在大量标注数据上进行有监督的训练，以便模型可以对特定任务或领域进行准确的预测或生成输出。相比之下，Zero-Shot Prompting 的方法更为灵活和通用，因为它不需要针对每个新任务或领域都进行专门的训练。相反，它通过使用预先训练的语言模型和一些示例或提示，来帮助模型进行推理和生成输出。

举个例子，我们可以给 ChatGPT 一个简短的 prompt，比如 `描述某部电影的故事情节`，它就可以生成一个关于该情节的摘要，而不需要进行电影相关的专门训练。

### 缺点[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Zero-Shot%20Prompts#%E7%BC%BA%E7%82%B9) <a href="#que-dian" id="que-dian"></a>

但这个技术并不是没有缺点的：

1. Zero-Shot Prompting 技术依赖于预训练的语言模型，这些模型可能会受到训练数据集的限制和偏见。比如在使用 ChatGPT 的时候，它常常会在一些投资领域，使用男性的「他」，而不是女性的「她」。那是因为训练 ChatGPT 的数据里，提到金融投资领域的内容，多为男性。
2. 尽管 Zero-Shot Prompting 技术不需要为每个任务训练单独的模型，但为了获得最佳性能，它需要大量的样本数据进行微调。像 ChatGPT 就是一个例子，它的样本数量是过千亿。
3. 由于 Zero-Shot Prompting 技术的灵活性和通用性，它的输出有时可能不够准确，或不符合预期。这可能需要对模型进行进一步的微调或添加更多的提示文本来纠正。

### 技巧 7：Zero-Shot Chain of Thought[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Zero-Shot%20Prompts#%E6%8A%80%E5%B7%A7-7zero-shot-chain-of-thought) <a href="#ji-qiao-7zeroshotchainofthought" id="ji-qiao-7zeroshotchainofthought"></a>

基于上述的第三点缺点，研究人员就找到了一个叫 Chain of Thought 的技巧。

这个技巧使用起来非常简单，只需要在问题的结尾里放一句 `Let‘s think step by step` （让我们一步步地思考），模型输出的答案会更加准确。

这个技巧来自于 Kojima 等人 2022 年的论文 [Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916)。在论文里提到，当我们向模型提一个逻辑推理问题时，模型返回了一个错误的答案，但如果我们在问题最后加入 `Let‘s think step by step` 这句话之后，模型就生成了正确的答案：

<img src="https://learningprompt.wiki/assets/images/ZeroShotChainOfThought001-4ba9c9c481c009887ab37eca4696a81d.png" alt="ZeroShotChainOfThought001.png" height="376" width="1898">

论文里有讲到原因，感兴趣的朋友可以去看看，我简单解释下为什么（🆘 如果你有更好的解释，不妨反馈给我）：

1. 首先各位要清楚像 ChatGPT 这类产品，它是一个统计语言模型，本质上是基于过去看到过的所有数据，用统计学意义上的预测结果进行下一步的输出（这也就是为什么你在使用 ChatGPT 的时候，它的答案是一个字一个字地吐出来，而不是直接给你的原因，因为答案是一个字一个字算出来的）。
2. 当它拿到的数据里有逻辑，它就会通过统计学的方法将这些逻辑找出来，并将这些逻辑呈现给你，让你感觉到它的回答很有逻辑。
3. 在计算的过程中，模型会进行很多假设运算（不过暂时不知道它是怎么算的）。比如解决某个问题是从 A 到 B 再到 C，中间有很多假设。
4. 它第一次算出来的答案错误的原因，只是因为它在中间跳过了一些步骤（B）。而让模型一步步地思考，则有助于其按照完整的逻辑链（A > B > C）去运算，而不会跳过某些假设，最后算出正确的答案。

按照论文里的解释，零样本思维链涉及两个补全结果，左侧气泡表示基于提示输出的第一次的结果，右侧气泡表示其收到了第一次结果后，将最开始的提示一起拿去运算，最后得出了正确的答案：

<img src="https://learningprompt.wiki/assets/images/ZeroShotChainOfThought002-8036bee6fdf39bd866804837c013319a.png" alt="ZeroShotChainOfThought002.png" height="738" width="1978">

这个技巧，除了用于解决复杂问题外，还适合生成一些连贯主题的内容，比如写长篇文章、电影剧本等。

但需要注意其缺点，连贯不代表，它就一定不会算错，如果其中某一步骤算错了，错误会因为逻辑链，逐步将错误积累，导致生成的文本可能出现与预期不符的内容。

另外，根据 Wei 等人在 [2022 年的论文](https://arxiv.org/pdf/2201.11903.pdf)表明，它仅在大于等于 100B 参数的模型中使用才会有效。如果你使用的是小样本模型，这个方法不会生效。

***

2023-04-12 更新（感谢[qq-740943515](https://github.com/qq-740943515)分享）： 根据 Yongchao Zhou 等人的[最新论文](https://sites.google.com/view/automatic-prompt-engineer)，更好的 prompt 是：

```
Let's work this out in a step by step way to be sure we have the right answer.
```

***

在吴恩达的 ChatGPT Prompt Engineering [课程](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)中，有提到一个这个技巧的另一种用法，不仅仅只是让 AI 按步骤行事，还会告知 AI 每一步要做什么。比如这个案例（注意这个是 python 代码）：

```
prompt_2 = f"""
Your task is to perform the following actions:
1 - Summarize the following text delimited by
  <> with 1 sentence.
2 - Translate the summary into French.
3 - List each name in the French summary.
4 - Output a json object that contains the
  following keys: french_summary, num_names.

Use the following format:
Text: <text to summarize>
Summary: <summary>
Translation: <summary translation>
Names: <list of names in Italian summary>
Output JSON: <json with summary and num_names>

Text: <{text}>
"""
```

简单解释下这个代码：

1. 开头是让 AI 按照 1 ～ 4 步运行
2. 然后再让 AI 根据特定格式输出内容

最后 AI 的输出是这样的：

```
Summary: Jack and Jill go on a quest to fetch water, but misfortune strikes and they tumble down the hill, returning home slightly battered but with their adventurous spirits undimmed.
Translation: Jack et Jill partent en quête d'eau, mais la malchance frappe et ils dégringolent la colline, rentrant chez eux légèrement meurtris mais avec leurs esprits aventureux intacts.
Names: Jack, Jill
Output JSON: {"french_summary": "Jack et Jill partent en quête d'eau, mais la malchance frappe et ils dégringolent la colline, rentrant chez eux légèrement meurtris mais avec leurs esprits aventureux intacts.", "num_names": 2}
```

上述的案例只是将任务拆解，能让 AI 生成的结果更加符合要求，这个方法同样能提升 AI 的回答准确性，比如这个案例：

```
Determine if the student's solution is correct or not.

Question:
I'm building a solar power installation and I need help working out the financials.

Land costs $100 / square foot

I can buy solar panels for $250 / square foot

I negotiated a contract for maintenance that will cost \
me a flat $100k per year, and an additional $10 / square foot
What is the total cost for the first year of operations
as a function of the number of square feet.

Student's Solution:
Let x be the size of the installation in square feet.
Costs:

Land cost: 100x

Solar panel cost: 250x

Maintenance cost: 100,000 + 100x
Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000

```

AI 的回答是「The student's solution is correct」。但其实学生的答案是错误的，应该 360x + 100,000，我们将 prompt 调整成这样：

```
prompt = f"""
Your task is to determine if the student's solution \
is correct or not.
To solve the problem do the following:
- First, work out your own solution to the problem.
- Then compare your solution to the student's solution \
and evaluate if the student's solution is correct or not.
Don't decide if the student's solution is correct until
you have done the problem yourself.
Use the following format:
Question:
###
question here
###
Student's solution:
###
student's solution here
###
Actual solution:
###
steps to work out the solution and your solution here
###
Is the student's solution the same as actual solution \
just calculated:
###
yes or no
###
Student grade:
###
correct or incorrect
###
Question:
###
I'm building a solar power installation and I need help \
working out the financials.
- Land costs $100 / square foot
- I can buy solar panels for $250 / square foot
- I negotiated a contract for maintenance that will cost \
  me a flat $100k per year, and an additional $10 / square \
  foot
  What is the total cost for the first year of operations \
  as a function of the number of square feet.
###
Student's solution:
###
Let x be the size of the installation in square feet.
Costs:
1. Land cost: 100x
2. Solar panel cost: 250x
3. Maintenance cost: 100,000 + 100x
   Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000
###
Actual solution:
"""
```

本质上，也是将任务分拆成多步，这次 AI 输出的结果是这样的（结果就是正确的了）：

```
Let x be the size of the installation in square feet.

Costs:

1. Land cost: 100x
2. Solar panel cost: 250x
3. Maintenance cost: 100,000 + 10x

Total cost: 100x + 250x + 100,000 + 10x = 360x + 100,000

Is the student's solution the same as actual solution just calculated:
No

Student grade:
Incorrect
```

下一章我们会结合 Few-Shot Chain of Thought 来详细讲讲逻辑链的限制。


# Few-Shot Prompting

同样在推理场景，我提到了 Few-Shot Prompting 的技术，本章介绍下它的优缺点和技巧。

### 介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Few-Shot%20Prompting#%E4%BB%8B%E7%BB%8D) <a href="#jie-shao" id="jie-shao"></a>

我们在技巧2 中，提到我们可以给模型一些示例，从而让模型返回更符合我们需求的答案。这个技巧其实使用了一个叫 Few-Shot 的方法。

这个方法最早是 Brown 等人在 2020 年[发现的](https://arxiv.org/pdf/2005.14165.pdf)，论文里有一个这样的例子，非常有意思，通过这个例子你应该更能体会，像 ChatGPT 这类统计语言模型，其实并不懂意思，只是懂概率 😁

Brown 输入的内容是这样的（whatpu 和 farduddle 其实根本不存在）：

```
A "whatpu" is a small, furry animal native to Tanzania. An example of a sentence that uses
the word whatpu is:
We were traveling in Africa and we saw these very cute whatpus.
To do a "farduddle" means to jump up and down really fast. An example of a sentence that uses
the word farduddle is:
```

Output 是这样的：

```
When we won the game, we all started to farduddle in celebration.
```

不过这并不代表，Few-Shot 就没有缺陷，我们试试下面这个例子：

Prompt：

```
The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
A: The answer is False.

The odd numbers in this group add up to an even number: 17,  10, 19, 4, 8, 12, 24.
A: The answer is True.

The odd numbers in this group add up to an even number: 16,  11, 14, 4, 8, 13, 24.
A: The answer is True.

The odd numbers in this group add up to an even number: 17,  9, 10, 12, 13, 4, 2.
A: The answer is False.

The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
A:
```

Output 是这样的：

```
The answer is True.
```

输出的答案其实是错误的，实际上的答案应该是：

```
Adding all the odd numbers (15, 5, 13, 7, 1) gives 41. The answer is False.
```

那我们有没有什么方法解决？

### 技巧8：Few-Shot Chain of Thought[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Few-Shot%20Prompting#%E6%8A%80%E5%B7%A78few-shot-chain-of-thought) <a href="#ji-qiao-8fewshotchainofthought" id="ji-qiao-8fewshotchainofthought"></a>

要解决这个缺陷，就要使用到新的技巧，Few-Shot Chain of Thought。

根据 Wei 他们团队在 [2022 年的研究](https://arxiv.org/pdf/2201.11903.pdf)表明：

> 通过向大语言模型展示一些少量的样例，并在样例中解释推理过程，大语言模型在回答提示时也会显示推理过程。这种推理的解释往往会引导出更准确的结果。

下面是论文里的案例，使用方法很简单，在技巧2 的基础上，再将逻辑过程告知给模型即可。从下面这个案例里，你可以看到加入解释后，输出的结果就正确了。

<img src="https://learningprompt.wiki/assets/images/FewShotChainOfThought001-cb0c8729dadd349fa916ca44c1c18404.png" alt="FewShotChainOfThought001.png" height="772" width="1592">

那本章开头提的例子就应该是这样的（注：本例子同样来自 Wei 团队论文）：

```
The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
A: Adding all the odd numbers (9, 15, 1) gives 25. The answer is False.

The odd numbers in this group add up to an even number: 17,  10, 19, 4, 8, 12, 24.
A: Adding all the odd numbers (17, 19) gives 36. The answer is True.

The odd numbers in this group add up to an even number: 16,  11, 14, 4, 8, 13, 24.
A: Adding all the odd numbers (11, 13) gives 24. The answer is True.

The odd numbers in this group add up to an even number: 17,  9, 10, 12, 13, 4, 2.
A: Adding all the odd numbers (17, 9, 13) gives 39. The answer is False.

The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1. 
A:
```

聊完技巧，我们再结合前面的 Zero-Shot Chain of Thought，来聊聊 Chain of Thought 的关键知识。根据 [Sewon Min](https://arxiv.org/search/cs?searchtype=author\&query=Min%2C+S) 等人在 [2022 年的研究](https://arxiv.org/abs/2202.12837) 表明，思维链有以下特点：

1. "the label space and the distribution of the input text specified by the demonstrations are both key (regardless of whether the labels are correct for individual inputs)" 标签空间和输入文本的分布都是关键因素（无论这些标签是否正确）。
2. the format you use also plays a key role in performance, even if you just use random labels, this is much better than no labels at all. 即使只是使用随机标签，使用适当的格式也能提高性能。

理解起来有点难，我找一个 prompt 案例给大家解释（🆘 如果你有更好的解释，不妨反馈给我）。我给 ChatGPT 一些不一定准确的例子：

```
I loved the new Batman movie!  // Negative
This is bad // Positive
This is good // Negative
What a good show! //
```

Output 是这样的：

```
Positive
```

在上述的案例里，每一行，我都写了一句话和一个情感词，并用 // 分开，但我给这些句子都标记了错误的答案，比如第一句其实应该是 Positive 才对。但：

1. 即使我给内容打的标签是错误的（比如第一句话，其实应该是 Positive），对于模型来说，它仍然会知道需要输出什么东西。 换句话说，模型知道 // 划线后要输出一个衡量该句子表达何种感情的词（Positive or Negative）。这就是前面论文里 #1 提到的，即使我给的标签是错误的，或者换句话说，是否基于事实，并不重要。标签和输入的文本，以及格式才是关键因素。
2. 只要给了示例，即使随机的标签，对于模型生成结果来说，都是有帮助的。这就是前面论文里 #2 提到的内容。

最后，需要记住，思维链仅在使用大于等于 100B 参数的模型时，才会生效。

BTW，如果你想要了解更多相关信息，可以看看斯坦福大学的讲义：[Natural Language Processing with Deep Learning](http://web.stanford.edu/class/cs224n/slides/cs224n-2023-lecture11-prompting-rlhf.pdf)


# Self-Consistency

Self-Consistency 自洽是对 Chain of Thought 的一个补充，它能让模型生成多个思维链，然后取最多数答案的作为最终结果。

按照 Xuezhi Wang 等人在 [2022 年发表的论文](https://arxiv.org/pdf/2203.11171.pdf) 表明。当我们只用一个逻辑链进行优化时，模型依然有可能会算错，所以 XueZhi Wang 等人提出了一种新的方法，让模型进行多次运算，然后选取最多的答案作为最终结果：

<img src="https://learningprompt.wiki/assets/images/SelfConsistency001-ae4a23fdbe90d35f633b1af73f721887.png" alt="SelfConsistency001.png" height="882" width="1946">

就我目前使用下来，在 ChatGPT 上，其自洽性非常高，暂时没有遇到过出现多种答案的情况。查阅多份资料，我发现这个自洽性可能更多的用于评估模型的优劣，好的模型一般自洽性会比较高。

**在此案例中，考虑如下多步推理问题：**

```
Consider a multi-step reasoning problem like the following:

Question: If a store has 10 apples and 8 oranges, and it sells 6 apples and 4 oranges, how many fruits are left in the store?

Instead of directly answering the question, the chain-of-thought prompting would require the language model to produce a series of short sentences that mimic a human's reasoning process:

The store has 10 apples.
The store has 8 oranges.
6 apples are sold.
4 oranges are sold.
There are 10 - 6 = 4 apples left.
There are 8 - 4 = 4 oranges left.
The store now has 4 apples + 4 oranges = 8 fruits.

```

Using self-consistency, the language model generates multiple reasoning paths:

```
Reasoning Path A:

The store has 10 apples.
The store has 8 oranges.
6 apples are sold.
4 oranges are sold.
There are 10 - 6 = 4 apples left.
There are 8 - 4 = 4 oranges left.
The store now has 4 apples + 4 oranges = 8 fruits.
Reasoning Path B:

The store initially has 10 apples and 8 oranges.
It sells 6 apples, so there are 10 - 6 = 4 apples left.
It sells 4 oranges, so there are 8 - 4 = 4 oranges left.
The store now has 4 apples + 4 oranges = 8 fruits.
```

翻译过来则为：

```
问题：如果一家商店有 10 个苹果和 8 个橙子，此时店里卖出了 6 个苹果和 4 个橙子，那么店里还剩下多少水果？

思维链提示（chain-of-thought prompting）不是直接回答问题，而是要求语言模型生成一系列模仿人类推理过程的短句：

商店有 10 个苹果。
店里有 8 个橙子。
卖了 6 个苹果。
卖了 4 个橙子。
还剩下 10 - 6 = 4 个苹果。
剩下 8 - 4 = 4 个橙子。
商店现在有 4 个苹果 + 4 个橙子 = 8 个水果。
```

使用 Self-consistency，语言模型生成多个推理路径：

```
推理路径A：

商店有 10 个苹果。
店里有 8 个橙子。
卖了 6 个苹果。
卖了 4 个橙子。
还剩下 10 - 6 = 4 个苹果。
剩下 8 - 4 = 4 个橙子。
商店现在有 4 个苹果 + 4 个橙子 = 8 个水果。

推理路径 B：

商店最初有 10 个苹果和 8 个橙子。
商店卖了 6 个苹果，所以还剩下 10 - 6 = 4 个苹果。
商店卖了 4 个橙子，所以还剩下 8 - 4 = 4 个橙子。
商店现在有 4 个苹果 + 4 个橙子 = 8 个水果。
```

Self-consistency 从生成的多个推理路径中选择最一致的答案。在这个例子中，推理路径 A 和 B 都得出相同的答案（8 个水果）。可以看到这种做法增加了模型对最终答案正确的信心。


# PAL Models

PAL Models，全称为 Program-Aided Language Models。需要各位注意，这个方法，真的非常高级，甚至我觉得有点 Hack，而且经过我的多次测试，我觉得以 ChatGPT 目前的能力，已经不再需要使用这个方法。

但我在很多 PE 的教程里都有看到这个方法，所以我这里就简单介绍一下，这个方法来自于 2022 年，Luyu Gao [等人的研究](https://arxiv.org/pdf/2211.10435.pdf)，根据他们的研究，在 LLM 模型中，即使使用了前面提到的 Chain of Thought 的方法，也未必能拿到答案，论文中使用的 prompt 是这样的：

```
Q: Roger has 5 tennis balls. He buys 2 more cans of
tennis balls. Each can has 3 tennis balls. How many
tennis balls does he have now?
A: Roger started with 5 tennis balls. 2 cans of 3 tennis
balls each is 6 tennis balls. 5 + 6 = 11. The answer is 11.

Q: The bakers at the Beverly Hills Bakery baked 200
loaves of bread on Monday morning. They sold 93 loaves
in the morning and 39 loaves in the afternoon. A grocery
store returned 6 unsold loaves. How many loaves of
bread did they have left?
```

论文里提到，当年他们的模型的 Output 是这样的：

```
A: The bakers started with 200 loaves. They sold 93 in
the morning and 39 in the afternoon. So they sold 93 +
39 = 132 loaves. The grocery store returned 6 loaves. So
they had 200 - 132 - 6 = 62 loaves left. 
The answer is 62.
```

如果你现在将这个 prompt 输入到最新的 ChatGPT 答案已经是正确的：

```
A: The bakers baked 200 loaves of bread. They sold 93 + 39 = 132 loaves. After the grocery store returned 6 unsold loaves, the bakery had 200 - 132 + 6 = 74 loaves of bread left. The answer is 74.
```

当年 Luyu Gao 的解决方法是在 prompt 里引入代码，并引导模型使用代码来运算和思考，最后答案就是正确的：

<img src="https://learningprompt.wiki/assets/images/PAL001-a4da9f4a3d1e1cecc513e61aa23ce8bd.png" alt="PAL001.png" height="978" width="1378">

<br>


# OpenAI Playground 使用方法

如果你想要更好地了解 OpenAI 的 API，并且你常常会遇到 ChatGPT 不可用的情况。那我建议你使用 OpenAI 的 Playground。它会比较稳定。

**但需要注意，这个 Playground 会消耗你的免费 Credit。**

<img src="https://learningprompt.wiki/assets/images/OpenAIPlayground001-79a563ed94c43f83b4b0a5a6a0e2c37b.png" alt="OpenAIPlayground001.png" height="2706" width="3492">

你会在界面的右侧看到以下几个参数：

1. **Mode：** 最近更新了第四种 Chat 模式，一般使用 Complete 就好，当然你可以用其他模式，其他模式能通过 GUI 的方式辅助你撰写 prompt。
2. **Model：** 这里可以切换模型。不同的模型会擅长不同的东西，根据场景选对模型，能让你省很多成本：
   1. Ada：这是最便宜，但运算速度最快的模型。官方推荐的使用场景是解析文本，简单分类，地址更正等。
   2. Babbage：这个模型能处理比 Ada 复杂的场景。但稍微贵一些，速度也比较快。适合分类，语义搜索等。
   3. Curie：这个模型官方解释是「和 Davinci 一样能力很强，且更便宜的模型」。但实际上，这个模型非常擅长文字类的任务，比如写文章、语言翻译、撰写总结等。
   4. Davinci：这是 GPT-3 系列模型中能力最强的模型。可以输出更高的质量、更长的回答。每次请求可处理 4000 个 token。适合有复杂意图、因果关系的场景，还有创意生成、搜索、段落总结等。
3. **Temperature：** 这个主要是控制模型生成结果的随机性。简而言之，温度越低，结果越确定，但也会越平凡或无趣。如果你想要得到一些出人意料的回答，不妨将这个参数调高一些。但如果你的场景是基于事实的场景，比如数据提取、FAQ 场景，此参数就最好调成 0 。
4. **Maximum length：** 设置单次生成内容的最大长度。
5. **Stop Sequence：** 该选项设置停止生成文本的特定字符串序列。如果生成文本中包含此序列，则模型将停止生成更多文本。
6. **Top P：** 该选项是用于 nucleus 采样的一种技术，它可以控制模型生成文本的概率分布，从而影响模型生成文本的多样性和确定性。如果你想要准确的答案，可以将它设定为较低的值。如果你想要更多样化的回复，可以将其设得高一些。
7. **Presence Penalty：** 该选项控制模型生成文本时是否避免使用特定单词或短语，它可以用于生成文本的敏感话题或特定场景。
8. **Best of：** 这个选项允许你设置生成多少个文本后，从中选择最优秀的文本作为输出。默认为1，表示只生成一个文本输出。
9. **Injection start text:** 这个选项可以让你在输入文本的开头添加自定义文本，从而影响模型的生成结果。
10. **Injection restart text:** 这个选项可以让你在中间某个位置添加自定义文本，从而影响模型继续生成的结果。
11. **Show probabilities:** 这个选项可以让你查看模型生成每个单词的概率。打开此选项后，你可以看到每个生成的文本单词后面跟着一串数字，表示模型生成该单词的概率大小。

配置好参数后，你就可以在左侧输入 prompt 然后测试 prompt 了。


# 搭建基于知识库内容的机器人

如果你仅想要直接实践，可以看最后一部分实践，以及倒数第二部分限制与注意的地方。

### 简介[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Build-AI-bots-based-on-knowledge-base-content#%E7%AE%80%E4%BB%8B) <a href="#jian-jie" id="jian-jie"></a>

这个想法，来源于我的个人需求，我连载了将近 100 期 newsletter，积累了很多内容，我希望将这些资料导入给 AI，然后 AI 能拿这些数据回答我的问题，甚至能给我一些写作建议等。

最早的时候，我尝试过非常笨的方法，就是在提问的时候，将我的 newsletter 文本传给 AI，它的 prompt 大概是这样的：

```
Please summarize the following sentences to make them easier to understand.

Text: """
My newsletter
"""
```

这个方法能用是能用，但目前 ChatGPT 有个非常大的限制，它限制了最大的 token 数是 4096，大约是 16000 多个字符，注意这个是请求 + 响应，实际请求总数并没那么多。换句话来说，我一次没法导入太多的内容给 ChatGPT（我的一篇 Newsletter 就有将近 5000 字），这个问题就一直卡了我很久，直到我看到了 [GPT Index](https://gpt-index.readthedocs.io/en/latest/) 的库，以及 [Lennys Newsletter](https://www.lennysnewsletter.com/p/i-built-a-lenny-chatbot-using-gpt) 的例子。

试了下，非常好用，而且步骤也很简单，即使你不懂编程也能轻易地按照步骤实现这个功能。

我稍稍优化了下例子的代码，并增加了一些原理介绍。希望大家能喜欢。

### 原理介绍[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Build-AI-bots-based-on-knowledge-base-content#%E5%8E%9F%E7%90%86%E4%BB%8B%E7%BB%8D) <a href="#yuan-li-jie-shao" id="yuan-li-jie-shao"></a>

其实我这个需求，在传统的机器人领域已经有现成方法，比如你应该看到不少电商客服产品，就有类似的功能，你说一句话，机器人就会回复你。

这种传统的机器人，通常是基于意图去回答人的问题。举个例子，我们构建了一个客服机器人，它的工作原理简单说来是这样的：

<img src="https://learningprompt.wiki/assets/images/KB+GPT001-0f76d6b6754ac6219d8375c5f6d0c7bd.png" alt="KB+GPT001.png" height="1416" width="3680">

当用户问「忘记密码怎么办？」时，它会去找最接近这个意图「密码」，每个意图里会有很多个样本问题，比如「忘记密码如何找回」「忘记密码怎么办」，然后这些样本问题都会有个答案「点击 A 按钮找回密码」，机器人会匹配最接近样本问题的意图，然后返回答案。

但这样有个问题，我们需要设置特别多的意图，比如「无法登录」、「忘记密码」、「登录错误」，虽然有可能都在描述一个事情，但我们需要设置三个意图、三组问题和答案。

虽然传统的机器人有不少限制，但这种传统方式，给了我们一些灵感。

我们好像可以用这个方法来解决限制 token 的问题，我们仅需要传符合某个意图的文档给 AI，然后 AI 仅用该文档来生成答案：

<img src="https://learningprompt.wiki/assets/images/KB+GPT002-f4353b4f9022ddfc120680f74928934e.png" alt="KB+GPT002.png" height="2080" width="3680">

比如还是上面的那个客服机器人的例子，当用户提问「忘记密码怎么办？」时，匹配到了「登录」相关的意图，接着匹配知识库中相同或相近意图的文档，比如「登录异常处理解决方案文档」，最后我们将这份文档传给 GPT-3，它再拿这个文档内容生成答案。

GPTIndex 这个库简单理解就是做上图左边的那个部分，它的工作原理是这这样的：

1. 创建知识库或文档索引
2. 找到最相关的索引
3. 最后将对应索引的内容给 GPT-3

### 限制与注意的地方[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Build-AI-bots-based-on-knowledge-base-content#%E9%99%90%E5%88%B6%E4%B8%8E%E6%B3%A8%E6%84%8F%E7%9A%84%E5%9C%B0%E6%96%B9) <a href="#xian-zhi-yu-zhu-yi-de-di-fang" id="xian-zhi-yu-zhu-yi-de-di-fang"></a>

虽然这个方法解决了 token 限制的问题，但也有不少限制：

1. 当用户提一些比较模糊的问题时，匹配有可能错误，导致 GPT-3 拿到了错误的内容，最终生成了非常离谱的答案。
2. 当用户提问一些没有多少上下文的信息时，机器人有时会生成虚假信息。

所以如果你想用这个技术做客服机器人，建议你：

1. 通过一些引导问题来先明确用户的意图，就是类似传统客服机器人那样，搞几个按钮，先让用户点击（比如无法登录）。
2. 如果相似度太低，建议增加兜底的回答「很抱歉，我无法回答你的问题，你需要转为人工客服吗？」

### 实践[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Build-AI-bots-based-on-knowledge-base-content#%E5%AE%9E%E8%B7%B5) <a href="#shi-jian" id="shi-jian"></a>

为了让大家更方便使用，我将代码放在了 Google Colab，你无需安装任何环境，只需要用浏览器打开这个： [代码文件](https://colab.research.google.com/drive/1Fr1hxYOG5lss9vbvZlaw-11wM2U6N7cQ)

BTW 你可以将其复制保存到自己的 Google Drive。

信息

收到不少朋友的反馈，说下面的按钮没法点击。下面只是截图，你需要打开这个[代码文件](https://colab.research.google.com/drive/1Fr1hxYOG5lss9vbvZlaw-11wM2U6N7cQ)进行操作。 另外，关于答案不符合预期的问题，主要还是向量匹配的问题，暂时没有解决方案。

#### 第一步：导入数据[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Build-AI-bots-based-on-knowledge-base-content#%E7%AC%AC%E4%B8%80%E6%AD%A5%E5%AF%BC%E5%85%A5%E6%95%B0%E6%8D%AE) <a href="#di-yi-bu-dao-ru-shu-ju" id="di-yi-bu-dao-ru-shu-ju"></a>

导入的方法有两种，第一种是导入在线数据。

导入 GitHub 数据是个相对简单的方式。如果你是第一次使用，我建议你先用这个方法试试。点击下方代码前的播放按钮，就会运行这段代码。

<img src="https://learningprompt.wiki/assets/images/runcode-fad97031789f0869e2f97c81a2ff759b.png" alt="runcode.png" height="80" width="1334">

运行完成后，会导入我写的几份 newsletter。如果你也想像我那样导入数据，只需要修改 clone 后面的链接地址即可。

第二种方法是导入离线数据。点击左侧的文件夹按钮（如果你没有登录，这一步会让你登录），然后点击下图标识 2 的上传按钮，上传文件即可。如果你要传多个文件，建议你先建一个文件夹，然后将文件都上传到该文件夹内。

<img src="https://learningprompt.wiki/assets/images/Cola001-2544299da6f9f4133c32414afb84cd48.png" alt="Cola001.png" height="2604" width="3056">

#### 第二 & 三步：安装依赖库[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Build-AI-bots-based-on-knowledge-base-content#%E7%AC%AC%E4%BA%8C--%E4%B8%89%E6%AD%A5%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96%E5%BA%93) <a href="#di-er-san-bu-an-zhuang-yi-lai-ku" id="di-er-san-bu-an-zhuang-yi-lai-ku"></a>

直接点击播放按钮即可。

不过第三步里，你可以尝试改下参数，你可以改：

1. **num\_ouputs ：**&#x8FD9;个是设置最大的输出 token 数，越大，回答问题的时候，机器能回答的字就越多。
2. **Temperature：** 这个主要是控制模型生成结果的随机性。简而言之，温度越低，结果越确定，但也会越平凡或无趣。如果你想要得到一些出人意料的回答，不妨将这个参数调高一些。但如果你的场景是基于事实的场景，比如数据提取、FAQ 场景，此参数就最好调成 0。

其他参数不去管它就好，问题不大。

#### 第四步：设置 OpenAI API Key[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Build-AI-bots-based-on-knowledge-base-content#%E7%AC%AC%E5%9B%9B%E6%AD%A5%E8%AE%BE%E7%BD%AE-openai-api-key) <a href="#di-si-bu-she-zhi-openaiapikey" id="di-si-bu-she-zhi-openaiapikey"></a>

这个需要你登录 OpenAI（注意是 OpenAI 不是 ChatGPT），点击右上角的头像，点击 View API Keys，或者你[点击这个链接](https://platform.openai.com/account/api-keys)也可以直接访问。然后点击「Create New Secret Key」，然后复制那个 Key 并粘贴到文档里即可。

<img src="https://learningprompt.wiki/assets/images/OpenAIAPI-b39810d072586f12a261d551248169dd.png" alt="OpenAIAPI.png" height="2248" width="2854">

#### 第五步：构建索引[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Build-AI-bots-based-on-knowledge-base-content#%E7%AC%AC%E4%BA%94%E6%AD%A5%E6%9E%84%E5%BB%BA%E7%B4%A2%E5%BC%95) <a href="#di-wu-bu-gou-jian-suo-yin" id="di-wu-bu-gou-jian-suo-yin"></a>

这一步程序会将第一步导入的数据都跑一遍，并使用 OpenAI 的 embedings API。如果第一步你上传了自己的数据，只需要将 ' ' 里的 Jimmy-Newsletter-Corpus 修改为你上传的文件夹名称即可。

**注意：**

* 这一步会耗费你的 OpenAI 的 Credit，1000 个 token 的价格是 $0.02，运行以下代码前需要注意你的账号里是否还有钱。
* 如果你用的 OpenAI 账号是个免费账号，你有可能会遇到频率警告，此时可以等一等再运行下方代码（另外你的导入的知识库数据太多，也会触发）。解除这个限制，最好的方式是在你的 OpenAI 账号的 Billing 页面里绑定信用卡。如何绑卡，需要各位自行搜索。

#### 第六步：提问[​](https://learningprompt.wiki/docs/chatGPT/tutorial-extras/Build-AI-bots-based-on-knowledge-base-content#%E7%AC%AC%E5%85%AD%E6%AD%A5%E6%8F%90%E9%97%AE) <a href="#di-liu-bu-ti-wen" id="di-liu-bu-ti-wen"></a>

这一步你就可以试试提问了，如果你在第一步导入的是我预设的数据，你可以试试问以下问题：

* Issue 90 主要讲了什么什么内容？
* 推荐一本跟 Issue 90 里提到的书类似的书

如果你导入的是自己的资料，也可以问以下几个类型的问题：

* 总结
* 提问
* 信息提取


# 技巧篇

这里汇总了所有 prompt 技巧，方便各位查阅。如果你已经看过基础篇和高级篇内容，就仅需要从技巧 9 开始看即可。


# 技巧1：To Do and Not To Do

注意

我介绍的技巧其实在各个场景都可以使用，我将其放在某个场景下解释，只是因为我觉得它更有可能在这个场景用到。你也会更容易记住这个用法。并不意味着这个技巧仅能在此场景使用。并且多技巧混用也是个不错的用法。

在[问答场景](/chatgpt-tutorial/ji-chu-pian/ji-ben-shi-yong-chang-jing-shi-yong-ji-qiao/chang-jing-1-wen-da-wen-ti)里，为了让 AI 回答更加准确，一般会在问题里加条件。比如让 AI 推荐一部电影给你 `Recommend a movie to me` 。但这个 prompt 太空泛了，AI 无法直接回答，接着它会问你想要什么类型的电影，但这样你就需要跟 AI 聊很多轮，效率比较低。

所以，为了提高效率，一般会在 prompt 里看到类似这样的话（意思是不要询问我对什么感兴趣，或者问我的个人信息）：

```
DO NOT ASK FOR INTERESTS. DO NOT ASK FOR PERSONAL INFORMATION.
```

如果你在 ChatGPT 里这样提问，或者使用 ChatGPT 最新的 API ，它就不会问你问题，而是直接推荐一部电影给你，它的 Output 是这样的：

```
Certainly! If you're in the mood for an action-packed movie, you might enjoy "John Wick" (2014), directed by Chad Stahelski and starring Keanu Reeves. The movie follows a retired hitman named John Wick who seeks vengeance against the people who wronged him. It's a fast-paced and stylish film with lots of thrilling action sequences and an engaging story. If you're looking for something that will keep you on the edge of your seat, "John Wick" is definitely worth a watch!
```

但如果你使用的是如 Davinci-003 这样的模型，它的 Output 很可能是这样的，它还会问你的兴趣爱好：

```
Sure, I can recommend a movie based on your interests. What kind of movie would you like to watch? Do you prefer action, comedy, romance, or something else?
```

所以 OpenAI 的 API [最佳实践文档](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api)里，提到了一个这样的最佳实践：

> **Instead of just saying what not to do, say what to do instead. 与其告知模型不能干什么，不妨告诉模型能干什么。**

我自己的实践是，虽然现在最新的模型已经理解什么是 Not Todo ，但如果你想要的是明确的答案，加入更多限定词，告知模型能干什么，回答的效率会更高，且预期会更明确。还是电影推荐这个案例，你可以加入一个限定词：

```
Recommend a movie from the top global trending movies to me.
```

当然并不是 Not Todo 就不能用，如果：

* 你已经告知模型很明确的点，然后你想缩小范围，那增加一些 Not Todo 会提高不少效率。
* 你是在做一些探索，比如你不知道如何做精准限定，你只知道不要什么。那可以先加入 Not Todo ，让 AI 先发散给你答案，当探索完成后，再去优化 prompt。

以下是一些场景案例，我整理了两个 Less Effective（不太有效的） 和 Better（更好的） prompt，你可以自己尝试下这些案例：

| 场景          | Less Effective                                                                   | Better                                                                           | 原因                                                                |
| ----------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| 推荐雅思必背英文单词  | Please suggest me some essential words for IELTS                                 | Please suggest me 10 essential words for IELTS                                   | 后者 prompt 会更加明确，前者会给大概 20 个单词。这个仍然有提升的空间，比如增加更多的限定词语，像字母 A 开头的词语。 |
| 推荐香港值得游玩的地方 | Please recommend me some places to visit in Hong Kong. Do not recommend museums. | Please recommend me some places to visit in Hong Kong including amusement parks. | 后者的推荐会更准确高效一些，但如果你想进行一些探索，那前者也能用。                                 |


# 技巧2：增加示例

直接告知 AI 什么能做，什么不能做外。在某些场景下，我们能比较简单地向 AI 描述出什么能做，什么不能做。但有些场景，有些需求很难通过文字指令传递给 AI，即使描述出来了，AI 也不能很好地理解。

比如给宠物起英文名，里面会夹杂着一些所谓的名字风格。此时你就可以在 prompt里增加一些例子，我们看看这个例子：

```
Suggest three names for a horse that is a superhero.
```

Output 是这样的，第一个感觉还行，第二个 Captain 有 hero 的感觉，但 Canter 就像是说这匹马跑得很慢，而且三个都比较一般，不够酷。

```
Thunder Hooves, Captain Canter, Mighty Gallop
```

此时你就可以在 prompt 里增加一些案例：

```
Suggest three names for an animal that is a superhero.

Animal: Cat
Names: Captain Sharpclaw, Agent Fluffball, The Incredible Feline
Animal: Dog
Names: Ruff the Protector, Wonder Canine, Sir Barks-a-Lot
Animal: Horse
Names:
```

增加例子后，输出的结果就更酷一些，或者说是我想要的那种风格的名字。

```
Gallop Guardian, Equine Avenger, The Mighty Stallion
```

以下是一些场景案例，我整理了两个 Less Effective（不太有效的） 和 Better（更好的） prompt，你可以自己尝试下这些案例：

| 场景            | Less Effective                         | Better                                                                                                                      | 原因                                |
| ------------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| 起英文名          | Suggest three English names for a boy. | <p>Suggest three English names for a boy.<br>Here are some examples: Jimmy、Jason、James</p>                                  | 可以在下方运行这个案例，在不给示例的情况下 AI 会给你什么答案。 |
| 将电影名称转为 emoji | Convert Star Wars into emoji.          | <p>Convert movie titles into emoji.<br>Back to the Future: 👨👴🚗🕒<br>Batman: 🤵🦇<br>Transformers: 🚗🤖<br>Star Wars:</p> | 可以在下方运行这个案例，在不给示例的情况下 AI 会给你什么答案。 |


# 技巧3：使用引导词，引导模型输出特定内容

在[代码生成场景](/chatgpt-tutorial/ji-chu-pian/ji-ben-shi-yong-chang-jing-shi-yong-ji-qiao/chang-jing-4-wu-zhong-sheng-you-xie-dai-ma)里，有一个小技巧，上面提到的案例，其 prompt 还可以继续优化，在 prompt 最后，增加一个代码的引导，告知 AI 我已经将条件描述完了，你可以写代码了。

Better：

```
Create a MySQL query for all students in the Computer Science Department:
Table departments, columns = [DepartmentId, DepartmentName]
Table students, columns = [DepartmentId, StudentId, StudentName]
SELECT
```

在 prompt 的最后增加 SELECT 可以很好地提示 AI 可以写 SQL 代码了。

同样的道理，如果你想让 AI 写 Python 代码，那 import 会是比较好的提示。但需要注意，这个只是告知 AI 可以写代码了，并不能告知 AI 写何种代码，你仍然需要在 prompt 里增加提示，告知 AI 要生成何种语言的代码。

在吴恩达的 ChatGPT Prompt Engineering [课程](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)中，也提到这个技巧，只是在课程中，引导词并不是放在最后，而是在 prompt 里直接说明，让 AI 生成一个 JSON 格式的内容。课程中的例子是这样的（注意这个是 python 代码）：

```
prompt = f"""
Generate a list of three made-up book titles along \
with their authors and genres.
Provide them in JSON format with the following keys:
book_id, title, author, genre.
"""
```

我简单解释下，其关键是在 prompt 里跟 AI 说明，需要 AI 按照 JSON 格式输出内容。


# 技巧4：增加 Role（角色）或人物

前面提到的[改写例子](/chatgpt-tutorial/ji-chu-pian/ji-ben-shi-yong-chang-jing-shi-yong-ji-qiao/chang-jing-5-jin-shang-tian-hua-gai-xie-nei-rong)，我在 prompt 里加了 Role 让其更易于阅读，这个优化方法是 OK 的。也很常用，比如你想将你写的 Email 改得更商务，则只需要加 business 相关的词即可。

我再介绍一个更有效的技巧，就是在 prompt 里增加一些 role（角色）相关的内容，让 AI 生成的内容更符合你的需求。

比如还是上面那个 rewrite 的例子，我在例子前加入这样的一段话，我让 AI 假设自己是一个小学老师，并且很擅长将复杂的内容转变成 7、8岁小朋友也能听懂的话，然后再改写这段话：

```
You are a primary school teacher who can explain complex content to a level that a 7 or 8 year old child can understand. Please rewrite the following sentences to make them easier to understand:
```

Output 就变成了下面这样。不管是用词，还是语法，看起来都更容易懂了。

```
OpenAI is a place where people work on making computers really smart. It's like a lab where they do research to make computers do amazing things! They want the computers to be really friendly and helpful to people. They use one of the most powerful computers in the world to do this research. A bunch of really rich and smart people gave money to start this lab. One of them is Elon Musk, but he left in 2018. Another really big company, Microsoft, gave them a lot of money too.
```

另外除了增加角色外，还能让 AI 模拟某个人，比如让 AI 以 David Foster Wallace 的风格改写上述那段话：

```
Imagine you are the famous writer David Foster Wallace, please rewrite this sentences.
```

Output 是这样的：

```
As David Foster Wallace, I might rewrite these sentences to sound more like this:

OpenAI is a lab that studies something called artificial intelligence, which is like when computers can do things that normally only humans can do. They have a big computer that's one of the most powerful in the world, and they're trying to make sure the AI they create is friendly and helpful. The lab was started in 2015 in a city called San Francisco, and a bunch of important people gave them a lot of money to do their research. One of those people was Elon Musk, who stopped working there but still gives them money, and Microsoft also gave them a lot of money recently.
```

关于这个技巧的应用，以及如何更好地使用 AI 提升写作能力，建议各位阅读 Nat Eliason 的 [Using ChatGPT as a Writing Coach](https://blog.nateliason.com/p/chatgpt-writing-coach)，他使用 ChatGPT 辅助其写作，就用到了上述的技巧。

<br>


# 技巧5：使用特殊符号指令和需要处理的文本分开

不管是[信息总结](/chatgpt-tutorial/ji-chu-pian/ji-ben-shi-yong-chang-jing-shi-yong-ji-qiao/chang-jing-7-hua-fan-wei-jian-xin-xi-zong-jie)，还是[信息提取](/chatgpt-tutorial/ji-chu-pian/ji-ben-shi-yong-chang-jing-shi-yong-ji-qiao/chang-jing-8-hua-fan-wei-jian-xin-xi-ti-qu)，你一定会输入大段文字，甚至多段文字，此时有个小技巧。

可以用“”“将指令和文本分开。根据我的测试，如果你的文本有多段，增加”“”会提升 AI 反馈的准确性（这个技巧来自于 OpenAI 的 API [最佳实践文档](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api)）

信息

感谢 CraneHuang6 的提醒，这里还能用 ### 符号区隔，不过我一般会用“”“ ，因为我有的时候会用 # 作为格式示例，太多 # 的话 prompt 会看起来比较晕 😂

像我们之前写的 prompt 就属于 Less effective prompt。为什么呢？据我的测试，主要还是 AI 不知道什么是指令，什么是待处理的内容，用符号分隔开来会更利于 AI 区分。

```
Please summarize the following sentences to make them easier to understand.
OpenAI is an American artificial intelligence (AI) research laboratory consisting of the non-profit OpenAI Incorporated (OpenAI Inc.) and its for-profit subsidiary corporation OpenAI Limited Partnership (OpenAI LP). OpenAI conducts AI research with the declared intention of promoting and developing a friendly AI. OpenAI systems run on the fifth most powerful supercomputer in the world.[5][6][7] The organization was founded in San Francisco in 2015 by Sam Altman, Reid Hoffman, Jessica Livingston, Elon Musk, Ilya Sutskever, Peter Thiel and others,[8][1][9] who collectively pledged US$1 billion. Musk resigned from the board in 2018 but remained a donor. Microsoft provided OpenAI LP with a $1 billion investment in 2019 and a second multi-year investment in January 2023, reported to be $10 billion.[10]
```

Better prompt:

```
Please summarize the following sentences to make them easier to understand.

Text: """
OpenAI is an American artificial intelligence (AI) research laboratory consisting of the non-profit OpenAI Incorporated (OpenAI Inc.) and its for-profit subsidiary corporation OpenAI Limited Partnership (OpenAI LP). OpenAI conducts AI research with the declared intention of promoting and developing a friendly AI. OpenAI systems run on the fifth most powerful supercomputer in the world.[5][6][7] The organization was founded in San Francisco in 2015 by Sam Altman, Reid Hoffman, Jessica Livingston, Elon Musk, Ilya Sutskever, Peter Thiel and others,[8][1][9] who collectively pledged US$1 billion. Musk resigned from the board in 2018 but remained a donor. Microsoft provided OpenAI LP with a $1 billion investment in 2019 and a second multi-year investment in January 2023, reported to be $10 billion.[10]
"""
```

另外，在吴恩达的 ChatGPT Prompt Engineering [课程](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)中，还提到，你可以使用其他特殊符号来分割文本和 prompt，比如`<>`，`<tag></tag>` 等，课程中的案例是这样的（注意这个是 python 代码，需要关注的是 prompt 里的 text）：

```
text = f"""
You should express what you want a model to do by \
providing instructions that are as clear and \
specific as you can possibly make them. \
This will guide the model towards the desired output, \
and reduce the chances of receiving irrelevant \
or incorrect responses. Don't confuse writing a \
clear prompt with writing a short prompt. \
In many cases, longer prompts provide more clarity \
and context for the model, which can lead to \
more detailed and relevant outputs.
"""

prompt = f"""
Summarize the text delimited by triple backticks \
into a single sentence.
`{text}`
"""
```

如果你是在开发一款允许用户输入内容，并对内容进行总结的 AI 产品，那你就可以使用到这个技巧。


# 技巧6：通过格式词阐述需要输出的格式

这个技巧是技巧 2 的变种，比较常用于生成文本场景。其实在[场景 7](/chatgpt-tutorial/ji-chu-pian/ji-ben-shi-yong-chang-jing-shi-yong-ji-qiao/chang-jing-7-hua-fan-wei-jian-xin-xi-zong-jie) 中，你也可以用到这个技巧。

假设你想让 AI 总结一篇非常非常长的文章，并且按照特定格式给你总结，那你可以在文章前面明确输出的格式（为了不占用太多显示空间，我省略了正文内容，你可以在 OpenAI 的 Playground 看到[完整案例](https://platform.openai.com/playground/p/3U5Wx7RTIdNNC9Fg8fc44omi)）。它的意思其实是让 ChatGPT 按 Topic 总结，每个 Topic 里按照无序列表（就是里面那个 -）将每个 Topic 的主要观点罗列出来。

```
Summarize the main points of the following speech
Use the following format:
Topic 1: <topic_name_1>
- <point_1>
..
Topic 2: <topic_name_2>
- <point_1>
..
Topic 10: ..

Text: """
Thank you so much, Fred, for that lovely introduction. And thanks to the Atlantic Council for hosting me today.

The course of the global economy over the past two years has been shaped by COVID-19 and our efforts to fight the pandemic. It’s now evident, though, that the war between Russia and Ukraine has redrawn the contours of the world economic outlook. Vladimir Putin’s unprovoked attack on Ukraine and its people is taking a devastating human toll, with lives tragically lost, families internally displaced or becoming refugees, and communities and cities destroyed.
...

"""
```

Output 是这样的：

```
Topic 1: The war in Ukraine
- The war is taking a human toll with lives lost, families displaced, and communities destroyed
- The Biden administration is committed to holding Russia accountable
- The war has violated international law and is a challenge to the international order

Topic 2: The global economy
- The war is having negative impacts on the global economy, including higher commodity prices and inflation
- The IMF and World Bank will be focused on helping developing countries weather the impacts of the war
- The ultimate outcome for the global economy depends on the path of the war
```

关于这个场景和技巧，我想再解释一下为什么潜力很大。

根据我使用各种 Summary 或者信息提取的产品，我发现 AI 并不知道什么是重点，所以在总结的过程中，会丢失很多内容。如何引导 AI 进行总结，就变得非常重要，且具有一定的可玩性。

***

感谢 [AlexZhangji](https://github.com/AlexZhangji) 的分享，TA 提到一个使用此技巧的场景：

使用此技巧可以使输出更结构化。比如针对一篇文章进行问答，你不仅想要得到一个答案，也希望 ChatGPT 的答案符合特定的格式，方便你下一步进行自动化。

比如问 "这里的债券 duration 是多少？". 正常 GPT 模型的答案可能是 "债券 duration 是 4 年" 或 "duration 4 年"。 ChatGPT 的回答不稳定，且不方便继续处理。

解法： 我们可以通过这个技巧，让模型理解我们预期的格式。并在此基础上，为了方便自动化，让模型输出特定的结构化答案 (比如 JSON/Markdown 等)。 也可以方便集成更多的额外要求，比如增加一个"confidence level", 并通过 prompt 的形式指定这些数值的格式。

比如：

```
{context}
Question: What is bond duration mentioned here.
Answer template (Valid JSON format):
{{
"duration": $duration_numeric_value_in_year,
"confidence_level": $answer_confidence_level_high_modrate_or_low,
}}
Answer:
```

***

在吴恩达的 ChatGPT Prompt Engineering [课程](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)中，有提到一个这个技巧的高级用法，在让 AI 按照特定格式输出内容的同时，还让 AI 根据内容是否满足特定条件，来判断应该输出什么结果，下面课程中的案例的 prompt（注意这个是 python 代码，有一些转义字符，可以不用管）：

```
You will be provided with text delimited by triple quotes.
If it contains a sequence of instructions, \
re-write those instructions in the following format:

Step 1 - ...
Step 2 - …
…
Step N - …

If the text does not contain a sequence of instructions, \
then simply write \"No steps provided.\"

\"\"\"{text}\"\"\"
```

简单解释下，这个 prompt 分成两步：

让 AI 将输入的 text 转为步骤（就是 prompt 里的 Step 1、2）

然后还增加了一个判断，如果输入的 text 里没有 step 的内容，那么就输出 No Step

假如输入的 text 是一个泡茶的步骤介绍：

```
Making a cup of tea is easy! First, you need to get some \
water boiling. While that's happening, \
grab a cup and put a tea bag in it. Once the water is \
hot enough, just pour it over the tea bag. \
Let it sit for a bit so the tea can steep. After a \
few minutes, take out the tea bag. If you \
like, you can add some sugar or milk to taste. \
And that's it! You've got yourself a delicious \
cup of tea to enjoy.
```

那么 AI 输出的内容是这样的（因为内容中包含了步骤式的内容）：

```
Step 1 - Get some water boiling.
Step 2 - Grab a cup and put a tea bag in it.
Step 3 - Once the water is hot enough, pour it over the tea bag.
Step 4 - Let it sit for a bit so the tea can steep.
Step 5 - After a few minutes, take out the tea bag.
Step 6 - Add some sugar or milk to taste.
Step 7 - Enjoy your delicious cup of tea!
```

但如果我们输入的是这样的 text：

```
The sun is shining brightly today, and the birds are \
singing. It's a beautiful day to go for a \
walk in the park. The flowers are blooming, and the \
trees are swaying gently in the breeze. People \
are out and about, enjoying the lovely weather. \
Some are having picnics, while others are playing \
games or simply relaxing on the grass. It's a \
perfect day to spend time outdoors and appreciate the \
beauty of nature.
```

从内容上看，这段话，没有任何步骤式的内容，所以 AI 的输出是这样的：

```
No steps provided.
```

<br>


# 技巧7：Zero-Shot Chain of Thought

基于上述的第三点缺点，研究人员就找到了一个叫 Chain of Thought 的技巧。

这个技巧使用起来非常简单，只需要在问题的结尾里放一句 `Let‘s think step by step` （让我们一步步地思考），模型输出的答案会更加准确。

这个技巧来自于 Kojima 等人 2022 年的论文 [Large Language Models are Zero-Shot Reasoners](https://arxiv.org/abs/2205.11916)。在论文里提到，当我们向模型提一个逻辑推理问题时，模型返回了一个错误的答案，但如果我们在问题最后加入 `Let‘s think step by step` 这句话之后，模型就生成了正确的答案：

<img src="https://learningprompt.wiki/assets/images/ZeroShotChainOfThought001-4ba9c9c481c009887ab37eca4696a81d.png" alt="ZeroShotChainOfThought001.png" height="376" width="1898">

论文里有讲到原因，感兴趣的朋友可以去看看，我简单解释下为什么（🆘 如果你有更好的解释，不妨反馈给我）：

1. 首先各位要清楚像 ChatGPT 这类产品，它是一个统计语言模型，本质上是基于过去看到过的所有数据，用统计学意义上的预测结果进行下一步的输出（这也就是为什么你在使用 ChatGPT 的时候，它的答案是一个字一个字地吐出来，而不是直接给你的原因，因为答案是一个字一个字算出来的）。
2. 当它拿到的数据里有逻辑，它就会通过统计学的方法将这些逻辑找出来，并将这些逻辑呈现给你，让你感觉到它的回答很有逻辑。
3. 在计算的过程中，模型会进行很多假设运算（不过暂时不知道它是怎么算的）。比如解决某个问题是从 A 到 B 再到 C，中间有很多假设。
4. 它第一次算出来的答案错误的原因，只是因为它在中间跳过了一些步骤（B）。而让模型一步步地思考，则有助于其按照完整的逻辑链（A > B > C）去运算，而不会跳过某些假设，最后算出正确的答案。

按照论文里的解释，零样本思维链涉及两个补全结果，左侧气泡表示基于提示输出的第一次的结果，右侧气泡表示其收到了第一次结果后，将最开始的提示一起拿去运算，最后得出了正确的答案：

<img src="https://learningprompt.wiki/assets/images/ZeroShotChainOfThought002-8036bee6fdf39bd866804837c013319a.png" alt="ZeroShotChainOfThought002.png" height="738" width="1978">

这个技巧，用于解复杂问题有用外，还适合生成一些连贯主题的内容，比如写长篇文章、电影剧本等。

但需要注意其缺点，连贯不代表它就一定不会算错，如果其中某一步骤算错了，错误会因为逻辑链，逐步将错误积累，导致生成的文本可能出现与预期不符的内容。

另外，根据 Wei 等人在 [2022 年的论文](https://arxiv.org/pdf/2201.11903.pdf)表明，还有它仅在大于等于 100B 参数的模型中使用才会有效。如果你使用的是小样本模型，这个方法不会生效。

***

2023-04-12 更新（感谢[qq-740943515](https://github.com/qq-740943515)分享）： 根据 Yongchao Zhou 等人的[最新论文](https://sites.google.com/view/automatic-prompt-engineer)，更好的 prompt 是：

```
Let's work this out in a step by step way to be sure we have the right answer.
```

***

在吴恩达的 ChatGPT Prompt Engineering [课程](https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)中，有提到一个这个技巧的另一种用法，不仅仅只是让 AI 按步骤行事，还会告知 AI 每一步要做什么。比如这个案例（注意这个是 python 代码）：

```
prompt_2 = f"""
Your task is to perform the following actions:
1 - Summarize the following text delimited by
  <> with 1 sentence.
2 - Translate the summary into French.
3 - List each name in the French summary.
4 - Output a json object that contains the
  following keys: french_summary, num_names.

Use the following format:
Text: <text to summarize>
Summary: <summary>
Translation: <summary translation>
Names: <list of names in Italian summary>
Output JSON: <json with summary and num_names>

Text: <{text}>
"""
```

简单解释下这个代码：

1. 开头是让 AI 按照 1 ～ 4 步运行
2. 然后再让 AI 根据特定格式输出内容

最后 AI 的输出是这样的：

```
Summary: Jack and Jill go on a quest to fetch water, but misfortune strikes and they tumble down the hill, returning home slightly battered but with their adventurous spirits undimmed.
Translation: Jack et Jill partent en quête d'eau, mais la malchance frappe et ils dégringolent la colline, rentrant chez eux légèrement meurtris mais avec leurs esprits aventureux intacts.
Names: Jack, Jill
Output JSON: {"french_summary": "Jack et Jill partent en quête d'eau, mais la malchance frappe et ils dégringolent la colline, rentrant chez eux légèrement meurtris mais avec leurs esprits aventureux intacts.", "num_names": 2}
```

上述的案例只是将任务拆解，能让 AI 生成的结果更加符合要求，这个方法同样能提升 AI 的回答准确性，比如这个案例：

```
Determine if the student's solution is correct or not.

Question:
I'm building a solar power installation and I need help working out the financials.

Land costs $100 / square foot

I can buy solar panels for $250 / square foot

I negotiated a contract for maintenance that will cost \
me a flat $100k per year, and an additional $10 / square foot
What is the total cost for the first year of operations
as a function of the number of square feet.

Student's Solution:
Let x be the size of the installation in square feet.
Costs:

Land cost: 100x

Solar panel cost: 250x

Maintenance cost: 100,000 + 100x
Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000

```

AI 的回答是「The student's solution is correct」。但其实学生的答案是错误的，应该 360x + 100,000，我们将 prompt 调整成这样：

```
prompt = f"""
Your task is to determine if the student's solution \
is correct or not.
To solve the problem do the following:
- First, work out your own solution to the problem.
- Then compare your solution to the student's solution \
and evaluate if the student's solution is correct or not.
Don't decide if the student's solution is correct until
you have done the problem yourself.
Use the following format:
Question:
###
question here
###
Student's solution:
###
student's solution here
###
Actual solution:
###
steps to work out the solution and your solution here
###
Is the student's solution the same as actual solution \
just calculated:
###
yes or no
###
Student grade:
###
correct or incorrect
###
Question:
###
I'm building a solar power installation and I need help \
working out the financials.
- Land costs $100 / square foot
- I can buy solar panels for $250 / square foot
- I negotiated a contract for maintenance that will cost \
  me a flat $100k per year, and an additional $10 / square \
  foot
  What is the total cost for the first year of operations \
  as a function of the number of square feet.
###
Student's solution:
###
Let x be the size of the installation in square feet.
Costs:
1. Land cost: 100x
2. Solar panel cost: 250x
3. Maintenance cost: 100,000 + 100x
   Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000
###
Actual solution:
"""
```

本质上，也是将任务分拆成多步，这次 AI 输出的结果是这样的（结果就是正确的了）：

```
Let x be the size of the installation in square feet.

Costs:

1. Land cost: 100x
2. Solar panel cost: 250x
3. Maintenance cost: 100,000 + 10x

Total cost: 100x + 250x + 100,000 + 10x = 360x + 100,000

Is the student's solution the same as actual solution just calculated:
No

Student grade:
Incorrect
```

<br>


# 技巧8：Few-Shot Chain of Thought

要解决这个缺陷，就要使用到新的技巧，Few-Shot Chain of Thought。

根据 Wei 他们团队在 [2022 年的研究](https://arxiv.org/pdf/2201.11903.pdf)表明：

> 通过向大语言模型展示一些少量的样例，并在样例中解释推理过程，大语言模型在回答提示时也会显示推理过程。这种推理的解释往往会引导出更准确的结果。

下面是论文里的案例，使用方法很简单，在技巧 2 的基础上，再将逻辑过程告知给模型即可。从下面这个案例里，你可以看到加入解释后，输出的结果就正确了。

<img src="https://learningprompt.wiki/assets/images/FewShotChainOfThought001-cb0c8729dadd349fa916ca44c1c18404.png" alt="FewShotChainOfThought001.png" height="772" width="1592">

那本章开头提的例子就应该是这样的（注：本例子同样来自 Wei 团队论文）：

```
The odd numbers in this group add up to an even number: 4, 8, 9, 15, 12, 2, 1.
A: Adding all the odd numbers (9, 15, 1) gives 25. The answer is False.

The odd numbers in this group add up to an even number: 17,  10, 19, 4, 8, 12, 24.
A: Adding all the odd numbers (17, 19) gives 36. The answer is True.

The odd numbers in this group add up to an even number: 16,  11, 14, 4, 8, 13, 24.
A: Adding all the odd numbers (11, 13) gives 24. The answer is True.

The odd numbers in this group add up to an even number: 17,  9, 10, 12, 13, 4, 2.
A: Adding all the odd numbers (17, 9, 13) gives 39. The answer is False.

The odd numbers in this group add up to an even number: 15, 32, 5, 13, 82, 7, 1.
A:
```

聊完技巧，我们再结合前面的 Zero-Shot Chain of Thought，来聊聊 Chain of Thought 的关键知识。根据 [Sewon Min](https://arxiv.org/search/cs?searchtype=author\&query=Min%2C+S) 等人在 [2022 年的研究](https://arxiv.org/abs/2202.12837) 表明，思维链有以下特点：

1. "the label space and the distribution of the input text specified by the demonstrations are both key (regardless of whether the labels are correct for individual inputs)" 标签空间和输入文本的分布都是关键因素（无论这些标签是否正确）。
2. the format you use also plays a key role in performance, even if you just use random labels, this is much better than no labels at all. 即使只是使用随机标签，使用适当的格式也能提高性能。

理解起来有点难，我一个 prompt 案例给大家解释（🆘 如果你有更好的解释，不妨反馈给我）。我给 ChatGPT 一些不一定准确的例子：

```
I loved the new Batman movie!  // Negative
This is bad // Positive
This is good // Negative
What a good show! //
```

Output 是这样的：

```
Positive
```

在上述的案例里，每一行，我都写了一句话和一个情感词，并用 // 分开，但我给这些句子都标记了错误的答案，比如第一句其实应该是 Positive 才对。但：

1. 即使我给内容打的标签是错误的（比如第一句话，其实应该是 Positive），对于模型来说，它仍然会知道需要输出什么东西。换句话说，模型知道 // 划线后要输出一个衡量该句子表达何种感情的词（Positive or Negative）。这就是前面论文里 #1 提到的，即使我给的标签是错误的，或者换句话说，是否基于事实，并不重要。标签和输入的文本，以及格式才是关键因素。
2. 只要给了示例，即使随机的标签，对于模型生成结果来说，都是有帮助的。这就是前面论文里 #2 提到的内容。

最后，需要记住，思维链仅在使用大于等于 100B 参数的模型时，才会生效。

BTW，如果你想要了解更多相关信息，可以看看斯坦福大学的讲义：[Natural Language Processing with Deep Learning](http://web.stanford.edu/class/cs224n/slides/cs224n-2023-lecture11-prompting-rlhf.pdf)


# 技巧9：其他

一些小的技巧，我会统一放在这里。

### 在示例里加入特定符号，让模型知道如何处理特殊情况[​](https://learningprompt.wiki/docs/chatGPT/tutorial-tips/%E6%8A%80%E5%B7%A79%EF%BC%9A%E5%85%B6%E4%BB%96#%E5%9C%A8%E7%A4%BA%E4%BE%8B%E9%87%8C%E5%8A%A0%E5%85%A5%E7%89%B9%E5%AE%9A%E7%AC%A6%E5%8F%B7%E8%AE%A9%E6%A8%A1%E5%9E%8B%E7%9F%A5%E9%81%93%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E7%89%B9%E6%AE%8A%E6%83%85%E5%86%B5) <a href="#zai-shi-li-li-jia-ru-te-ding-fu-hao-rang-mo-xing-zhi-dao-ru-he-chu-li-te-shu-qing-kuang" id="zai-shi-li-li-jia-ru-te-ding-fu-hao-rang-mo-xing-zhi-dao-ru-he-chu-li-te-shu-qing-kuang"></a>

这个解释起来有点复杂，以下是 OpenAI 的官方 prompt，在一些奇怪的问题上比如 `What is Devz9` 的回答，你可以用 ？ 代替答案，让模型知道当遇到超出回答范围时，需要如何处理（注意：此方法在 playground 上有效，但在 ChatGPT 上无效）。

```
Q: Who is Batman?
A: Batman is a fictional comic book character.

Q: What is torsalplexity?
A: ?

Q: What is Devz9?
A: ?

Q: Who is George Lucas?
A: George Lucas is American film director and producer famous for creating Star Wars.

Q: What is the capital of California?
A: Sacramento.

Q: What is Kozar-09?
A: 
```

它的 Output 是这样的：

```
?
```


# Awesome ChatGPT Prompts (English)

Welcome to the “Awesome ChatGPT Prompts” repository! This is a collection of prompt examples to be used with the ChatGPT model.

The [ChatGPT](https://chat.openai.com/chat) model is a large language model trained by [OpenAI](https://openai.com/) that is capable of generating human-like text. By providing it with a prompt, it can generate responses that continue the conversation or expand on the given prompt.

In this repository, you will find a variety of prompts that can be used with ChatGPT. We encourage you to [add your own prompts](https://github.com/f/awesome-chatgpt-prompts/edit/main/README.md) to the list, and to use ChatGPT to generate new prompts as well.

To get started, simply clone this repository and use the prompts in the README.md file as input for ChatGPT. You can also use the prompts in this file as inspiration for creating your own.

We hope you find these prompts useful and have fun using ChatGPT!

#### Using prompts.chat

[prompts.chat](https://prompts.chat/) is designed to provide an enhanced UX when working with prompts. With just a few clicks, you can easily edit and copy the prompts on the site to fit your specific needs and preferences. The copy button will copy the prompt exactly as you have edited it.

{% embed url="<https://prompts.chat/>" %}

[**View on GitHub**](https://github.com/f/awesome-chatgpt-prompts)

{% embed url="<https://github.com/olddoll/awesome-chatgpt-prompts>" %}

[**View on Hugging Face**](https://huggingface.co/datasets/fka/awesome-chatgpt-prompts/)

{% embed url="<https://huggingface.co/datasets/fka/awesome-chatgpt-prompts>" %}

#### [View on Gumroad](https://fka.gumroad.com/l/art-of-chatgpt-prompting)

{% embed url="<https://fka.gumroad.com/l/art-of-chatgpt-prompting>" %}


# 基础篇

如果你对 Midjourney 不是很了解，建议你从基础篇开始读起。如果你已经了解基本的用法，那可以直接跳去高级篇阅读。


# 如何使用 Midjourney？

{% embed url="<https://www.aig123.com/14.html>" %}

[Midjourney](https://www.aig123.com/sites/69.html)什么？它是一款优秀的 AI 图像生成工具，综合能力十分强大并全面，易上手，图像生成达到速度非常之快，一分钟内可以生成4张图片，国外很多图像创作者都在使用[Midjourney](https://www.aig123.com/sites/69.html)并将其作为创作灵感参考。

{% embed url="<https://www.aig123.com/sites/69.html>" %}

接下来，一步一步教你注册并使用[Midjourney](https://www.aig123.com/sites/69.html)

### 0 准备工作

1. 解决好网络问题
2. 准备一个浏览器

### 1 注册并登录Discord

浏览器打开 Discord 官网：<http://www.discord.com>

[![Midjourney账号注册教程及使用方法](https://image.bysocket.com/2023/04/25/20230425010353.webp)](https://image.bysocket.com/2023/04/25/20230425010353.webp)

点击页面右上角“Login”按钮。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fc5fd8938j00rsdu12001ad000gn0097p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fc5fd8938j00rsdu12001ad000gn0097p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

点击“注册”，输入你的邮箱用于接受验证（这里推荐使用谷歌 gmail 邮箱）。

用户名、出生年月可以随便填。信息填完之后，选择“继续”。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F7d27cbc0j00rsdu1b000qd000e300gep.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F7d27cbc0j00rsdu1b000qd000e300gep.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

接下来会进行人机验证，就是验证你是不是真正的人类，按照提示进行验证一下就行了。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fffeac910j00rsdu1k000od000ed00afp.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fffeac910j00rsdu1k000od000ed00afp.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

最后通过邮箱接收验证邮件，验证之后，就完成注册了，直接登录 discord。

### 2 登录Midjourney

浏览器打开 [Midjourney](https://www.midjourney.com) 网站：<https://www.midjourney.com>

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fd7d30517j00rsdu1y0057d000h3008op.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fd7d30517j00rsdu1y0057d000h3008op.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

点击首页右下角的“Sign in”按钮，接着点击“授权”。

* Midjourney 是部署在 discord 上才能使用，所以刚才注册 discord 账号就是为了登录 Midjourney

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F3e836465j00rsdu29002cd000bf00l9p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F3e836465j00rsdu29002cd000bf00l9p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

然后，点击下图中的 Midjourney，再次进入 Midjourney 的主页。

进入主页后点击右下角的“Join the Beta”。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F3531bb3ej00rsdu2h000od0008v00blp.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F3531bb3ej00rsdu2h000od0008v00blp.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

在弹出的界面，选择“接受邀请”就行了。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F8d6d46fej00rsdu2p00ddd000gv00a8p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F8d6d46fej00rsdu2p00ddd000gv00a8p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

点击下图左边的小帆船图标。你就能在右边看到很多别人使用 Midjourney 画图的作品了！

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fd799a82dj00rsdu2x0058d000gt0089p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fd799a82dj00rsdu2x0058d000gt0089p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

### 3 创建 Midjourney 绘画专属服务器

首先点击Discord左侧的“+”号，创建一个服务器。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F0e083a7cj00rsdu41001pd0008t00g0p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F0e083a7cj00rsdu41001pd0008t00g0p.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

然后，点击Midjourney小帆船图标，返回到Midjourney主界面。

点击右侧顶部用户图标，在用户列表中找到 Midjourney Bot。

点击Midjourney Bot，在弹出的界面中点击“Add to Server”。

[![Midjourney账号注册教程及使用方法](https://image.bysocket.com/2023/04/25/202304250107921.webp)](https://image.bysocket.com/2023/04/25/202304250107921.webp)

然后，如下图所示，选择一个服务器，即你刚刚新建的服务器（或者是登录 discord 时创建的服务器），点击“继续”。再在弹出的页面选择“授权”即可。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F03c5d0bej00rsdu4y004gd000e300cwp.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F03c5d0bej00rsdu4y004gd000e300cwp.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

然后，也会出现人机验证的界面，验证一下。通过之后，显示“已授权”。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fefea303aj00rsdu5v001wd000fa009ep.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2Fefea303aj00rsdu5v001wd000fa009ep.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

最后，进入到自己创建的服务器。在右边就能看到 Midjourney Bot 了。

这表示我们在自己的服务器就可以实现使用 midjourney 来画图了。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F0a7d9dc8j00rsdu64001hd000h6008ip.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F0a7d9dc8j00rsdu64001hd000h6008ip.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

### 4 使用 Midjourney 画图

在自己专属频道的聊天输入框中输入<mark style="color:green;">/imagine</mark>，点击<mark style="color:green;">prompt</mark>，随后输入自己想画的关键词即可。

[![Midjourney账号注册教程及使用方法](https://image.bysocket.com/2023/04/25/202304250107250.webp)](https://image.bysocket.com/2023/04/25/202304250107250.webp)

这里/imagine prompt 的内容就是你对你想画的图的描述，必须是英文描述。

例如，我们输入：<mark style="color:green;">/imagine a cute cat is playing ball</mark>。

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F71146172p00rsdu3m000cd000ea002zp.png\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F71146172p00rsdu3m000cd000ea002zp.png\&thumbnail=660x2147483647\&quality=80\&type=jpg)

等待一会，你就能看到你画的画啦！

[![Midjourney账号注册教程及使用方法](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F289bf844j00rsdu3s002yd000gv007ip.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2023%2F0331%2F289bf844j00rsdu3s002yd000gv007ip.jpg\&thumbnail=660x2147483647\&quality=80\&type=jpg)

&#x20;

#### Tips

Midjourney新用户有25次的免费使用额度，超过25次后需要开通会员，会员分10美元和30美元两种方式。

如果你想开通会员，可以在Midjourney频道中输入<mark style="color:green;">/subscribe</mark>，选择需要的方案，目前只支持VISA信用卡。


# Midjourney Prompt 基本结构

在 Midjourney 的官方介绍文档里，介绍了最简单的 Prompt 结构是这样的：

![](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/AE1E1253-DDEF-4DCE-83A9-CF5671941E55_2/TXDqmXTALidJpoDX9YyUyDy3WX3n4nOOcOj3yRgRMxoz/MJ154.png)

但我觉得上面那个 Prompt 过于简单了 😂 ，反而 Advanced Prompt 更适合学习：

![MJ155.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/064065D3-8609-4C1C-A741-F435CDBD9B3F_2/0YBkNJEv93HhtapyPQqCwOuJoHUvkqrdrKcv2xCCXF8z/MJ155.png)

### Image Prompts（选填）[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-prompt#image-prompts%E9%80%89%E5%A1%AB) <a href="#imageprompts-xuan-tian" id="imageprompts-xuan-tian"></a>

Prompt 分成三个部分。第一个是 Image，这个属于选填，可以填也可以不填。

先说下这个 Image URL 是干什么用的，有很多玩法，比如将两张图合并为一张，大家可以看看下面这个例子，我就是将一个大理石雕像和花朵的图片上传到 Discord：

![MJ156.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/6E42DCB6-F8DF-4738-B5AF-F2353EBF7C10_2/pe8CmiNNOmi2gXhwVbuMmJa1xZ8XSXB5HzLbRsACbxUz/MJ156.png)

然后让 Midjourney blend （混合）一下（后续 blend 章节会介绍更多用法）后，就能生成下面这种图片：

![](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/9EB8D607-B722-4080-AB3D-13FDC104F322_2/A3UZeRIW1E48YtiKWcF3lLYwAgmyDoXAgOaJq9XISxwz/MJ157.png)

需要注意的是：

* 你输入的是图片的 URL 地址，而且必须是公开可访问的地址。
* 图片格式仅支持 png、gif 和 jpg。
* 你最多只能放两张图的 URL，或者一张图的 URL + 一段话。

如果你不想将图片上传到一些图床服务器，也可以使用 Discord 的图床，你可以私聊 Midjourney Bot 然后通过上传图片的方式，将图片先发到 Discord 上，然后右键复制图片链接，像这样：

![AnimatedImage.gif](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/06D3F8EB-B80E-4B98-B177-8339182996F4_2/QAZCtNM71Smrx5JoIyOby7Wng3T5lSRpq17bFNxfHLIz/AnimatedImage.gif)

### Text Prompt[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-prompt#text-prompt) <a href="#text-prompt" id="text-prompt"></a>

这个就是你希望 AI 生成的图片的描述。这个有非常多的技巧，后续会详细介绍。这里我想说下，Midjourney 跟 ChatGPT 有点不一样：

1. 无法理解句子结构和语法：Midjourney 没法像 ChatGPT 那样懂你说的话。类比的话，Midjourney 更像是命令式编程，ChatGPT 更像是声明式编程，你需要给 Midjourney 完整的指令，它才有可能生成你满意的结果。
2. Midjourney 有违禁词的设计：有些词语无法输入，比如 🍑 emoji 就没法输入，因为这个 emoji 是 butts 的俚语，常常会导致模型生成一些不太好的图片，所以也被禁止了。

提示

关于如何撰写 text prompt 我会在[🖊️ Text Prompt 篇](https://learningprompt.wiki/docs/midjourney/mj-tutorial-text-prompt/text-prompt-cautions)介绍。

### Parameter（参数）[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-prompt#parameter%E5%8F%82%E6%95%B0) <a href="#parameter-can-shu" id="parameter-can-shu"></a>

Midjourney 大约有 20 多个参数设置项，我会在下一章介绍几个常用参数。了解完基本参数后，你应该就能用 Midjourney 生成不错的图了。


# Midjourney Prompt 常用参数

简单说来，你可以将这些参数理解为官方的固定 prompt 模版，而且这个模板包含了一些特殊字符，让模型能百分百保证输出结果的一致性，并且还能提升 prompt 的准确度和输入效率。

如果你有用过 ChatGPT ，应该会遇到过这种场景，用了别人一样的 prompt 模板，但却没法令 ChatGPT 生成相同的内容。

而 Midjourney 因为是图片类目，相对比较垂直，所以他们将很多图片类的通用 prompt 语句做成了模板，比如图片长宽比，有 1:1、2:3、4:7 等等，如果你要用 ChatGPT 的使用习惯，就需要在 prompt 里不断重复 Aspect Ratios 1:1 等，而且每个人的表达 Aspect Ratios 的方式都不一样，模型还要去理解人说的话，比较麻烦。

所以 Midjourney 就设计了一些参数，让你能快速调用，比如 Aspect Ratio 这个，就只需要输入 — ar 1:1 即可。同时因为固定了表达方式，大家要改长宽比，都会用这种方式表达，Midjourney 调整下模型，就能保证输出的图片的一致性了。

因为其稳定且必须，所以我才会先教各位参数。

### Version[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-common-parameters#version) <a href="#version" id="version"></a>

目前 Midjourney 支持多个版本，最新的版本是 V5 ，跟 ChatGPT 稍微有点不一样，Midjourney 给我的感觉，并不是版本越大，越厉害，而是擅长的东西不太一样。相关区别请查阅 Midjourney 各版本差异。

Version 参数使用方式见下表。你也可以在设置里，调整默认的版本，相关教程请查阅 Midjourney 基础设置。

| **调用方法**                                                                           | **使用案例**                         | **注意事项**         |
| ---------------------------------------------------------------------------------- | -------------------------------- | ---------------- |
| <p>在关键词后加空格，然后带上版本参数：</p><ul><li>--v 或者 —v</li><li>--version 或者 —version</li></ul> | vibrant california poppies --v 5 | 版本仅支持 1、2、3、4、5。 |

因为可以在 prompt 里直接加版本参数，同时又可以在设置里设置版本，所以你有可能会遇到如下图这样的情况（我想生成版本 1 的图，但设置里设置了 5 怎么办？）：

![](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/7DD5C76B-0DCD-44EC-B6D1-07BCA89EE201_2/91noyMlT5yLudnp9ySF73dX4kUW0NxBt8QIQxc7b7U8z/MJ015.jpeg)

此时模型会按照从左往右的顺序运行这些参数，按照上面的例子，其实生成的图片是 V1 版本，可以跟下面的这个 V5 版本对比下：

![](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/736DE8B9-D8F1-41A2-8FCA-8EB3641BAF8F_2/h7ufgPUePkMqIZY7pEd02Ur8iz20jTz93g4OM43yuuUz/MJ016.jpeg)

### Aspect Ratios[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-common-parameters#aspect-ratios) <a href="#aspect-ratios" id="aspect-ratios"></a>

第一个参数是图片的长宽比，使用方式如下，及版本差异如下：

| 调用方法                                                                               | 使用案例                                | 注意事项                                                                                                                                                             | V5                                     | V4          | V3          | niji        |
| ---------------------------------------------------------------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ----------- | ----------- | ----------- |
| <p>在关键词后加空格，然后带上长宽比参数：</p><ul><li>--ar 或者 —ar</li><li>--aspect 或者—aspect</li></ul> | vibrant california poppies --ar 5:4 | <ul><li>默认比例是 1:1。</li><li>比例数需要是整数，比如 1.3:1 是不行的，但 13:10 可以。</li><li>长宽比会影响生成图像的形状和构图。当放大图片时，有些长宽比可能会发生轻微的改变。比如 --ar 16:9(1.75) 最终生成的图片可能是 7:4(1.74)。</li></ul> | ✅ 支持任意比例。但2:1以上的宽高比是实验性的，可能会产生不可预测的结果。 | ✅ 1:2 到 2:1 | ✅ 5:2 到 2:5 | ✅ 1:2 到 2:1 |

另外，长宽比在业界也有最佳实践：

* 5:4 多用于传统打印
* 3:2 多用于照片打印
* 7:4 比例接近于 HD TV 的比例，或者是智能手机

![MJ017.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/F3D78AEA-6A12-478D-81D8-AF6F70281400_2/LDU0zaOYxQx9phJy5CTtKBosekuI5K9eq8biJfQBQg0z/MJ017.png)

### No[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-common-parameters#no) <a href="#no" id="no"></a>

这个参数的意思是不要什么，如果你不想让 AI 生成的图片里出现树，那就输入 plants 即可：

| **调用方法**                                                       | **使用案例**   | **注意事项** | **V5** | **V4** | **V3** | **niji** |
| -------------------------------------------------------------- | ---------- | -------- | ------ | ------ | ------ | -------- |
| <p>在关键词后加空格，然后带上你不想 AI 生成的内容：</p><ul><li>--no 或者 —no</li></ul> | —no plants | 无        | ✅      | ✅      | ✅      | ✅        |

### Chaos[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-common-parameters#chaos) <a href="#chaos" id="chaos"></a>

这个参数跟 ChatGPT 里的 Top P 有点像，主要控制模型的随机性，数字越高，约有可能产生一些意想不到的结果，数字越低一致性会更高。看看官方的例子， prompt 是 watermelon owl hybrid。

这是当 Chaos 为 0 的时候，一致性会比较高，西瓜和猫头鹰的融合的方式，在四次输出里都比较类似，另外在单次输出里，4张图（四宫格）的风格相似度也比较高：

![MJ158.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/4662C399-08A2-4409-8E09-7EA2222E2441_2/eTJUesykFLMMYVCc1wo9fPqvXNphYHj56yPEzsJjzQ4z/MJ158.png)

这是 Chaos 为 100 的时候，你会发现多次输出的融合风格都不太一样，且即使是在单次输出里，4 张图的风格区别也比较大。如果你是想让 AI 帮你做一些探索性的事情，我建议初期可以将 Chaos 调高一点，结果会发散一些。

![MJ159.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/CC0853CB-481C-46D2-9B87-33C2BB5AB7C7_2/9zmrjxy918XlvZoKkDbbXG5pt0pWNkzfRnGwfjKxpNUz/MJ159.png)

| **调用方法**                                                                   | **使用案例** | **注意事项**           | **V5** | **V4** | **V3** | **niji** |
| -------------------------------------------------------------------------- | -------- | ------------------ | ------ | ------ | ------ | -------- |
| <p>在关键词后加空格，然后带数字：</p><ul><li>--c 或者 —c</li><li>--chaos 或者—chaos</li></ul> | —c 10    | 可以输入 0 - 100，默认是 0 | ✅      | ✅      | ✅      | ✅        |

### Stylize[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-common-parameters#stylize) <a href="#stylize" id="stylize"></a>

这个参数跟 ChatGPT 里的 Temperature 有点像，主要是控制生成图片的风格化程度。简单理解，这个值越低会更符合 prompt 的描述，数值越高艺术性就会越强，但跟 prompt 关联性就会比较弱。

我们一起看下官方的例子，prompt 都是 colorful risograph of a fig。Risograph是一种数字印刷机，它使用模板和专用油墨来制作印刷品。Risograph通常用于制作海报、宣传册等低成本印刷品。这种印刷机可以产生特殊的色彩和纹理效果，头三张图基本上契合 risograph 的风格，但右下角那四张就非常不像了，模型加了很多戏 😂

![MJ160.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/3FA13D77-EA69-469D-AD37-F501F91478B3_2/64RVPjjI2dYrjzq5LdFoanWxyC48CGKgdpUoCeNUL3Az/MJ160.png)

除了在 prompt 里输入外，你也可以在设置里，调整默认的版本，相关教程请查阅 Midjourney 基础设置。

| **调用方法**                                                                       | **使用案例** | **注意事项** | **V5** | **V4** | **V3** | **niji** |
| ------------------------------------------------------------------------------ | -------- | -------- | ------ | ------ | ------ | -------- |
| <p>在关键词后加空格，然后带数字：</p><ul><li>--s 或者 —s</li><li>--stylize 或者—stylize</li></ul> | —s 50    | 默认是 100  | ✅      | ✅      | ✅      | ✅        |

### Niji[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-common-parameters#niji) <a href="#niji" id="niji"></a>

这个其实 Niji 模型，是 Midjourney 跟 [Spellbrush](https://spellbrush.com/) 一起开发的。「niji」是日语「にじ」，意思是「彩虹」 或者 「2D」。

它在生成动漫类的图片上，比较在行。举个例子，prompt 是 fancy peacock，左图是 v5 模型，右图是 niji v5模型，右图更偏向于漫画风格：

![MJ127.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/43A09173-474B-44D9-B4E5-A0F590835D02_2/nGi0CEcjBjAyyw1EQ8jMVHIDUyVR7msxLSPkpKlPWxcz/MJ127.png)

使用方法跟 Version 比较像，只需要在文字 prompt 最后输入 —niji 即可

| **调用方法**                                                  | **使用案例**                          | **注意事项**                                 |
| --------------------------------------------------------- | --------------------------------- | ---------------------------------------- |
| <p>在关键词后加空格，然后带上版本参数：</p><ul><li>--niji或者 —niji</li></ul> | vibrant california poppies --niji | 部分参数对 Niji 无效。大家可以在完整列表里查看哪些参数对 Niji 无效。 |

<br>


# Midjourney 基础设置

### 打开设置[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-setting#%E6%89%93%E5%BC%80%E8%AE%BE%E7%BD%AE) <a href="#da-kai-she-zhi" id="da-kai-she-zhi"></a>

你可以在 Midjourney 的服务器，或者 Midjourney Bot 聊天窗口，输入 /setting，然后按下回车：

![MJ002.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/96534151-4DE5-42BF-9C94-646BC2721A95_2/j6WMLAkvxzyTZzbEf1rmMpqtFtT2prUjZNnY9EXzWusz/MJ002.png)

接着你就能看到这样的 Bot 消息：

![MJ001.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/6B5569D4-BAE1-412D-96D6-7584C2324E9B_2/xWwJDemGdDrzk2eLv7CpO63Kg59lRNEvxsu0FsVqHfEz/MJ001.png)

### 版本设置[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-setting#%E7%89%88%E6%9C%AC%E8%AE%BE%E7%BD%AE) <a href="#ban-ben-she-zhi" id="ban-ben-she-zhi"></a>

第一二行是版本切换，你可以根据自己的需要切换不同的版本，MJ Version 1-5 分别表示 Midjourney 的不同版本，切换后，输出的所有图，默认都会用该版本生成，各个版本区别请查阅 Midjourney 各版本差异。 2023 年 4 月 5 日，Midjourney 上线了其 Niji 5，所以版本设置截图里会有 Niji 4 和 Niji 5 Mode 按钮，请知悉：

![MJ003.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/CE13A3C7-1774-4628-A294-EB7CC7D3A2DC_2/8diQnpcPGNZn0qdxcSLm6L3GXmaPMJ2BSydE4tE4zZQz/MJ003.png)

### 图像质量设置[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-setting#%E5%9B%BE%E5%83%8F%E8%B4%A8%E9%87%8F%E8%AE%BE%E7%BD%AE) <a href="#tu-xiang-zhi-liang-she-zhi" id="tu-xiang-zhi-liang-she-zhi"></a>

第三行是图像质量设置。注意这个参数并不影响分辨率。它改变的更多的是图片的细节，详细的介绍可以查阅 Midjourney Prompt 高级参数 这一章。

基本上保持默认的就可以了，即图中的 Base quality：

![MJ004.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/AEBF1130-CAC2-4572-8F3E-8CB05B0485ED_2/5j83pIj8QVQSQwiBCLl5V0wkR4DF3N60yctleHPxJ9oz/MJ004.png)

### 风格设置[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-setting#%E9%A3%8E%E6%A0%BC%E8%AE%BE%E7%BD%AE) <a href="#feng-ge-she-zhi" id="feng-ge-she-zhi"></a>

第四行风格设置，风格设置简单理解，这个值越低会更符合 prompt 的描述，数值越高艺术性就会越强，但跟 prompt 关联性就会比较弱。详细的介绍可以查阅 Midjourney Prompt 常用参数 这一章。

![MJ005.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/66323141-6050-4DC1-96B8-F2729C1820FD_2/T7y8596xDP36aHSLIZxQTR1qOMdcI5IFKZ3HVeTMkJwz/MJ005.png)

### 隐私设置[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-setting#%E9%9A%90%E7%A7%81%E8%AE%BE%E7%BD%AE) <a href="#yin-si-she-zhi" id="yin-si-she-zhi"></a>

这个设置默认是 Public（公开），只有付费的 Pro 用户可以将其设置为 Stealth Mode（隐私），Basic 和 Standard 都没法设置为 Stealth，对 Midjourney 付费感兴趣的可以看看 订阅 Midjourney 会员 这一章。

![MJ006.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/3A48B75C-7598-4A6E-ABB0-5BFF8648467D_2/iCl5mmYv464AiQExMPqjgyxDa0FeoHdV88wk22naXzoz/MJ006.png)

### Remix 设置[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-setting#remix-%E8%AE%BE%E7%BD%AE) <a href="#remix-she-zhi" id="remix-she-zhi"></a>

Remix Mode 目前是一个实验功能，可能会随时更改或删除。

![MJ007.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/1E344F64-0BE2-4754-84BE-132EC3CF6E36_2/RJZ1STPZgasfCFb6xXJorNItZ4M9Aerxq8kHsjXsNyYz/MJ007.png)

我自己使用下来，有点像 blend（混合）图片模式，使用方法是这样的。首先在 Remix 模式下，点击 Variation 按钮，会弹出一个 Prompt 输入框，输入完后，模型会在不改变第一张图的结构的情况下，增加 Prompt 里提到的内容，比如下面这个例子，第一张图原来是一堆南瓜，点击 Variation 按钮输入 pile of cartoon owls ，就会生成了一张保留原来南瓜图构图，但主体换成了卡通猫头鹰的图。

![MJ009.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/49DE1F97-F68C-419E-B97A-CDB021F1465A_2/o5PDOmhOdoNDZ2syL8q1CowfD837IPOjrNCMXgjVsGEz/MJ009.png)

### 生成速度设置[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-basics-setting#%E7%94%9F%E6%88%90%E9%80%9F%E5%BA%A6%E8%AE%BE%E7%BD%AE) <a href="#sheng-cheng-su-du-she-zhi" id="sheng-cheng-su-du-she-zhi"></a>

这个默认是 Fast Mode，这个只有付费的 Standard 和 Pro 用户可以设置，其余用户都是 Fast Mode。Standard 和 Pro 用户可以在 Relax Mode 模式下，生成无限图片。对 Midjourney 付费感兴趣的可以看看 订阅 Midjourney 会员 这一章。

![MJ008.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/46AE64FB-CB90-4486-ABCE-54FDF8DB567A_2/W59qIjpUobNWkbCtlUIdEMckl7axyXKCBUlAiDEmXLgz/MJ008.png)

<br>


# 订阅 Midjourney 会员

### 如何订阅？[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-membership#%E5%A6%82%E4%BD%95%E8%AE%A2%E9%98%85) <a href="#ru-he-ding-yue" id="ru-he-ding-yue"></a>

你可以在 Midjourney 的服务器，或者 Midjourney Bot 聊天窗口，输入 /subscribe，然后按下回车：

![MJ010.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/FF0900C2-310C-4919-877B-CE0C5AD57201_2/GYoKiAcee0vFK7gsuffsxLzk9PsopzvV1cvJORt4lEEz/MJ010.png)

然后 Bot 就会发送这样的消息，点击 Open subscription 按钮就能进入到付费页面了：

![MJ011.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/26F1A0DD-C603-41E0-8D2B-1205A1A7658B_2/pYHGFSwBpsnJk9CP2LrhG15wzfZ7z2872Nzqf4kxf0sz/MJ011.png)

付费的过程还比较简单，我这里就不做介绍了，只是需要注意，Midjourney 的付费功能用的服务提供商是 Stripe ，目前应该只支持信用卡支付，所以如果要买会员需要有一张信用卡。

### 各套餐之间的差异有哪些？[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-basics/midjourney-membership#%E5%90%84%E5%A5%97%E9%A4%90%E4%B9%8B%E9%97%B4%E7%9A%84%E5%B7%AE%E5%BC%82%E6%9C%89%E5%93%AA%E4%BA%9B) <a href="#ge-tao-can-zhi-jian-de-cha-yi-you-na-xie" id="ge-tao-can-zhi-jian-de-cha-yi-you-na-xie"></a>

我把差异的都总结在下表（数据截止至 2023-03-28）：

|                      | **Basic Plan**           | **Standard Plan** | **Pro Plan** |
| -------------------- | ------------------------ | ----------------- | ------------ |
| 月付价格                 | $10 / month              | $30 / month       | $60 / month  |
| 年付价格                 | $8 / month               | $24 / month       | $48 / month  |
| Fast Generations     | 3 hours 左右（大约能生成 200 张图） | 15 hours          | 30 hours     |
| Concurrent Fast Jobs | 3                        | 3                 | 12           |
| Relaxed Generations  | ❌                        | ✅                 | ✅            |
| Stealth Mode         | ❌                        | ❌                 | ✅            |

首先，Midjourney 的计费跟 OpenAI 不太一样，OpenAI 计费用的是 Token，Midjourney 用的计费方式是时间，因为其主要的成本在 GPU 计算，Midjourney 采用这种方式，估计也是因为他们的 GPU 也是租的，租用 GPU 的费用也是按时间计算，所以转嫁到消费者上也按照时间算了，Basic 版本看后台，Fast Generation 的时间是 3h 20 min，然后官方说明是应该能生成 200 多张图。

不过每张图所耗的 GPU 时间并不固定，还取决于你的图片质量等，影响费用的因素有以下几种，各个参数对应的影响，可以查阅教程里关于参数的内容。我这不展开解释，简而言之，图片质量越好，个性化因素越多，价格就越贵。

|                         | **低于平均价格**                    | **平均价格**      | **高于平均价格**                        |
| ----------------------- | ----------------------------- | ------------- | --------------------------------- |
| 不同任务                    | Variations（就是生成图片后，图片下的 V 按钮） | /imagine 生成图片 | Upscale（就是生成图片后，图片下的 U 按钮）        |
| Aspect Ratio 长宽比        |                               | 默认            | tall or wide（换句话说，改这个参数就要花更多的钱）   |
| Model Version 模型版本      |                               | 默认（—V 4）      | —test or —testp 这两个模型会更贵一些，我一般很少用 |
| Quality Parameter图像质量参数 | --q 0.25 or —q 0.5            | 默认（—q 1）      | —q 2                              |
| Stop Parameter停止参数      | --stop 10 到 —stop 99          | 默认（—stop 100） |                                   |

然后 Standard Plan 开始还有一种叫 Relaxed Gerneration 的模式，这种模式下，该套餐付费用户，可以无限出图，但图片生成的速度会变慢，按照官方解释是 0-10 分钟。

其实本质上它是一种 GPU 空闲资源排队方案，切换到 Relax 模式下，所有生成图片请求会进入到一个排队等待状态，当没有 Fast 模式下的用户使用 GPU 时，就会将 GPU 资源给 Relax 模式的用户，所以才需要等待那么长的时间，本质上是闲置资源的利用 。

另外需要注意：

1. 你用得越多 Relax 模式，你等待的时间就越长，这个有点像是手机运营商的无限套餐逻辑，流量达到某个阈值就会降速，所以如果你是和他人合购账号，就需要注意了，Fast 时间基本上就是先到先得，Relax 模式越用会越慢。
2. 即使你上个月底已经切换为 Relax 模式，每个月的月初，系统也会自动将模式切换为 Fast 模式。

最后还有一个 Stealth 模式，Midjourney 是一个默认开放的社区，所以你在 Midjourney 上生成的图片（包括你私聊 Bot 生成的图片），都是公开的，你可以在会员 Gallery 那看到所有人生成的图片。

只有 Pro 版本可以不公开自己的图片到 Gallery，另外还有一点需要注意，如果你打开了 Stealth 模式，然后在 Midjourney 的 Discord 公开频道生成图片，Stealth 模式不生效，生成的图片依然会被 Discord 公开频道里的人看见。


# 高级篇

高级篇内容相对不需要关注，如果你对 Midjourney 已经很了解，可以看看。


# Midjourney Prompt 高级参数

### Quality[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-extras-parameters#quality) <a href="#quality" id="quality"></a>

图片质量是另一个我比较常用的属性，首先需要注意这个参数并不影响分辨率，并不改变分辨率，并不改变分辨率（重要的事情要说三遍）。

它改变的更多的是图片的细节，比如下面这个例子，下方第一张图是 0.25 ，你会发现最右边的图细节比第一张图多很多很多。

但低 Quality 也不是没有好处，它的好处是生成图片的时间会更快，换句话说，你可以花更少的 GPU 时间，我一般会用这个参数做一些探索性生成图，大方向没问题，再让模型丰富细节。

![MJ61.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/A021D1BD-049B-411E-92AE-83B5A5EEF86C_2/pII20DRpt5ZI4ukp3g6NZZVr0aHO64xKepAPyex33Rgz/MJ61.png)

除了在 prompt 里输入外，你也可以在设置里，调整默认的版本，相关教程请查阅 Midjourney 基础设置。

| **调用方法**                                                                     | **使用案例**                     | **注意事项**                                                           | **V5** | **V4** | **V3** | **niji** |
| ---------------------------------------------------------------------------- | ---------------------------- | ------------------------------------------------------------------ | ------ | ------ | ------ | -------- |
| <p>在关键词后加空格带上参数：</p><ul><li>--q 或者 —q</li><li>--quality 或者—quality</li></ul> | woodcut birch forest --q .25 | <ul><li>默认为 1</li><li>仅支持 .25，.5 ，1 和 2，如果输入大于 2 会被降级到 2</li></ul> | ✅      | ✅      | ✅      | ✅        |

### Seed[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-extras-parameters#seed) <a href="#seed" id="seed"></a>

你在使用 Midjourney 的时候，应该会发现，即使用相同的 prompt，每次生成的图片都会不一样。其实 Midjourney 会为每个生成的图片打上一个 seed 编号，你可以在 prompt 里加入这个 seed 参数，这样每次生成的图片就一样了，以下是官方的例子：

![MJ026.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/E0261A5A-AAA7-4836-B8FB-CACD9E70449F_2/AYWYIqo2hRdREXyboPmPwwdNayCkNi8HC8pMLIB19rYz/MJ026.png)

调用方法很简单：

| **调用方法**                                                                             | **使用案例**                        | **注意事项**                                                                                                                   | **V5** | **V4** | **V3**     | **niji** |
| ------------------------------------------------------------------------------------ | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | ------ | ------ | ---------- | -------- |
| <p>在关键词后加空格带上参数：</p><ul><li>--seed 或者 —seed</li><li>--sameseed 或者—sameseed</li></ul> | woodcut birch forest --seed 123 | <ul><li>输入完全一样的文字 prompt，并且加上 seed 参数，才能生成一样的图。</li><li>V1、2、3 还有 test、testp 版本即使加了这个 seed 也没法生成一模一样的图，只能生成近似的图。</li></ul> | ✅      | ✅      | ✅ 但只能生成近似图 | ✅        |

那如何获得这个 seed？

找到你想要获得 seed 的图片，然后在其消息右上角有个 emoji 按钮，点击后会出现一个 emoji 菜单，然后在 emoji 菜单里输入 envelope ，最后点击 ✉️ emoji ，然后在图片下方就会出现一个 envelope 的 emoji，最后你会收到 Midjourney Bot 的私信推送，该消息上面就会有 Seed 号码。

![AnimatedImage.gif](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/0ECFAB84-AF4C-4341-B60A-5084DCD4D04E_2/lUQZFixPHuw6sb9OpQnxPLdnZPGWEsKkrXxeegLVNrEz/AnimatedImage.gif)

### Image Weight[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-extras-parameters#image-weight) <a href="#image-weight" id="image-weight"></a>

这个翻译成中文是「图片权重」的意思。

当你同时用 img prompt 和文字 prompt 的时候，就可以通过这个参数设置到底更像图片还是更像文字，当这个参数越大，AI 生成的图片就越像原图，越小，就越像文字描述。

以下是 Midjourney 的官方案例，可以看到，数值越大，就越像原图：

![MJ141.jpeg](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/A2A360FB-E94A-47E5-9FEB-AE2FB49FAD8D_2/MsiDjcQZLvZxF6qsdfobkel5NkZIzew28GyfzFx2nREz/MJ141.jpeg)

| **调用方法**                                          | **使用案例**                          | **注意事项**                                         | **V5**            | **V4** | **V3**                      | **niji** |
| ------------------------------------------------- | --------------------------------- | ------------------------------------------------ | ----------------- | ------ | --------------------------- | -------- |
| <p>在关键词后加空格带上参数：</p><ul><li>--iw 或者 —iw</li></ul> | flowers.jpg birthday cake --iw .5 | 这个参数在不同版本有不同的默认值（就是即使你不输入这个参数，AI 也会自己加这个参数进去）和区间 | ✅ 默认为 1，区间是 0.5-2 | ❌      | ✅ 默认为 0.25，区间是 -10000-10000 | ❌        |

### Stop[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-extras-parameters#stop) <a href="#stop" id="stop"></a>

这个参数跟 ChatGPT 里的 stop 类似，就是强制暂停模型。

| **调用方法**                                              | **使用案例**                                  | **注意事项**                                          | **V5** | **V4** | **V3** | **niji** |
| ----------------------------------------------------- | ----------------------------------------- | ------------------------------------------------- | ------ | ------ | ------ | -------- |
| <p>在关键词后加空格带上参数：</p><ul><li>--stop 或者 —stop</li></ul> | splatter art painting of acorns --stop 90 | <ul><li>默认值是 100</li><li>你可以输入 10 到 100</li></ul> | ✅      | ✅      | ✅      | ✅        |

### Style[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-extras-parameters#style) <a href="#style" id="style"></a>

这个参数主要是用于切换 V4 模型中的分支模型。

我个认为觉的这个不是很好用，且因为 V5 已经推出，大家都在用 V5 了，所以未来我认为会淘汰（这个我猜测其实是 V5 的其他分支版本，早放出是为了收集数据）。所以就不做介绍了。

### Uplight[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-extras-parameters#uplight) <a href="#uplight" id="uplight"></a>

当 Midjourney Bot 图片生成完成后，图片下方都会有一排 U 按钮，这些按钮做的事情就是这个 Uplight 参数做的事情，一般人都会通过点击按钮来使用，比较少在 prompt 里添加。

而且现在 V5 版本，U 按钮已经不会影响分辨率了，只是做为一个裁切图片的功能。所以这个参数也是一个我认为要被淘汰的参数。大家不必关心。

### Upbeta[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-extras-parameters#upbeta) <a href="#upbeta" id="upbeta"></a>

另一个我认为会被淘汰的按钮。

### Video[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-extras-parameters#video) <a href="#video" id="video"></a>

我觉得这个参数很有意思，这其实是个类似录 gif 的参数。在 prompt 里加入这个参数，升成图片的同时，还会记录升成的过程，但可惜这个参数只支持到 V3，估计官方未来也会放弃吧，主要是没啥用，就是好玩。


# Midjourney 各版本差异

### V1、V2、V3、V4、V5[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/differences-between-versions#v1v2v3v4v5) <a href="#v1v2v3v4v5" id="v1v2v3v4v5"></a>

我们都用相同的 prompt 来看看各版本的差异，我使用的是官方案例里的 prompt：

```
vibrant California poppies
```

![MJ017.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/F1CE2054-8474-4061-B300-F6A374BC33ED_2/vzfFBFRCbogB3goVBDWjWMrxBWJsfr46HDOAHUFjaiIz/MJ017.png)

从上图里其实你就能看到 Midjourney 的进化方向：

1. 越来越丰富的细节，生成的内容也越来越真实。V1 和 V2 基本上就是简笔画，看看 V2 第四张图前景和背景的处理就很粗暴，到了 V3 背景和透视都变得更加合理，然后到了 V4 基本就是一个可用的状态。
2. 分辨率越来越高。V1\~V3 单张图是 256 x 256，到了 V5 单图已经默认是 1024\*1024。
3. 参数更多，Prompt 更加重要。这个在 V5 版本更加明显，感觉以前的版本，并不太能理解一些词，比如材料词 marble 之类的。但到了 V5 理解能力变强了。
4. 艺术风格词变得更重要。这个结论暂时没有得到官方的认证，甚至有很多人认为 V5 版本是个更「通用」的版本，我的理解是 V5 提高了整个基准线，不需要太多描述词，就能生成一个「可以看」的图片，但如果要生成一张你跟你预期完全一致的图，其实变难了，你需要了解更多的 prompt。

然后我们再来看看更复杂的 prompt 看看版本的差异：

```
21years chinese girl, in school, beauty, long black hair, sun light，insane detail, smooth light, real photography fujifilm superia, full HD, taken on a Canon EOS R5 F1.2 ISO100 35MM
```

看看生成的结果，是不是差距非常大，从 V1 到 V5 的进化，Midjourney 大约花了 1 年的时间，如果仅算研发时间，我觉得应该不到 1 年，非常了不起：

![MJ018.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/875E873B-DE77-4AA7-A6AC-0B5D25D634E2_2/UYfBO2fcgLOmy8rLQMF1rJ9GPvA6dZNGrZty3puyBUkz/MJ018.png)

### Niji[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/differences-between-versions#niji) <a href="#niji" id="niji"></a>

最后再介绍一个 Midjourney 的特殊版本 Niji，这个版本其实是 Midjourney 跟 [Spellbrush](https://spellbrush.com/) 一起开发的。「niji」是日语「にじ」，意思是「彩虹」 或者 「2D」。

它在生成动漫类的图片上，比较在行。举个例子，prompt 是 fancy peacock，左图是 v5 模型，右图是 niji v5模型，右图更偏向于漫画风格：

![MJ127.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/E3A4971C-22A4-48D8-B68F-236586444BD8_2/xRM3yfR8IH6jd2C8F3ws0QSyARF5xMc8nIdEydcytSkz/MJ127.png)


# Midjourney 官方 FAQ

本章节，主要是翻译官方的 Discord FAQ 文章，我只挑了一些大家常见的问题进行翻译，各位可以在官方 Discord prompt-faqs 找到这些原稿。

{% embed url="<https://docs.midjourney.com/docs/prompts>" %}

### 4K、HD 等所谓的 Rendering 词有用吗？[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-official-faq#4khd-%E7%AD%89%E6%89%80%E8%B0%93%E7%9A%84-rendering-%E8%AF%8D%E6%9C%89%E7%94%A8%E5%90%97) <a href="#id-4khd-deng-suo-wei-de-rendering-ci-you-yong-ma" id="id-4khd-deng-suo-wei-de-rendering-ci-you-yong-ma"></a>

[官方解释](https://discord.com/channels/662267976984297473/1029786943141191700) Rendering 词包括：

> Rendering words include `4k, 6k, 8k, 16k, ultra 4k, octane, unreal, v-ray, lumion, renderman, hd, hdr, hdmi, high-resolution, dp, dpi, ppi, 1080p`.

有用吗？官方的解释是：

> Rendering words do ***something*** to your image. They may also be what's ***breaking*** your prompt. So, as part of troubleshooting, we recommend removing them. Removing them often fixes issues with blurring, focus, clarity, and coherence.

意思就是会影响，有一定作用，但弊大于利。加入这些词，反而会破坏你的 prompt，特别是一些摄影场景，比如你需要用到诸如背景虚化等效果，再加上 4K 可能就会破坏背景虚化。

所以官方建议去掉这些词。

### Prompt 里的词语顺序会影响结果吗？[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-official-faq#prompt-%E9%87%8C%E7%9A%84%E8%AF%8D%E8%AF%AD%E9%A1%BA%E5%BA%8F%E4%BC%9A%E5%BD%B1%E5%93%8D%E7%BB%93%E6%9E%9C%E5%90%97) <a href="#prompt-li-de-ci-yu-shun-xu-hui-ying-xiang-jie-guo-ma" id="prompt-li-de-ci-yu-shun-xu-hui-ying-xiang-jie-guo-ma"></a>

[官方解释](https://discord.com/channels/662267976984297473/1020572050898813029)：

> Word order matters. Early words are generally more influential.

顺序会影响结果，越早出现的词，对结果影响越大。所以我设计的模版才会将「类型」放在最前面。因为这是我的最重要的目标。官方还建议：

1. 避免列举词语：例举的意思是在 prompt 里写多个同一个意思的词。
2. 使用具体的相关词语：越具体生成的图片越符合 prompt。
3. 用句子片段：就是不要像写雅思作文那样，写定语从句、长难句，而是将这些词切开。
4. 避免使用4K、8K、16K等安慰剂词汇。

### 为何 Seed 不生效？[​](https://learningprompt.wiki/docs/midjourney/mj-tutorial-extras/midjourney-official-faq#%E4%B8%BA%E4%BD%95-seed-%E4%B8%8D%E7%94%9F%E6%95%88) <a href="#wei-he-seed-bu-sheng-xiao" id="wei-he-seed-bu-sheng-xiao"></a>

[官方对 Seed 的评价](https://discord.com/channels/662267976984297473/1017917091606712430/threads/1022698154170253363)是：

> * Seeds can not transfer the style or appearance of images across jobs.
> * Seeds can not be used to 'bookmark' styles or appearance. (i.e. "Use seed XYZ for that!")
> * Seeds are the weakest force in Midjourney. In --v 5 they may not work as expected at all.

简单总结，就是这个功能在 V5 版本下非常不稳定，你不要预期它能跨图片传输 prompt。

<br>


# 技巧篇

这里汇总了所有 Midjourney text prompt 技巧，方便各位查阅。


# 技巧一：临摹

我认为学习图片类的 prompt，跟学习画画是类似的，最好的学习方法不是直接用模板。

而是拿真图，或者别人生成的图来临摹。英文不好，也可以先写中文，然后让 ChatGPT 翻译。当你临摹了几张后，你就会慢慢搞懂如何做出类似的图了。

拿上面的那个握手图为例，我们仔细观察上面那张图，图中元素有什么：

1. 第一主体是两个手，然后握在了一起，并且看起来是两个亚裔男人。
2. 第二两人都穿着西装。
3. 第三背景看上去像是在办公楼的大门，两人可能是在握手告别。并且背景刻意进行虚化了，或者是使用照相机拍摄的。

![MJ020.jpeg](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/861C8258-85BF-40A9-8389-5583F653CF3D_2/koWtZdjhYPCuvk8y9wbOckqwLISoCxZzDogBJVFLgAgz/MJ020.jpeg)

再归纳总结下，大概的信息：

* 主体：两个穿着西装的亚裔男人在握手告别
* 场景：办公楼大门
* 图像风格：stock photo，照相机拍摄，

这时候，我们就能尝试写一下 prompt 了（如果你觉得自己英文水平还不太行，也可以尝试用翻译软件翻译）。

```
stock photo of two Asian men in suits shaking hands,say goodbye in front of the main entrance of the office building,taken with Canon
```

Midjourney 生成的结果如下所示。

Emm 🤔 好像跟我们的预期不一样。不要慌，刚开始用 Midjourney 一定会遇到这种问题，重要的是多尝试。

![](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/E398A4A0-ECBB-4592-8CAA-AE68AED3FCCC_2/srcSfwZqzcgOymCyOlvnAMVi1okc5zsoKI3eSfA6kh8z/MJ021.png)

我们再来分析下 Midjourney 为何生成了这样的图片？复盘下：

1. 首先图片的主体，或者说焦点，我们只需要「握手」，而不是两个人。
2. 照相模式好像并不能实现背景虚化？更像是一种图像风格，图四就像是一种老照片的风格。

那我们调整下 prompt，增加焦点和背景虚化关键词：

```
stock photo of two Asian men in suits shaking hands,say goodbye in front of the main entrance of the office building, focus on two hands, taken with Canon, background bokeh
```

再来看看生成的结果，结果好很多，图 1 和 图4 基本满足需求了，图 2 和图 3 裁剪一下，也能满足我们的需求。不过需要注意，Midjourney 在人手的生成上，暂时还有点问题，你细看图 2和图 4，其中有一个人的手有 6 个手指 😂，但我认为未来应该会修复：

![](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/4931E039-2B61-49DB-98C1-B524E780BBC3_2/W6jeVicuOIl0RU7EqpXP71NeJ8BWY3FHgXoxFobCQmMz/MJ161.png)

那我们来总结一下 prompt ，该 prompt 分成以下几个部分：

![MJ022.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/07B84FDC-3494-4173-824F-92CABFDD9CA8_2/WZmCoU5tVeOGV6wnngJkFfzyIed10o5tKIWDar54D9gz/MJ022.png)

* 第一部分（红色线）：描述你想要的内容主体。
* 第二部分（蓝色线）：描述主体背景/环境。
* 第三部分（黄色线）：照片的焦点位置。
* 第四部分（绿色线）：照片的风格或者说是特殊要求。

总结下之后，你是不是就总结出了一个模板了？😁


# 技巧二：多实验

我还想教给各位第二个技巧：多试验。

图片生成遇到不符合预期的情况，不要慌，分析问题，然后使用控制变量法，一个个调整图片，不要急，上面我写的 prompt 还有一个地方，不知道各位有没有注意，就是开头的 stock photo，试试将这两个词删掉会怎样？

```
two Asian men in suits shaking hands,say goodbye in front of the main entrance of the office building, focus on two hands, taken with Canon, background bokeh
```

生成结果也依然满足需求，而且手指的数量也准确了，说明这个 Stock Image 对模型的影响不是很大。

![](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/BBB1BC5B-BDE3-4034-B297-46D10CEC44D6_2/iH9AHSuCO6bCVxInVZvgbnybwNXUTbwkjT9Bjumf36Mz/MJ023.png)


# 技巧三：善用 Image2Image 功能

在 Stock Photo 场景里，还有一个非常厉害的技巧，这个方法我一开始觉得不太适合教，因为这个对 Stock Photo 库影响太大了 😂

但本着工具中立的原则，并且这个技巧，其实在很多场景都能用（比如生成头像等），所以还是觉得有必要教给大家。

各位一般用 Stock Photo 库会遇到以下几个问题：

1. 图有版权，没法商用，或者说需要付费。
2. 有些图，被很多人用过，其他人一眼就看出来这是 Stock Photo。
3. 图里的内容大体符合要求，但细节不符合要求，比如上图两个亚洲男性握手，可能换成一男一女，且其中一人是黑人会好一些。

要解决这三个问题，最好的方式就是让 AI 改一改原来的图片。让 AI 改图，只需要用到 Image2Image（或者叫 Blend） 功能即可。操作步骤如下：

信息

后来在某书刷到类似的教程，我才知道这个方法大家一般叫垫图。老外好像一般都叫 Image2Image，或者 img2img。

1. 将你看到的不错的 stock photo 发给 Midjourney Bot（我还是以前面的那张握手照为例）
2. 右键复制该图片的链接，然后黏贴到输入框
3. 在链接后加个空格
4. 接着输入你想要的内容，比如将其中一个人的手换成黑人，一个人换成女性：

```
one Afican-American hand and one Asian woman hand
```

生成的结果是这样的，我在 prompt 里没有提任何西装，以及场景背景信息，就说我要一个非裔的手，一个亚裔女性的手：

![MJ162.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/B9BD4D78-6C58-4A4A-8433-9D562A949CBB_2/xb58eLg0qFxYh6JyyMs4HpXvI1oFxcWfDDXi70zpY1Az/MJ162.png)

抛开6 根手指的问题，这个技巧是不是很高效？不过需要注意，blend 功能（这个后续教程会讲到）我发现更适合两张图融合，图片+文字不是很稳定，各位要有耐心，多测试一下。


# 技巧四：增加风格——艺术运动


# 技巧五：增加风格——艺术家

> 因为篇幅的原因，本教程不会介绍特别多的风格，我会在我的[小红书账号](https://www.xiaohongshu.com/user/profile/6073d38d00000000010068a6?xhsshare=CopyLink\&appuid=6073d38d00000000010068a6\&apptime=1679646639)上更新。感兴趣的朋友可以去关注下。

前一章介绍了增加艺术运动，从而使得生成的图片更加特别，本章再教大家一个方法，是增加艺术家的名字。 首先需要注意，Midjourney 支持大部分的艺术运动，但在艺术家的支持上，相对来说比较少，经过网友们的不懈努力，截止到 3 月 31 日，V4 已知支持的艺术家有 2000 多位，V5 有 100 多位。 其中在榜的 Logo 设计师，只有 [Paul Rand](https://zh.wikipedia.org/zh-tw/%E4%BF%9D%E7%BD%97%C2%B7%E5%85%B0%E5%BE%B7) 和 [Saul Bass](https://zh.wikipedia.org/zh-tw/%E7%B4%A2%E7%88%BE%C2%B7%E5%B7%B4%E6%96%AF)，Paul 是 IBM、英孚、NeXT logo 的设计师，Saul 是美国联合航空、AT\&T logo 的设计师。 使用方法很简单，在 prompt 最后加上 by Paul Rand 即可：

```
letter A logo, lettermark, typography, vector simple, by Paul Rand
```

当然也不是说只能加 Logo 设计师，加上没有设计过 Logo 的设计师名字，也很有意思。比如右边四张图我加的就是 Piet Cornelies Mondrian，第三张 logo 有 Composition II in Red, Blue, and Yellow 那味了。左边四张则是 Paul 的，第二张红色框加黑色 A，有他的经典眼镜 logo 那味，非常喜欢：

![MJ036.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/AE2B3E95-3FE1-4CB9-9222-F900DCE1A3F0_2/AR2GvKhOOgxDVa6nFmWZMoMdbfmYEXZPjXqUmpW3jpsz/MJ036.png)

最后需要注意，增加艺术家名，有可能出现以下情况：

1. 多长图的风格都很像：这是因为某些艺术家有非常强烈的标志性风格，比如我很喜欢的 Piet Mondrian，你用他的名字，会发现可能生成的很多张图都是 Composition II in Red, Blue, and Yellow 的风格。
2. 生成的图看上去不太像该艺术家的风格：我自己测试，发现有两种可能，一种是模型并没有学习这个艺术家的作品（特别新的艺术家我感觉一般都不会收录），另一种可能是你的 prompt 里的一些词，跟该艺术家的风格有冲突，比如用了达芬奇 Leonardo da Vinci，但主体是个日本二次元小姑娘。

PS：在本教程里的 Artist List 可以看到我比较喜欢的艺术家。


# 技巧六：善用 no 参数，去掉不想要的元素

在徽章 Logo 的案例里，你应该还看过单色的徽章，比如校徽。但 Midjourney 有个习惯就是倾向于生成复杂的内容，生成单色内容，你可以在 prompt 里加入颜色，背景等等词，让其变得简洁。

还有一个技巧是用 no 参数。比如我想制作一个单色校徽，校徽主体是一本书，同时因为 Midjourney 对文字不是很擅长，我还要去掉 text。以下是我的 prompt，我在最后加了 no realistic color（没有颜色）text（字）。

```
emblem for a university with large book, vintage --no realistic color text
```

然后我把上面那个 Instant Noodles company 的 prompt 也加了 no text，最后生成的两组图片是这样的（最后需要注意，no 参数在 logo 里使用时，--no text 有的时候会失效，但如果你去掉 — 直接输入 no text 就会生效，很神秘，估计是个 bug）：

![MJ038.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/3BBFDC1C-3C18-4C91-8D74-FC2904B7665F_2/XYuI28qn00QDz7HxOwmHoRkRRZQRrC1jwNtRytEmvssz/MJ038.png)


# 技巧七：多参数同时使用

在使用 img2img 的方法生成头像时，我发现问题是「文字权重比图片权重高」，导致其生成的图片不像原图，iw 参数在 V5 里最多提升图片权重到 2，所以我就在想有没有可能进一步降低文字的权重。

然后我就试了下 s 参数，发现的确好了很多。

如果生成的图片还是不像，你可以在 —iw 2 基础上，再加一个参数 —s 200 ，注意同时用两个参数时，中间不要有逗号。我发现加了 s 参数之后的确像了很多，我个人猜测是 s 和 iw 连用会进步一削弱 text 的权重。

s 是控制生成图片的风格化程度。简单理解，这个值越低会更符合 text prompt 的描述，数值越高艺术性就会越强，但跟 text prompt 关联性就会比较弱。所以如果你生成的图还是不像，就加大这个值，比如调到 500。

我想通过这个案例告诉大家，多个参数一起使用，有可能会形成合力，进一步放大模型的能力。未来有新的参数能力，不妨也想想有没有可能一起用？

<br>


# 技巧八：使用 Seed 参数对图进行二次修改

注意：这个技巧，我个人觉得未来潜力比较大，但目前 Midjourney 的实现效果还比较一般，效果得不到保证。官方的社区的帮助文档也提到这个功能在 V5 非常不稳定。详细可以看看我整理的 Midjourney 官方 FAQ 一章。

你可能遇到类似这样的场景：

1. 你输入一段 prompt，机器生成了 4 张图片
2. 你看了下4张照片，发现其中有一张还行，但其余不是很满意，然后改了下 prompt，机器又生成了一些
3. 但这次生成的照片你都不满意，你就很烦恼为何会这样
4. 然后你就像为啥不能在第一次生成图上做修改呢？

基于某一次生成的结果进行二次 prompt 修改，理论上我认为是可以的，以赛博朋克头像为例，我先用上述 prompt 生成了四张图片，然后在消息的右上角点击 emoji 按钮（下图1），然后再输入框里（下图2）输入 envelope，然后点击信封 emoji（下图3），接着 bot 就会将 seed 号码发给你。

![MJ040.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/A81C7114-3DD6-4EB3-A4BA-FBB1A68713CC_2/MybA70bYUjrlgsScqvQUbkdVbbftxkf40OPdtEHsGdkz/MJ040.png)

然后我修改上面的赛博朋克头像的 prompt，将其背景改为 China Town，此时需要注意：

1. 新的 prompt 并不是只改 background，你需要将之前的 prompt 都带上。
2. prompt 仅修改 background 的部分。
3. 最后带上 seed 参数。

以下是我的案例：

原 prompt：

```
{img url}  avatar, cyberpunk robot face, holographic VR glasses,holographic cyberpunk clothing, neon-lit cityscape background, Cyberpunk, by Josan Gonzalez --s 500 --iw 1
```

新 prompt（seed 码只是示例，你要填写自己的 seed）：

```
{img url}  avatar, cyberpunk robot face, holographic VR glasses,holographic cyberpunk clothing, China Town background, Cyberpunk, by Josan Gonzalez --s 500 --iw 1 --seed 758242567
```

以下是生成的效果（左图为原图，右图是用了 seed 后生成的图），可以看到，背景的确换了，但人的外观也有点变化 😂

效果不是很好，但我觉得值得探索，这样能提高渐进优化的成功率：

![MJ041.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/56857A8C-7F46-4631-BEAA-696EE75C3A4E_2/FLBeKQqjyzfqEIyRyHUon4bg0JOXdteAPE7TgjsrZ60z/MJ041.png)


# 技巧九：神秘的 blend 功能

这个技巧，说实话，我感觉不能称其为技巧，但这又是一个 Midjourney 非常重要的 feature，所以在这里着重介绍一下。

这个功能使用起来非常简单，在 Discord 输入框里 /blend，然后点击这个菜单：

![MJ057.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/711A1666-90E0-4885-8821-9DE291BA4E5C_2/pLGOKURlwtTKN72KKCVrosAuI2YKyEYQnd1MzWW5kCsz/MJ057.png)

之后你的输入框就会变成这样：

![MJ058.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/E0D3D93D-5741-4C74-BF54-D6165C103CBE_2/otQUevHxBx118ESLonxio5Q4tZ7jrFVLhhXyaFIbLAkz/MJ058.png)

然后你就可以点击这两个框，然后选择你电脑上的照片，添加完成后，大喊一声「使用融合卡」（不是），然后点击回车：

![MJ059.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/A4E58CD2-3E5F-42C8-AE2A-60349FE7B860_2/VUq7TBcjyUHdWjAPh5Y2x8CYDys4L59YGhrkXMlBMtUz/MJ059.png)

然后 Midjourney 就会生成这样牛逼的结果，左边是融合钢铁侠，右边是融合巴斯光年：

![MJ061.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/77ADDE3A-48E0-4323-8D9C-F80D32E41814_2/1MWe1uTDsRJp30xzq9R4CYHklyZxU9jKEay2XV6LFSEz/MJ061.png)

这个功能我第一次看到时，我是非常震惊的，以为是小时候看游戏王里主角们使用「融合卡」的那种效果。可惜并不是，这个功能非常不稳定，仅有在满足多个未知条件才能达到上述的效果。

我本来打算用这个方法用于生成头像，但我发现只要用自己的照片，融合其他风格的照片，效果都不太好，目前实验下来效果最好的是名人头像，我的感觉是因为 Midjourney 喂了不少名人的头像给模型，所以这种融合的效果都很好。

但我觉得它真的很适合做头像，将自己的头像跟另一张图片融合一下，就能生成一张不错的图，方便又快捷。可惜目前这个功能感觉还不太好用。

当然这个功能还不仅仅止于此，它还有很多使用场景，在后续会介绍给大家。

<br>


# 技巧十：控制变量法渐进优化

很多人把 AI 生成图片比喻为炼丹，我觉得非常贴切，很多时候，也不知道为啥，在 prompt 里加一点神秘配方，图片就会很不一样。

不过我觉得虽然过程很像炼丹，但并不代表我们需要像古人那样，用撞大运的方式炼制丹药。我认为目前使用 Midjourney 最好的方法是：控制变量渐进优化法。

拿上面那个装备集的图片为例，我希望它生成的是装备，并且是一件件地排布，而且光剑的效果也很奇怪，首先我们来逐条排查 prompt：

|         | **Prompt**                  | **检查**                                                                        |
| ------- | --------------------------- | ----------------------------------------------------------------------------- |
| 类型是什么？  | blender 3d, game sheet      | 这个好像有点问题，我希望的炉石传说的风格，好像不是这种精致的 3D 效果，生成的风格更像是星际争霸的，而炉石传说是那种黏土风格（clay render）。 |
| 主体是什么？  | lightsabers, paladin armor, | 这里可能也有问题，会不会是没有写 different types of lightsabers 导致只生成一种光剑。                    |
| 背景是什么？  | null                        | 这个应该没啥问题                                                                      |
| 构图是怎样的？ | null                        | 这个应该没啥问题                                                                      |
| 用什么镜头？  | null                        | 这个应该没啥问题                                                                      |
| 是什么风格？  | style of Hearthstone        | 感觉生成的图没有那种中世纪盔甲的油腻感，但如果前面改了黏土风格，会不会好一些？这里可能也需要优化下。                            |
| 参数      | null                        | 这个应该没啥问题                                                                      |

从这个表里可以看到，我们发现了三个问题，其中第一个黏土风格问题，跟最后一个问题有关，此时我的建议是：

1. 每次仅修改一个，其余变量不变。
2. 修改完一条，效果符合预期后，再修改下一个。
3. 我的经验优先修改主体内容，因为主体有的时候会影响其余的变量。
4. 如果想确定这个修改是否具有一致性，或者说是否符合要求，而不是恰巧符合，可以用相同的 prompt 再生成一次。不过因为没生成一次都要花钱，所以这个是可选项。

OK，按照以上原则，我们修改一下我们的 prompt，看看生成了什么，的确加了 different types of 后，光剑就多了，问题解决了：

![MJ051.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/D9C6275A-84EE-42EC-9509-F43E60C9B66F_2/pGbPtLPgN7zTTZlDFgNVexGZ4BxTGtiE3vy0jdlY5CIz/MJ051.png)

然后我们修改下 blender 3d，将其改为 clay render （黏土渲染），我改完之后发现生成的结果（左边四张），好像质感还是差了一点，于是我又试了下保留 3d blender 加 oily 的效果（中间四张），以及 clay render 加 oily 两个一起用（右边四张）。

![MJ052.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/ADB20BDA-306A-43F7-90E0-DEBC3DA471CE_2/xGfjCTVHUxQI4j1CVceShaJEMymax4oa3NxxPccCI1wz/MJ052.png)

我个人觉得好像两个都改了效果是最好的（右边四张）。

对比一下最开始的 prompt 生成的图片，是不是最终的图片效果更好？所以这个技巧主要想告诉大家，写 prompt 没有必要照抄答案，你也有能力自己写好 prompt。


# 技巧十一：增加风格——国家

说到手办，大家应该第一反应会想起日本，再介绍一个技巧，在 prompt 里加入 Japanese style 即可，拿圣女贞德作手办，以及之前做的 logo 作为例子：

![MJ068.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/CAFFF957-21C3-4C53-BE65-9B6F9B73A057_2/ILjDsXxCDTpKgJuwPetDn24KJzWqTyDkErDcrNM8qdYz/MJ068.png)

圣女贞德是不是有种 FF 的感觉？Logo 也比较简洁，猫的外观也有点像动漫里猫的外观，当然除了 Japanese 还有 Chinese（左边4张），甚至 African Style：

![MJ070.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/3BAF36F1-79C5-49F8-BBA2-52690D92E2DB_2/HGvbC6iGSEo4ubTNoKYTQVinUMv2yyawJhN6N2pVrZEz/MJ070.png)


# 技巧十二：增加权重

各位有没有发现，上面那个 Chinese 手办生成的结果好像只有第三张是中国人面孔？原因是 Chinese style 的权重太低，所以仅输出了一个结果。你在实践的过程中，也肯定会遇到，AI 忽略了某些 prompt 词的情况，比如你提到画面中要有一只鸟，但它就是没画出来。

那为何会产生这样的结果？原因 Midjourney 的 prompt 权重是按照顺序逐个降低（详情请见我翻译的 Midjourney 官方 FAQ），在我们上面的 prompt，我们将 Chinese Style 放到了最后，所以生成的结果也是最少的。忽略了某些词，这个原因暂时为止，但应该很可能是权重导致的问题。

**增加权重的方法有很多，最简单的方法就是调整顺序**，比如将上面的 Chinese Style 放到最前面（然后生成的结果就是眯眯眼 style 了 🤣，我生成了两次，第二次好一些）：

```
product photography, Chinese Style,Joan of Arc, full body, hand painted, plastic, detailed, white background, studio lighting
```

调整下顺序，效果就大不一样，所以各位不要迷信所谓的 prompt 模板，多试试。

![MJ071.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/6E917EAA-BBFD-4635-AB8E-2D65E67F9FF3_2/Oy0pJCtpE5QtmqFlxePvrjeZmm5SZXvtqXhQag6J4EUz/MJ071.png)

**第二种方法是 Slider 方法。**

你需要在 prompt 最后加 ，然后加上你需要调整权重的词语，接着再加 ，最后加上权重值。比如还是上面的例子，我想突出 Chinese style 但不想调整顺序，就可以改为：

```
product photography,Joan of Arc, full body, hand painted, plastic, detailed, white background, studio lighting, Chinese Style :: Chinese Style :: 0.5
```

然后你会发现，好像权重太高了，生成了跟 prompt 无关的图（下方左图），那我们可以在原来的基础上，再加以下 Joan of Arc 的权重（下方右图）：

```
product photography,Joan of Arc, full body, hand painted, plastic, detailed, white background, studio lighting, Chinese Style :: Joan of Arc:: 0.25 style of Chinese:: 0.5
```

你可以看到，调整参数后，生成的 4 张图有 2 张具备较强的 Chinese 风格：

![MJ072.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/E9CE4D80-F8C7-4853-847D-C5D4554AFD41_2/sJD7ejS8e3Q3xV8O38UyS6Uh6ZtslrBh2XQv1bodhvwz/MJ072.png)

不过坦率说来，这个方法，并不特别适合这个案例，调整主体内容，或者顺序， ROI 会更高一些，这个方法更适合 miss 掉某个 prompt 词时使用，比如官方的案例是这样的：

```
several sad cats watch a crying woman in a home-office environment with laptop
```

生成的图片里（左四张图），猫咪们都看着你（你可能才是 crying woman 😂），如果用 slider 的功能（右边四张），crying woman 就出现在画面里了：

```
several sad cats watch a crying woman in a home-office environment with laptop:: several sad cats::0.5 crying woman::0.6 laptop::0.7
```

另外需要注意，slider 可用的参数有 0.25、0.5、0.6、0.7，也可以用这个方法降低权重，区间是 -0.7、-0.6、-0.5、-0.25：

![MJ073.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/D6451060-D2BE-47D3-A9BF-4921FC13029A_2/5Two9kXOOTkE1TETh2HI30leqOSxLrzd0mhE5ErcBpwz/MJ073.png)

如果你用了 slider 还是没有出现应该有的画面，**那还有一个大招 cowbell**，坦率说来，这个并不符合 Midjourney 的官方最佳实践，但的确是个可行的方法，以下面这个 prompt 为例，生成的图片里，woman 看起来并不 shy（左边四张图）：

```
A songbird sits on the shoulder of a shy blonde woman dressed in white.
```

此时你可以重复重复再重复（我觉得这就是为何这个方法叫 cowbell 的原因）：

```
A songbird sits on the shoulder shoulder shoulder shoulder shoulder shoulder of a shy shy shy shy shy shy shy blonde woman dressed in white.
```

![MJ074.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/41FD5011-5634-40CF-9F8F-2AF36AC425BA_2/eFAOEBOZslASMqPp8fmkIhNPBhsrWWAaod8ZzUQyHy0z/MJ074.png)


# 技巧十三：善用灯光

坦诚地跟大家说，我不是设计师，也不是摄影师（而且我非常不擅长摄影），所以我仅能跟大家分享一下基础内容，因为这个对我来说，太多过程性知识了，不实际操作过，根本不知道有什么。

言归正传，摄影中，常用摄影灯光有以下几种：

1. 主灯 (Key Light)：主灯是最基本的摄影灯光之一，通常放置在被拍摄物体的正前方或正侧方，用于照明主体，决定拍摄物体的主要明暗度。主灯通常是亮度最高的灯光。
2. 填光灯 (Fill Light)：填光灯用于弥补主灯照射的阴影部分，调整阴影的深浅程度，使照片明亮一些。通常填充光应该比主光暗一些，以避免出现过度曝光。
3. 逆光灯 (Back Light)：逆光灯用于照射被拍摄物体的背面，能够区别出主体和背景，并使物体轮廓变得清晰，常用于拍摄骨感、重物感和逆光效果的照片等。
4. 环境光 (Ambient Light)：环境光就是摄影环境自然产生的光线，包括室内照明、自然光、街灯等，它可以补充被拍摄物体的表面，提升照片的自然度和真实感。
5. 故事性灯光 (Special Light)：通常是为了制造出某种情境或者表达某种意义而使用的，例如烛光、亮光等。它们能够产生温暖、浪漫、神秘等场景和气氛，以探索和表达艺术的想象力和创造力。

基于这些灯进行排列组合，你会得到不同使用场景的灯光。灯光的细节种类，可以去我归纳的 Lighting List 里查看，我这里主要分享一些常用和易用的场景灯光：

| **照片**                                                                                         | **名称**                   | **介绍**                                                                                                                   | **适合场景**                                                                                                                                       |
| ---------------------------------------------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| ![MJ076](https://learningprompt.wiki/assets/images/MJ076-a6cc28ae019d1b2825b36418c7cbd822.png) | Mood Lighting            | 氛围灯。主要是通过在特定的环境中改变灯光的颜色和亮度等参数来创造一种特定的氛围，以营造舒适、浪漫、放松等感觉。从技术实现上看，Mood lighting则着重于灯光的颜色和亮度控制，注重创造强烈的视觉效果。                  | Mood lighting通常用于室内设计、酒店、餐厅及居家装饰等领域，旨在创造出一种特定的气氛和体验。                                                                                           |
| ![MJ077](https://learningprompt.wiki/assets/images/MJ077-bd259cc223c4941c9d75c84bb5e8d9b1.png) | Moody Lighting           | 情绪灯。它更强调在情感表达和为故事情节服务方面的应用，设计的目的是要把灯光与剧情完美结合起来，以展现角色的个性和情感世界。从技术实现上看，Moody lighting通常采用低亮度和大比例遮挡阴影，强调暗部的扫描，以增加画面的纹理和层次感。 | Moody lighting通常用于影视制作、游戏界面、舞台表演等领域，设计的目的是为了增加故事情节的戏剧效果。                                                                                       |
| ![MJ078](https://learningprompt.wiki/assets/images/MJ078-8e31d6be4a1578aff697f2ec3ab2593a.png) | Studio Lighting          | 工作室灯光。是一种专门用于摄影工作室、电视和电影等领域的照明设计。它将光源和灯具放置在一个专用的摄影工作室中，通过精细的照明来创造出各种不同的氛围和场景效果，以满足各种不同的拍摄需求。                             | Studio lighting 主要应用于商业摄影、时装摄影、艺术摄影、人像摄影、广告拍摄、电影和电视制作等领域，目的是通过精细的照明设计来突出主体的特点，达到最佳的拍摄效果。                                                       |
| ![MJ079](https://learningprompt.wiki/assets/images/MJ079-c5cd7b4b52c89759df96b89579d45342.png) | Cove Lighting            | 壁角灯。是一种常用的室内照明设计，其灯具通常安装在墙壁或吊顶壁橱之间的壁角（即“壁橱”)中，从而营造出舒适、柔和、光滑的环境照明效果。                                                      | 这种照明技术可以为房间提供均匀的光线，同时提高房间的美感和时尚度。                                                                                                              |
| ![MJ080](https://learningprompt.wiki/assets/images/MJ080-c7d99d17c17de5b9140b0354ba12a225.png) | Soft Lighting            | 柔和照明。是指通过使用柔和、漫射的光线来创造出柔和、温暖的氛围效果。柔和的光线通常是通过使用的漫射灯具来实现的，较为常见的是壁灯、台灯、阅读灯等。                                                | 柔和照明效果可以降低照度，减轻视觉疲劳，创造出舒适的氛围和感觉。                                                                                                               |
| ![MJ081](https://learningprompt.wiki/assets/images/MJ081-5424279cd1fe8b20403006ff83c63e24.png) | Hard Lighting            | 硬朗照明。是指通过使用聚光灯、筒灯等灯具来聚焦到一个特定的区域中，其光线是相对集中而直接的。                                                                           | 创造出刚硬、明亮的照明效果。硬朗照明常常用于展示场合，如美术馆、商场等环境，以突出展品或商品的特点和质感。                                                                                          |
| ![MJ082](https://learningprompt.wiki/assets/images/MJ082-79c7688b08e7eb09b085538021a5355c.png) | Volumetric Lighting      | 体积光。是一种创造逼真渲染效果的照明效果技术。它通过在某些场景中添加灯光和各种视觉效果，如扩散、雾、粒子、阴影等，在照明场景中模拟空气中的粒子和尘埃微粒的现象，从而创造出动态、逼真、增强立体感和体积感的照明效果。               | 适用于多种场景设计中，如电影、电视、视频游戏、动画等领域。它可以让场景更加逼真、立体，增加场景的紧张度和视觉层次感，并带来更具有表现力的视觉效果。                                                                      |
| ![MJ083](https://learningprompt.wiki/assets/images/MJ083-5ea6c4fe5eeb1a3645182a15fe1a5f8a.png) | Low-Key Lighting         | 低键照明。指的是一种特殊的照明效果，该效果通常通过强烈的侧光或背光和阴影来创造高对比度的画面效果。低键照明的特点是明暗分明、阴影浓重、暗调占主导地位，常常构建一种紧张、神秘或黑暗的氛围。                            | 低键照明广泛应用于电影、电视、摄影等领域中，常常用来表现悬疑、恐怖、犯罪等要素。                                                                                                       |
| ![MJ084](https://learningprompt.wiki/assets/images/MJ084-b1084b98250e32505db06f9d38d36e13.png) | High-Key Lighting        | 高键照明。这种照明效果通过使用明亮、均匀的光线来避免明暗对比并压低阴影的出现。这种照明效果特点是亮度高、细节丰富，适用于需要传递愉悦、轻松和开心氛围的场景和环境。                                        | 高键照明通常用于广告、情感电影、电视剧等中。                                                                                                                         |
| ![MJ085](https://learningprompt.wiki/assets/images/MJ085-38de890926428398d99b801257ec6147.png) | Epic Light               | 史诗光线。是一种创建极富戏剧性、威严感和视觉效果的照明技术，它可以在场景中添加非常亮烈、盛大、壮观的光线，以吸引观众注意力并增加场景的震撼力。                                                  | Epic Light通常用于影视制作、游戏开发、演出等领域中，以营造出一种崇高、壮丽、宏伟的氛围，可以使观众在看到这些效果时，感到非常震撼和难以忘怀。史诗光线的特点是亮度较高、颜色鲜艳，通常用于表现重要的剧情点，如武器的激光、宇宙战争中的太阳和星星、幻想电影和电子游戏中的神秘光芒等。 |
| ![MJ086](https://learningprompt.wiki/assets/images/MJ086-1fcdd9f70c00c19bfb3cc6bc2320877f.png) | Rembrandt Lighting       | 伦勃朗特效是一种起源于荷兰画家伦勃朗的照明效果，其主要特点是在人物脸部形成一个菱形的明暗分界线，嘴巴和下巴的一侧用阴影覆盖，人物的另一侧则被亮光照亮。                                              | 能营造出一种柔和而神秘的效果。                                                                                                                                |
| ![MJ087](https://learningprompt.wiki/assets/images/MJ087-3321a82162c9808c6c05b9404632920d.png) | Contre-Jour              | 逆光照明。指的是摄影师将光源放置在被摄物体的背后，令照射效果在镜头前面产生，形成被摄体轮廓明显的负片形态。                                                                    | 于光源位置造成的暗摄影整体的虚化，高对比度和鲜明的轮廓线可以带来文艺和抽象的氛围。                                                                                                      |
| ![MJ088](https://learningprompt.wiki/assets/images/MJ088-ec009fd4730c352b211c72c02b62d7f7.png) | Veiling Flare            | 透镜毛玻璃。指当光线从透镜或镜头穿过时，透过玻璃或镜头的反光或散射使得图像出现散射光线或最终成像看起来失真的现象。                                                                |                                                                                                                                                |
| ![MJ089](https://learningprompt.wiki/assets/images/MJ089-df66261d68c2192754866268cdae9cad.png) | Crepuscular Rays         | 黎明、黄昏光线。也称为太阳光柱，是由日光在云层或尘埃中被反射形成的光线束。因为只有在日出和日落时才有足够的光线穿过云层或照射到恰当的夹角，所以Crepuscular Rays通常只出现在日出和日落时刻。                    | Crepuscular Rays通常会在云层上形成明显的束状光线，给人以美丽的感觉。                                                                                                     |
| ![MJ090](https://learningprompt.wiki/assets/images/MJ090-5ad98fae2d6c05dbcf43e3fde618870b.png) | Rays of Shimmering Light | 闪烁光线。是指在光线散射和折射时出现的光线折射现象。在某些特定的环境下，光线经过不同密度和温度不同的气氛，会出现一种光线折射、散射的效果，从而形成闪烁光束效果。                                         |                                                                                                                                                |
| ![MJ091](https://learningprompt.wiki/assets/images/MJ091-e4437fc58a0be877eeeeac7f16f8d281.png) | Godrays                  | 神光。是一种由光线穿过云朵、树枝或其他障碍物时，形成的亮光条纹效果。Godrays通常在光线较强的时分出现，将光线分割成条纹状，形成一种梦幻般的效果，也被称为 "crepuscular rays" 的一种。                  |                                                                                                                                                |


# 技巧十四：增加风格——年份

上面的老照片场景，我们用了 1990s 风格，严格地说，这个 1990s 更适合放在主体，或者环境里，放在风格里也不是不行，因为不仅仅希望主体是 1990s 还希望图片生成的风格也是 1990s。

这就是最后一种风格词用法：年代。

拿插画那一章的两个 prompt 修改一下，我都没在 prompt 里加艺术家的名字，而是改为 style of 1920s，玫瑰的图有点那味，猫的图右上角那张太逗了。

![MJ096.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/86D4276A-5254-4DC7-BC55-74559AFFF785_2/xwHZmIA6Z6NzghaKitsq6NbM2lo9EpgmeUAh46FLqSUz/MJ096.png)

<br>


# 技巧十五：如何让 Midjourney 生成的人更具有多样性？

这里的多样性其实是指人的高矮胖瘦，甚至身体的一些特殊性等。

不知道各位有没有发现，大多数用 AI 生成的图片，人物都非常漂亮和英俊，但这并不好，这其实某种程度上代表了社会的偏见。

所以我想在本章重点介绍下，如何让 Midjourney 生成更多样的人体。

**方法一：Slider 方法**

在上一章，我介绍了增加权重的方法，这个方法还可以帮助你生成不同体型的人物，以下是 Midjourney 官方社区的案例：

```
Plus-sized ginger female dressed in bohemian vest, maxi skirt, espadrilles, walking across autumn campus courtyard, morning atmosphere:: plus-sized::-0.3 --ar 2:3
```

你可以控制 plus-sized 后面的参数，从而使画面中的人物变胖或者变瘦。这里需要注意，并不是负数就是越瘦的意思，而是削弱了 plus-sized 权重，如果你的 prompt 词是 thin 你加个负数 slider 参数那就是变胖了：

![MJ119.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/FD1613E3-BD48-4D41-91C8-A0EA057B6883_2/exEgBwvmyRPyzadeRHy7BBJN7uLVk71FBNXHC0trXR4z/MJ119.png)

**方法二：直接描述**

Midjourney 是知道一些多样性的词语的，比如：

* blind：失明
* deaf：聋
* cerebral palsy：小儿麻痹
* accessibility：行动不便

![MJ120.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/9770FDB6-F9D3-40EC-AB4B-2D6CA7AC58CD_2/lQyNTkK4OxqTtO9HwtyH5yu7qP7qu7DfTyRsxPsaF4Qz/MJ120.png)


# 技巧十六：改变相机与镜头

前几章节分享了灯光，本章分享下，相机和镜头。

可能有些朋友用过一些手机 App ，它并不像 PS 工具那样，允许你修改图片的白平衡等参数，而是让你体验用旧相机（如胶卷相机）拍照，虽然本质上来说，它也是通过各种参数来模拟当年的相机效果，但的确挺有意思的。

在 Midjourney 里，你也可以通过增加相机或者镜头的名称，从而达到类似的效果。根据我的实验，Midjourney 可以改变以下几类：

1. 相机：支持不同种类的相机，比如运动相机 GoPro
2. 胶卷：比如 8 mm 电影胶卷
3. 镜头：比如 15 mm 镜头
4. 相机设置：比如长曝光、双重曝光
5. 景深 & 焦点：比如深景、浅景，还有消失点

我很喜欢双重曝光的效果，以及长曝光：

![MJ102.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/CD2D42A5-D707-43D1-9D24-248CED2CC709_2/RLyz77QLtc9ctokKwDFr4Cul1TF4QVVRBQu5mlY3mtcz/MJ102.png)

不过各位使用时，需要根据自己的场景选择合适的相机和镜头，比如无人机视角，都不太适合拍近物：

<table data-header-hidden><thead><tr><th></th><th></th><th width="169"></th><th></th></tr></thead><tbody><tr><td><strong>照片</strong></td><td><strong>名称</strong></td><td><strong>介绍</strong></td><td><strong>适合场景</strong></td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ100-220123a22489daf4a319dd763d76e0e8.png" alt="MJ100"></td><td>GoPro</td><td>运动相机视角</td><td>自拍，或者运动场景</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ101-d930bedcbc9c8b30e871837c6f381607.jpeg" alt="MJ101"></td><td>Drone</td><td>无人机视角</td><td>适合航拍，或者天空景色</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ124-02eef6084f33668076536b060e9b57bf.png" alt="MJ124"></td><td>polaroid</td><td>宝丽来</td><td>应该不需要解释了吧</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ122-934a46b7a1d4d6c7db1e38144458c674.png" alt="MJ122"></td><td>black and white film</td><td>黑白照</td><td>应该不需要解释了吧</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ123-274f23ac6777b8f9c4df5512406c76ad.png" alt="MJ123"></td><td>Kodachrome</td><td>柯达生产的彩色幻灯片底片品牌</td><td>具有非常高的颜色鲜艳度、对比度和持久性。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ097-f72841d31c8fc7aec08aff71c7565bc4.png" alt="MJ097"></td><td>shot on 8mm</td><td>电影 8 毫米胶卷是一种便携式、简单易用的胶片，分辨率比较低</td><td>适用于拍摄家庭和旅游等普通场景</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ098-85af40a6e0284277c00892221d17c9aa.png" alt="MJ098"></td><td>shot on 16mm</td><td>电影 16 毫米胶卷</td><td>16毫米和35毫米主要用于制作电影、纪录片和商业广告。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ099-99e65bf64e210485098cd47049efe3cc.png" alt="MJ099"></td><td>shot on 35mm</td><td>电影 35 毫米胶卷</td><td>16毫米和35毫米主要用于制作电影、纪录片和商业广告。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ105-6c93078c43e91803f08180d1dabeeaa4.png" alt="MJ105"></td><td>Microscopic</td><td>显微镜</td><td>适合一些需要放大观察的实物</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ106-8f3a45509d1b1700f470fcc1b662571c.png" alt="MJ106"></td><td>Fisheye Lens</td><td>鱼眼镜头</td><td>鱼眼镜头可以将整个场景拍摄在一个范围内，这种镜头的视角通常在 100° 至 180° 之间，可以呈现出非常夸张的透视效果。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ103-b6a132ccc15f1b1fbcc1e851490a60d0.png" alt="MJ103"></td><td>Wide Angle</td><td>广角镜头</td><td>适合风景照，可以让画面容纳更多内容</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ104-83e51e8d1636a4e1d9ba99a57dfeb11c.jpeg" alt="MJ104"></td><td>Ultra-Wide Angle</td><td>超广镜头</td><td>适合风景照，可以让画面容纳更多内容</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ107-5ccb70352707639379fd0337a527cc58.png" alt="MJ107"></td><td>Panorama</td><td>全景</td><td>适合风景照，可以让画面容纳更多内容</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ109-a0a11a7d0b8fc7ac8e731e76eca4b5b7.png" alt="MJ109"></td><td>Short Exposure</td><td>短曝光</td><td>通常用于追拍运动员、表演者或动物等，或者是拍摄需要快速决定瞬间捕捉的场景，例如拍摄火车、汽车、快速移动的车辆等。由于短曝光时间的限制，这种方式可以冻结运动物体并防止出现模糊的情况。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ108-aa4d648bf161faf175f65fab8801015e.png" alt="MJ108"></td><td>Long Exposure</td><td>长曝光</td><td>在长曝光的拍摄中，快速移动的物体会出现轨迹，例如流星、车灯、瀑布等，这种方式会给照片创造出愉悦而神秘的氛围。此外，长曝光可以用于拍摄夜晚的大片景象，例如景色、城市夜景、星空等。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ110-68fe989c4f13eed3fde54eb70156f9ce.png" alt="MJ110"></td><td>Double Exposure</td><td>双重曝光</td><td>双重曝光的技术，可以创造出疏密有致和扭曲的、手绘和黑白艺术风格的照片。这种技术在拍摄人像、风景和建筑等领域十分受欢迎，因为它可以创造出独特的环境、浪漫和奇异感觉的图像。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ118-bb6a4ad5019e44e4114970b0f70f5901.png" alt="MJ118"></td><td>f2.8</td><td>2.8 光圈</td><td>在拍摄时，光圈值越大，相应的光线进入相机的量就越大，使得相机所获得的图像更亮。f:2.8 的值是一个比较大的光圈值，因此镜头具有很高的传光能力，适合在低光环境中使用。同时，在大光圈下可以创造出较小的景深效果，突出焦点主题而模糊背景或前景，从而产生轻柔的背景效果，适合拍摄人物肖像或商品照片等类似主题。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ117-92b46cd7dd8ea44b22c5c44dedff8b9f.png" alt="MJ117"></td><td>Depth of Field</td><td>景深</td><td>是指在摄影中，被拍摄的画面中被认为是清晰的范围，也称为焦距深度区域，通常用来描述在照片中被认为是清晰的范围。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ113-c4123e70aa0b1ef4dbf33a2388c9865e.png" alt="MJ113"></td><td>Soft Focus</td><td>柔焦</td><td>指将相机镜头前加入一层特殊的滤镜，使被拍摄的主体轻微模糊以呈现柔和的美感效果。柔焦的视觉效果相较于深景和浅景来说更强调画面的情感主题，把重点集中在逐渐化解结构感的质感效果上，使它在照片上产生一种有点朦胧的妆容，刻画出一幅浪漫的画面。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ116-f9bebb277e8391a5a9ae6d650b71cd61.png" alt="MJ116"></td><td>Deep Focus</td><td>深焦</td><td>将摄像头在一个较大的光圈下设置，保持整个画面都清晰锐利的技术。深景通常需要使用较小的焦距或较远的拍摄距离，以保持整个画面的清晰度，是类似于大景深的一种刻画效果。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ114-fe0d5749495d3c47a8824ba95b4361a8.png" alt="MJ114"></td><td>Shallow Focus</td><td>浅焦</td><td>将相机的光圈调整到一个相对较大的开口，以使摄影师可以根据需要保持相机在平面上的一个特定区域或主体清晰，而照片中的其他区域则变得模糊不清的技术。这种效果常用于摄影肖像，使人物在画面上的清晰度突出，并且画面背景透露轻微的模糊感，带来更具艺术美感的效果。</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ111-b6b1bc3aa087841998e51335b4368df6.png" alt="MJ111"></td><td>Vanishing Point</td><td>消失点</td><td>消失点指的是位于无穷远处，用于视觉处理的一点。在透视绘画中，我们可以想象一个位于无穷远处的点，使得所有线条都向它聚拢。消失点可以帮助画家或摄影师达到精致的透视处理效果，从而创造出独特的空间感；</td></tr><tr><td><img src="https://learningprompt.wiki/assets/images/MJ112-9e66f794b9386efe4b6504fc2fba5e7d.png" alt="MJ112"></td><td>Vantage Point</td><td>俯瞰视角</td><td>一般呈现的效果是照片中会有一个点是最高点，然后在此最高点斜上方拍摄</td></tr></tbody></table>


# 技巧十七：看到别人的图，想知道它的 prompt 是啥

最简单的方法，当然就是直接问。

如果问不到，倒是可以借助一些工具，Midjourney 支持图片转 prompt 功能。方法很简单。第一步在输入框输入 /describe：

![MJ092.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/1F561044-20D9-4FEB-BC08-B59BBFB872E1_2/Pu4U2CcTsM6jbPy40CPQxi6Cqm92cP9yvPqUDgJYtY4z/MJ092.png)

点击 describe 后，会弹出一个添加文件的入口，上传文件，并点击回车。

![MJ093.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/0B2596AD-17E5-41D3-B34A-697FAF8DEEBD_2/vYKAgEFUwNbRALujXI1KsSUVVUJIFZUv6qxa6CRRC9kz/MJ093.png)

Midjourney 就会返回结果，点击图片下方的 1、2、3、4 按钮，可以直接发 prompt 给 bot，让其生成图片，右边是分别用 #1 和 #4 prompt 生成的图片，我觉得用它来探寻原图的构图、主体、风格应该都不错，但不要预期能生成一个完全一样的图：

![MJ163.png](https://res.craft.do/user/full/d845172f-becd-4255-bf79-d722098b2d83/doc/15EA26B6-9B49-4076-B8D8-DFE53ABD52C8/2FCC53CF-07B7-4251-B948-CCF8B63A0084_2/ROSf6SUiO3bhytuRc3Aeb8HcxYMqavypEXz9WMjIz5gz/MJ163.png)




---

[Next Page](/llms-full.txt/1)

