人工智能的快速工程:什么是快速工程以及如何从人工智能引擎中获得良好的结果
人工智能已全面接管!放眼望去,几乎我们生活的方方面面都涌现出各种新的人工智能工具。借助ChatGPT、AutoGPT、Midjourney、Dall-E和GitHub Copilot,你可以构建、编写代码、获取答案,甚至创作精美的艺术作品……或者至少我们中的一些人可以做到。
为什么在使用生成式人工智能时,有些人能取得比其他人更好的结果?为什么有些人能创作出足以收藏卢浮宫的艺术作品,而其他人却只能得到几乎一无所获的成果?
一切都取决于你使用的输入。这种输入被称为“提示”。提示是你提出的问题,或者你用来创造某种事物的词语。那些“精心设计”提示或对输入进行策略性处理的人称之为“提示工程”。
什么是即时工程?
提示工程是指专门设计提示,以便您从 AI 获得更好的结果。
OpenAI、谷歌等许多人工智能系统的开发者甚至在招聘“提示工程师”来帮助训练他们的模型。一些“创作者”甚至在 Etsy 等平台上出售他们的 Midjourney 提示。
简而言之,人工智能系统就像数据:输入垃圾,输出垃圾。如果输入不好,很可能得到不好的结果。快速工程很大程度上受环境影响。
人工智能的背景
上下文是我们获得结果时最大的问题之一。例如,如果我在谷歌上搜索“甜甜圈”(或“doughnut”🍩),我可能会得到各种各样的结果:从甜甜圈食谱到甜甜圈图片,或者在哪里可以买到这种美味的甜点。这是因为我没有给搜索引擎提供任何其他上下文。当然,谷歌会使用我之前的搜索历史和我的位置等信息来帮助确定结果,但仅此而已。
对于搜索引擎来说,“甜甜圈”这个词可能意味着任何东西,从形状到 Slack 插件、应用程序,或者在 GitHub Universe 2022 上提供的这些美味的 GitHub 甜甜圈
例如,如果我想找一个关于在 Blender 中创建甜甜圈 3D 模型的教程,那么如果我只输入“甜甜圈”,搜索结果可能就不会显示。我需要输入更具体的关键词。像“甜甜圈 Blender3D 教程”这样的关键词会给我更准确的搜索结果。
这对于人工智能来说也是一样的。你需要为人工智能提供足够的上下文,这样才能获得更好的结果。
聊天应用程序的快速工程
很多人向我们展示了 ChatGPT 带来的一些惊人成果。虽然这些成果并不总是准确的,但 ChatGPT 确实擅长一件事:散文。它写出结构良好、行文流畅的优秀句子的能力令人惊叹。结果易于阅读,听起来也很棒。但获得准确的答案则完全是另一回事。例如,人们已经厌倦了用 ChatGPT 写历史论文,虽然论文读起来可能很好,但可能不符合史实。例如,如果你要求 ChatGPT“写一篇关于中国沦陷的 2000 字论文”,它会为你写一篇关于中国沦陷的 2000 字论文。但这篇论文不一定符合史实。
有些内容读起来可能不错,但实际上可能并不正确。提示:我没有博士学位😉
这是因为 ChatGPT 会从各种来源获取信息并将它们混合在一起。这些来源本身可能并不准确。ChatGPT 也不知道你指的是中国哪一年的覆灭。因此,它很容易错误地交叉引用日期。如果你以对话的方式向 ChatGPT 输入信息,然后让它写一篇 2000 字的文章,你会获得更好的结果。
我到底想表达什么?有些人认为 ChatGPT 是一种单向、对话式、单一输入的信息获取方式。但事实并非如此。它被称为“聊天”是有原因的。进行对话,完善你的问题,并为你的回答提供背景信息。
例如,如果我想写一段关于“NDC 会议”的旅行报告,我的 ChatGPT 不会以“为我写一段 NDC 的旅行报告”开头。相反,我会先弄清楚 ChatGPT 对 NDC 的了解程度,并在过程中提供背景信息。你提供的输入很大程度上决定了输出。这就是为什么有些人能够获得非常好的结果,而有些人却不能。
再举个例子:如果你要去参加面试,想获得一些建议,可以向 ChatGPT 询问“给我一些面试准备技巧”,这样虽然能得到一些不错的回复,但回复内容远不够具体。相反,像“我要去一家人工智能初创公司面试软件开发员职位。你能给我一些面试准备技巧吗?”这样的问题,会给你带来更加个性化、更有针对性的结果。这就好比你请一位台上的专家给1000位观众一个答案,他们可能会给出一些通用的答案,让每个人都能从中得到一些有用的信息。但如果你一对一地询问同一个人,他们可能会问你一些后续问题,以了解你的情况,从而给出更个性化、更具体的答案。
为艺术应用提供快速工程
你可能见过一些人用稳定的扩散应用创作的精美艺术作品。但也有一些作品看起来“不对劲”。这很大程度上取决于环境。比如,如果我使用Night Café(我最喜欢的生成器之一),输入“dog”(狗)这个词,就会得到这样的结果:
有个随机的“狗”字写成的标志,前景里有一只长相怪异的狗,而且颜色怪异。如果我想象一张阳光明媚的日子里,公园里一只成年德国牧羊犬的照片,那我可能拍不出这样的照片。AI 不具备这种背景知识。它还不能读懂我的想法(至少目前是这样!)。当你想要创作艺术作品时,你需要像在脑海中描绘图像一样描述它们。你提供的细节越多,输出效果就越好。这正是棘手之处。许多稳定的扩散应用程序都有字符数限制。因此,你需要在创作提示时,既有意义又有策略性。
与 ChatGPT 类似,你需要不断重新设计并完善你的提示。然而,基于聊天的人工智能的优势在于,你可以持续对话,并不断向人工智能提供更多信息和不同的问题,以获得良好的回应。虽然有些艺术生成器允许你“重新混合”你的输出,但它仍然依赖于新的提示。因此,你需要不断等待输出,查看哪些部分不合理,然后发送一个经过调整的新提示。有些用户在 Midjourney 上花费数小时,接收输出并重新设计他们的提示,最终创作出一些令人惊叹的作品。这完全取决于实践。这就是为什么有些创作者在 Etsy 上出售他们的提示!
我的朋友 Jean 使用 Midjourney 创作的艺术作品
有一点是肯定的:如果你想创作一些高质量的艺术作品,别指望花几秒钟写个提示,点击“创作”按钮,就能看到一幅莫奈的画。不行!你需要投入时间(和金钱)创作数百幅作品,每次修改提示,才能最终创作出你的杰作。
代码快速工程
我不会花大量时间来讨论如何为GitHub Copilot 之类的工具设计好的提示符。我的同事Rizel写了一篇很棒的博客文章,深入探讨了 GitHub Copilot 的提示符工程:


使用 GitHub Copilot 进行快速工程的初学者指南
Rizèl Scarlett 于 GitHub 发表 ・ 2023 年 4 月 3 日
我想说的是,与 ChatGPT 类似,GitHub Copilot 也依赖于上下文。代码库中还有哪些其他代码?文件的扩展名(以及相应的语言)是什么?GitHub Copilot 还为您生成了哪些代码?您在代码中添加了哪些注释?所有这些都有助于 GitHub Copilot 为您合成更准确的代码。
不妨这样想:如果你写了一条注释,说明你想创建一个使用后端数据并解决特定问题的复杂函数,那么仅凭一条注释很可能无法获得良好的反馈。就像你的代码(至少应该如此)被分解成许多函数,并(希望)附有大量有用的注释一样,GitHub Copilot 也同样在分解后效果更佳。
而不是要求 GitHub Copilot:(//reverse a sentence
使用 JavaScript)
思考如何从逻辑上分解问题。例如,如果我拿到一张纸,上面写着一句话,并被告知要反转它,我会怎么做?像这样写注释会更有用。如果你这样做,GitHub Copilot 就能提供更丰富的上下文,更好地理解你的需求。
GitHub Copilot 与 ChatGPT 之类的工具相比,另一个不同之处在于它会考虑你拥有的所有上下文。我上面提到的所有方面:
- 文件扩展名是什么
- 项目中还有哪些其他文件
- 您如何撰写其他评论
- 其他代码是如何构建的
- 您正在输入的评论是什么
- 您输入的代码是什么
ChatGPT 和其他聊天应用会更加重视你在聊天中发表的最后一条评论,也就是你添加到对话中的最后一条信息。然而,GitHub Copilot 始终会考虑上下文,以生成更好的代码结果。
更好的快速工程
说到底,任何生成式人工智能能否取得好结果都取决于你——提供输入的人。正如我在开篇所说:输入垃圾,输出垃圾。因此,在设计你的提示时,请考虑以下重要提示:
- 提供良好的背景信息;提供关于你想要实现的目标的示例和信息
- 要具体;如果是针对特定受众,就说
- 分解问题
- 提问时要清晰。如果反馈的内容听起来不对劲,请澄清
- 重新表述并完善你的提示
最后,务必验证你从AI收到的信息。对于艺术品生成器来说,这一点不太重要,但对于代码和信息来说,这一点很重要。检查你收到的代码是否按预期运行。验证提供给你的书面信息的准确性。
记住,无论发生什么,你仍然是飞行员。你仍然掌控一切,你对哪些艺术作品、哪些代码片段以及你使用和分享哪些信息拥有最终决定权。
文章来源:https://dev.to/github/prompt-engineering-for-ai-what-is-prompt-engineering-and-how-to-get-good-results-from-ai-engines-5ch6