提示工程的艺术:AI如何帮我完成作业
译者 | 崔皓
审校 | 重楼
摘要
这篇文章探讨了如何有效地使用人工智能(AI)来完成作业,特别是通过提示工程。作者是一名即将开始商业咨询工作的学生,他已经使用AI助手来补充他的作业问题集。他发现AI在生成代码或与特定软件交互时特别有用。文章强调了提示工程的重要性,这是一种考虑如何提示AI以提高其准确性和与预期行动一致性的技能。作者通过具体的作业问题展示了良好的提示工程,包括对话式提示和奉承的使用。他认为,不是AI将取代工人,而是使用AI的工人将取代不使用AI的工人。
开篇
在我所参与的大多数AI论坛中,都会提到一个常见的问题,就是人工智能是否取代人类。反对这种观点的人通常会说过去的创新(如工业革命和计算机的发明)并没有取代工人,而且这种创新往往使人们完成更多工作。我倾向于这种观点。
微软的CEO Satya Nadella表示,新技术将创造“工作的满足感和新机会”。显然,Nadella在这方面的说法是有偏见的;然而,AGI不会很快就占领经济、政治、司法系统等,这个观点仍然有其价值。AI可能不会抢走你的工作,但是懂得如何使用AI的人可能会。
作为一名学生我即将开始在商业咨询领域的首份工作,我需要学会有效地使用AI来帮助我在完成工作任务时保持生产力和竞争力。实际上,我已经开始使用AI助手来补充我的作业问题集了。
我发现它在生成代码或与特定软件交互时特别有用。坦率地说,我对它所了解的软件范围感到惊讶,从VCV Rack 2(一个模块化合成器程序)到Choregraphe(一个用于编程NAO机器人的低代码接口)。
YouChat帮助我在VCV Rack中设计了这个合成器模式。
如何学习提示工程
在使用AI助手完成问题集时,我了解到,与AI进行高效交互的核心是提示工程。提示工程作为一种新颖的技能,它涉及到如何智能地考虑如何提示AI,从而提升AI的准确性以及与你的预期结果的一致性。我在这篇文章中不会深入讨论如何进行提示工程(有很多其他的文章讨论了这个主题;参见Prompt-Engineering-Guide);然而,我希望通过详细讲解我最近遇到的一个具体问题,来强调良好提示工程的重要性。
AGI研究和安全初创公司Anthropic最近发布了一个LLM提示工程师的职位,薪资范围为175k - 335k美元。
免责声明:在你使用任何AI工具来帮助你完成作业之前,请确保你的教学大纲中没有禁止这样做,并在需要的时候引用你的使用。我没有使用YouChat来完成这个任务;这是在提交后的分享。
对话式提示工程
对于每个作业问题,我将通过对话与AI模型进行交互。有趣的是,对话是与AI交互的最强大的方式之一,因为它允许你嵌入AI的行为、意图和身份。
对话式提示有两个关键组成部分:描述和对话。我将从描述开始,因为它设置了很多上下文。一个基本的描述文本包括意图,定义聊天机器人,以及机器人的身份,它还规定了聊天机器人将以何种方式回复。这在下面例子的前两句中得到了体现。
// 示例描述文本 意图:以下是与一个AI研究助手的对话。 身份:助手的语气是技术性和科学性的。 |
我发现根据我对主题的熟悉程度调整描述是很有用的。例如,如果我对黑洞一无所知,我可以将第二句话,即身份,调整为更适合初学者的内容,比如:
身份:助手的回答应该易于理解,即使是一个孩子也能理解。 |
最后,我开始处理对话。这是我提出实际问题的地方。然而,注意到我可以通过扮演AI或人类的角色在这里嵌入更多的信息。在下面的例子中,我添加了更多关于人类的上下文,并从机器人那里请求了一个特定的行动(添加引用)。
//这个例子是从promptingguide.ai中采用的 描述: 以下是与一个AI研究助手的对话。助手的语气是技术性和科学性的。 对话: 人类:你好,你是谁? AI:你好!我是一个AI研究助手。今天我能帮助你什么? 人类:你能告诉我关于黑洞的创造吗?你能引用我可以阅读的具体来源吗?我现在什么都不知道。 AI: |
现在我们已经打好基础了,接下来将用这学期计算机科学课程的作业来验证它的可行性。
作业:问题1
将电话中使用的声音频率(300-3400 Hz)通过对语音音频信号的FFT应用带通滤波器来模拟。将滤波器的频率响应设置为在此范围内的频率为1,其他地方为0。在编程语言中实现这一点,并在时间和频率域中比较原始和过滤后的信号。 |
提示
对于这个问题,我使用了一个对话提示来设置YouChat,一个由You.com提供的对话式聊天机器人,执行的上下文和特定任务。通过赋予它一个文章写作AI的角色,我让它既能告诉我问题所询问的主题,也能使用库来生成代码。
以下是与一个AI计算机科学研究生的对话。学生的语气是技术性和信息性的。 人类:你好,你是谁? AI:你好!我是一个AI计算机科学研究生。今天我能帮助你什么? 人类:你能帮我创建一篇关于如何使用numpy.fft.irfft和numpy.fft.rfftfreq创建带通滤波器的文章吗?文章能否将滤波器应用到一个名为"signal.mp3"的信号上,该信号在同一文件夹中,并使用ipython的Audio库来听输出信号? AI:当然可以!还有其他事情吗? 人类:是的,你能创建一篇markdown格式的文章,包括如填充介绍、正文和结论的写作,以及包括代码片段和资源,以便告知读者关于这个问题的主题,并指导他们如何在代码中实现吗? AI: |
我想强调这个提示的几个重要方面。首先,我如何描述AI系统将决定输出的语言和复杂程度。这一点很重要,因为不同的身份更适合不同的任务。如果我在问一个人文问题,我会给AI分配一个哲学家或大学教授的角色。如果我在问一个我不熟悉的主题并希望了解,我会给AI分配一个中学教师或中学生的角色。
其次,AI的描述是现实的,是YouChat可以复制的,考虑到它的资源和知识。Cleo Nardo在“The Waluigi Effect”中最好地解释了AI如何解释一个不太现实的问题,遇到这类问题时更聪明的AI倾向于将其描述为虚构的东西,从而使它产生更可能生成错误答案的倾向。
【编者:AI(特别是大型语言模型)在处理不太现实的问题时,可能会倾向于将问题视为虚构的,这就是所谓的“瓦路易吉效应”。然而,这种处理方式可能会导致AI生成错误的答案,这是它过于依赖其训练数据中的模式,而忽视了现实世界复杂性的结果。说白了,就是越聪明的AI在描述现实中不存在的事物时,越容易编瞎话。】
GPT-4知道,如果[AI系统]被描述为"9000 IQ",那么这段文本不太可能是由一个诚实的叙述者写的。相反,叙述者可能在写小说,正如文学评论家Eliezer Yudkowsky所注意到的,被描述为聪明的虚构角色经常会犯非常愚蠢的错误。
最后,我设计了AI的任务/行为以更好地与我作为学生的需求相符。我想要回答问题所需的代码和算法的描述,如何解决问题,以及进一步调查的资源。再次,我在设置或描述文本的上下文中说明了这一点,以改变输出的内容。
输出(以下是YouChat的回应)
当然,我可以帮你做到这一点!这是一篇用markdown写的文章,解释了如何使用numpy.fft.irfft和numpy.fft.rfftfreq方法创建带通滤波器,以及如何使用IPython的Audio库将滤波器应用到音频信号上。我还包括了一些链接到相关的维基百科页面和其他资源,以帮助读者更好地理解这个主题。 |
<输出开始>
使用Numpy创建带通滤波器
介绍
带通滤波器是一种电子滤波器,它允许两个频率之间的信号通过,同时衰减这个范围之外的频率。在这篇文章中,我们将演示如何使用Python中的numpy.fft.irfft和numpy.fft.rfftfreq方法创建带通滤波器。
需求
要创建带通滤波器,我们需要以下内容:
Python(我们将使用Python 3)
NumPy库
IPython的Audio库
如果你没有安装这些库,你可以使用pip来安装它们。你可以通过运行pip install numpy来安装NumPy,使用命令!pip install ipython-soundfile来安装Audio库。
解释
这是创建带通滤波器并将其应用到名为"signal.mp3"的音频文件的代码,该文件保存在与脚本相同的目录中。
import numpy as np import soundfile as sf from IPython.display import Audio # 读取音频文件 signal, Fs = sf.read('signal.mp3') # 获取频率范围 freq = np.fft.rfftfreq(signal.size, 1/Fs) # 创建滤波器掩码 mask = (freq > 300) & (freq < 3400) # 应用滤波器 filtered_signal = np.fft.irfft(np.fft.rfft(signal) * mask) # 播放输出信号 Audio(filtered_signal, rate=Fs) |
在这段代码中,我们首先使用soundfile库读取音频文件。然后,我们使用np.fft.rfftfreq方法生成信号的频率范围。
然后,我们使用所需的频率范围创建滤波器掩码,这是一个numpy数组,它返回频率范围的True/False值。然后,我们使用元素乘法将这个掩码应用到傅里叶变换的信号上。
最后,我们使用numpy.fft.irfft方法执行反向傅里叶变换,以从频率域返回。
<输出结束>
作业:问题2
让我们再试一个问题。这次我试图完成一个非技术性的,更定性的问题,这是我健康和福祉课程的问题。
首先阅读鲁米的诗歌《客栈》,然后回答以下问题。 1. 你如何定义感恩?它的本质是什么?它在人的生活中有什么影响? 2. 鲁米的诗歌是如何强化在痛苦中感恩的思想的? |
提示
对于提示,我仍然使用对话式提示格式;然而,注意意图和身份的区别。这个AI更专注于冥想和正念,它的回应具有更哲学的性质。
AI是一名在美国大学学习心理学的学生,回答有关冥想、正念和健康的问题。AI的语气是深思熟虑和哲学的。 人类:首先阅读Rumi的诗《客栈》,然后回答以下问题。 1. 你如何定义感恩?它的基本特征是什么,它在人的生活中有什么影响? 2. Rumi的诗如何强化从苦难中唤起的感恩的观念? AI: |
<输出开始>
这是Rumi的诗《客栈》:
这个人类的存在就像一个客栈。 每天早晨都有新的到来。 一种喜悦,一种沮丧,一种卑鄙, 某种瞬间的意识来了 作为一个意想不到的访客。 欢迎并招待他们所有人! 即使他们是一群悲伤, 他们猛烈地扫空你的房子 空出它的家具, 仍然,尊重每一个客人。 他可能正在清理你 为了一些新的快乐。 黑暗的思想,羞耻,恶意, 在门口笑着迎接他们, 并邀请他们进来。 对于谁来都要感恩, 因为每一个都被送来 作为一个来自彼岸的向导。 |
- 感恩可以被定义为对自己所拥有的,即使在困难或挑战面前,也感到感谢和欣赏的状态。它的基本特征包括认识到自己生活和环境的积极方面,培养一种观点,并承认他人对自己幸福的贡献。感恩在人的生活中的影响可以包括增强的韧性,改善与他人的关系,以及更大的幸福和快乐感。
- Rumi的诗强化了从苦难中唤起的感恩的观念,因为它认识到困难的经历可以作为指导和教师。通过欢迎所有的经历,即使是那些具有挑战性或痛苦的经历,人们可以从中学习和成长。因此,这首诗暗示即使是苦难也可以成为感恩和智慧的源泉,帮助我们更加欣赏生活的快乐。
<输出结束>
我首先要注意这个问题中描述的重要性。如果我不提供AI机器人的意图和身份,它就不会有相同的能力,也不会以我希望的方式回应,如下面所示。这就好像提示已经解锁了YouChat以一种复杂的方式阅读和解释诗歌的能力。
如果我将描述修改得更加天真,我们可以看到它限制了其阅读和解释诗歌的能力。语言和答案也似乎更简单,更适合经验较少的观众。当我试图学习新概念时,这种类型的描述对修改特别有用。我也喜欢YouChat能够生成网页链接,帮助不了解的用户对主题进行更多的研究。这很重要,因为每当我阅读关于新主题的内容时,我都想对AI进行事实检查,以确保它不会生成错误的内容。
结论
正如你所看到的,我能够通过AI生成响应,该响应还包括了正确的代码从而来完成我的作业,响应中还包括了编写语法/格式,解释代码,以及提供源/进一步阅读。我还能让YouChat以复杂的方式阅读和解释诗歌,这要归功于对话式提示工程。虽然YouChat在两种情况下都做了大部分的工作,但我需要告诉它必须使用哪些库,以及对滤波器有足够多的了解,才能理解我的提示,这证明了不是AI将取代工人,而是使用AI的工人将取代不使用AI的工人。
我不仅完成了我的作业,而且提供的信息和链接也帮助了我的学习,这是我使用聊天搜索引擎而不是传统的生成性聊天AI的主要原因之一。YouChat的另一个酷炫的功能是它有一个很好的StackOverflow集成,可以提供相关的帖子和更新的搜索引擎结果。
这些特性结合在一起,改变了我处理工作和学习的方式,使我更加高效,提供了更多的资源。随着我转向工作岗位,以及这项技术的进步,我很期待看到AI和工人之间的互动如何发展。有一点可以肯定,我将位于这些进步的前沿,你也应该如此。
译者介绍
崔皓,51CTO社区编辑,资深架构师,拥有18年的软件开发和架构经验,10年分布式架构经验。
原文标题:The Art of Prompt Engineering: How AI Helps Me Do My Homework,作者:Oscar Daum