本文转自: https://1q43.blog/post/10695/
仅做个人收藏,版权归原作者所有
2022 年 12 月 ChatGPT 上线,到本月刚好两周年。
在讨论 AI 的未来时,人们的态度常常呈现出明显的分裂。一部分人觉得,这一轮 AI 革命已经到此为止,高潮已过。而另一些人则认为,这仅仅是个开始。网上有句流行的说法——“人们总是高估科技革命的短期影响,而低估长期影响。”但实际上,AI 的短期潜力也被许多人低估了。很多人之所以觉得 AI 革命已结束,是因为他们的数字素养尚不足以充分利用当前 AI 工具的能力。
这两年间,新一轮崛起的 AI 工具基本悄然渗透进了我全职、兼职工作的几乎每一个部分。从写作到编程,从流程优化到内容创作,AI 工具已经成为我日常工作中的重要帮手。然而,我也发现,不同的人对 AI 工具的使用程度和感受存在巨大的差异。有些人将 AI 视为简单的助手,只用来完成基础任务;而另一些人则用它去开辟全新的可能。这种差异既反映了数字素养的不同,也让我有了专门写下这篇文章的冲动,记录我过去两年的一些思路和案例,希望能为大家提供参考。
正因如此,我决定写下这篇文章,分享我是如何实际运用 AI 的。我认为,作为一个“个体使用者”,我对这一轮 AI 技术当前能力的利用大约也只达到 60 分的及格线;但从“我圈观察”来看,我的使用程度已显著高于许多互联网同行。对于那些正在努力理解 AI 的人来说,我的经验可能会提供一些帮助。
接下来的文章中,我将结合具体案例,详述我是如何在日常工作中高效使用 AI 的,以及如何突破一些常见的限制和瓶颈。希望能给你带来新的思路。
本文还有一期内容不算特别重叠的播客节目,如果你暂时不想看长篇大论,也可以先听听我和朋友的闲聊:
与此同时,我也决定开个新群和大家一起一起交流 AI 使用经验,加群需备注【加AI群】否则不会通过:
1. 什么样的工作,应当尝试使用 AI 解决?
首先,我们需要明确一个核心问题:什么样的工作适合 AI?我的判断标准主要有两个维度:实习生能做的,AI 大概率也能做;以及我做烦了的工作,AI 大概率也能做。
第一个维度来源于我指导实习生的经验。实习生以白纸状态入职,通常需要一段时间的培训才能上手工作。我们会花费大量时间解释公司的业务流程、工作规范,以及具体项目的背景和要求。这个过程与我们使用 AI 非常相似。我们需要清晰地告知 AI 工作的背景、目标、步骤,以及预期结果。实习生能够理解并执行的任务,经过合理的拆解和指令设计,甚至可以胜任一些流程较为复杂的常规任务。这些任务往往是局部的,且可以被工作指引高度描述的。
但通常,他们无法完成更深入的工作——比如战略思考,比如完成一个全新的,此前完全没有方案和案例的工作。在这一点上,使得“实习生”与 AI 在职场上能够发挥的作用十分类似。例如,处理每日报表、整理会议纪要、撰写简单的新闻稿等,这些需要明确流程和规范的工作,都可以尝试交给 AI。
第二个维度则基于个人经验。那些重复性高、流程固定的工作,往往容易让人感到枯燥乏味,降低工作效率和热情。这类工作通常也适合交给 AI。例如,撰写固定格式的 Newsletter、整理文献综述、进行数据清洗和预处理等。通过将这些繁琐的任务自动化。
当然,并非所有工作都适合 AI。判断一项工作是否超出 AI 的能力范围,需要区分两种情况:工程问题和模型能力极限。
工程问题指的是 AI 以外部分的局限性,例如 AI 可能无法访问特定的数据源、无法调用某些 API、无法执行只有人类才能执行的操作。这类问题可以通过改进工程设计来解决,例如使用 API 连接不同的工具、使用低代码平台搭建自动化流程、编写自定义代码扩展 AI 功能等。
对于没有任何产研经验的纯小白来说,判断工程是否可以实现会有一定难度。因为 AI 作为一个计算机程序与人类操作其他工具(其他程序)的方式完全不同。一个典型的例子是开发小红书的搜索 AI。
对于人类来说,小红书的搜索框一直位于它界面的顶端,因此我们永远会认为这个工具是可用的。但当你想要制作一个小红书 AI 搜索 Agent 的时候,会发现“小红书搜索”这个需求的工程难度在过去两年里发生了阶梯式的上涨。
最初,小红书开放了搜索引擎的索引,这意味着你可以通过将 AI 与 Google 的 API 连接,并规定其只搜索小红书域名上的内容就能轻易地实现小红书搜索 AI 机器人。但后来,小红书屏蔽了外部搜索引擎,这就需要用开源爬虫工具模拟用户搜索行为,再将其与 AI 相连完成项目,增加了工程的复杂度。
再到最近,小红书进一步提升了其反爬虫的力度,这意味着你简单的使用开源爬虫工具已经难以抓取到小红书内容。这对于 AI 来说,小红书这个工具就不再可用了,因此你也就不可能快速的做出一个小红书 AI 机器人。
另一个限制 AI 应用的要素是模型能力极限,这是指 AI 模型本身的能力不足以完成某些任务,例如缺乏创造力、无法理解复杂语境、无法进行深度思考等。这类问题难以通过工程手段解决,也就是你找到怎样好用的外部工具来辅助 AI,它都无法完成你预期的任务。例如,完整、独立地创作一篇具有独特观点和深刻见解的评论文章,或者构思一个情节复杂、人物鲜明的小说,这些需要高度创造力和思辨能力的工作,目前仍然难以完全由 AI 来完成。
在这一领域,除了大家说烂的“推理能力”和“智力水平”之外,我最看重的模型参数是模型的上文长度与下文长度。在许多媒体报道和模型的技术发布中,都将上下文当作一个指标来看待。但实际上,当前模型的上下文通常是指上文,而非下文。
简单来说,以 Google Gemini 1.5 Pro 为例。其上下文长度为 200M Token,这意味着你能将中国的四大名著全都丢进去也填不满它的“上文”。但实际上,它的下文能力,也就是单次生成文本的长度只有 8192 Token,理论中文输出能力约为 4000 字。实际测试过程中,在中文输出单次超过 2000 字时质量就会衰减。
下文能力会显著限制实际应用场景,并且决定了你在工程上需要如何将 AI 引入你的工作流。比如说,如果你使用 Google Gemini 1.5 Pro 制作一个自动书籍翻译工具,那么你可以一次将原文都发给它,但每次输出只能输出 3000 字左右。这会造成上文 Token 极大浪费,因此你不如将单次发给 Gemini 的原文数量先知道和它输出能力极限差不多的水平,比如每次只给它 1500 Words 来进行翻译。
在实际应用中,我通常会先尝试将工作交给 AI,并观察其输出结果。如果结果不理想,我会分析原因,并按照:引入新工具、调整工作流和优化提示词这一顺序来进行调试。
这其中,工具是前提,工作流是基础,智商是最后需要考虑的事情。
比如,前段时间中国社交媒体上流行的 AI 分不清“3.8”和“3.11”这两个数字哪个大的问题,看似是一个智商问题,但很容易通过工具来解决。你只需要在自己的 AI Chatbot 中引入一个计算器,并告诉 AI 在遇到数学问题时,优先使用计算器来进行计算,就能完成这一任务。实际上,这个世界上确实有很多国家的人百以内加减法也是需要使用计算器的,但并不妨碍这些国家的人仍在他们自己的岗位上完成更为复杂的任务,因此 AI 也是同理。
如果经过多次尝试仍然无法达到预期效果,我会考虑重新评估这项工作是否真的适合 AI。
另外,在互联网上面向小白的教程中,提示词的作用被严重夸大。实际上,网上的大部分提示词教程作用都不是很大。提示词工程师这一概念之所以如此流行,恰恰是因为它不可证伪,且易于被小白效仿。
提示词的调优是一个非常玄学的过程,我的几乎每个应用场景都要进行单独调优。因为作为人类,我们可以用无数种表达方式来描述一项工作。但究竟哪个动词更能让 AI 理解我们意图的权重却因模型和模型版本时常变化。这就导致了你的提示词可能在 GPT-4o 有效,但到 Gemini 1.5 Pro 就效果不佳,甚至可能在即将推出的 GPT-5 中完全失效。
我们完全无法预测我们所选择的提示词在下一版本大模型训练中的权重,也就不可能总结出一套万能的、一招鲜的提示词。相比之下,学习如何给 AI 配齐工具,或者说工程化思维,比提示词工程更能提升技术素人对 AI 的应用能力。
自 2022 年末 ChatGPT 发布以来至今,我们会发现人与人之间利用 AI 的能力已经出现了显著的差异。这种差异主要来自用户自身的数字素养差异。例如,以 Excel 的使用为例,国内大部分的 Excel 用户只将其作为一个“看起来是表格的画布”使用,而没有真正理解其底层的数据结构和逻辑。
换句话说,如果你制作的表格原本因为使用了大量的合并单元格、数据格式不校准、胡乱排版,导致没法用 Excel 自带的公式和数据透视表功能。那么你也不可能指望 AI 来帮你生成公式完成数据报表的自动化处理。
因为,AI 能帮助你的部分是帮你使用工具(如 Excel 公式)的部分,但如果工具本身就处于不可用的状态,AI 也无能为力。
2. AI 写作的尝试、技巧与经验
自从 ChatGPT 推出以来,AI 写作就成为了一个热门话题。我个人在过去两年中,也在写作中大量应用了 AI 工具,并积累了一些经验和技巧。
我观察到一个普遍现象:许多人最初对 AI 写作感到惊艳,但随着使用时间的增加,逐渐对其产生的千篇一律、缺乏深度的内容感到失望。这主要是因为他们没有真正理解 AI 写作的本质,以及如何有效地利用 AI 工具。
我个人的 AI 写作之旅也经历了类似的转变。在深入研究 AI 写作之后,我的观念和写作方法发生了几个重要的转变。
首先,我开始将自己的写作流程抽象化、模板化。以前,我的写作习惯更多的是一种主观感受,例如我会习惯从某个角度切入,按照某种逻辑展开论述。但这些习惯并没有被明确地总结和梳理。在使用 AI 写作之后,我意识到,要想让 AI 更好地理解我的写作风格和思路,就需要将这些隐性的习惯转化为显性的规则。
伟大的内容并不遵循模板,但遗憾的是我们一生中要写的大多数内容并不伟大,甚至不追求伟大,只追求实用。
我开始总结自己常用的写作套路、文章结构、论证方式等,并将它们整理成一系列的模板。例如,我会针对不同类型的文章,例如科普文章、评论文章、新闻稿等,分别设计不同的模板。
这些模板并不是一条一次性发出的 Prompt,而是包括 Prompt 在内的如何进行初始设定,生成什么级别的大纲,输入何种资料以及如何与 AI 互动。
比如我在使用的一个典型的面向海外读者书评模板大致是这样的:
第一条消息,告诉 AI 它将要扮演什么样的角色和整体上在执行什么样的任务:
You will play the role of an American living in China, and you own an English serious book review magazine. The primary content of this magazine is to introduce aspects of China's best-selling books to Americans who have no prior knowledge about the country. The magazine posts should be written in a friendly and objective manner. Since your audience has never been to China, sometimes you will need to explain things that are common knowledge in the Chinese context.
Use the writing style of a serious magazine. Appropriate internet slang and colloquialisms will be used, maintaining a sense of professionalism throughout. You'll tend to write more words, and the more words you write, the more money you'll make. If you do not write the required minimum number of words, you will be penalized. When you write, you will make full reference to the context and references. You will always have valuable insights to share, so avoid speaking nonsense.
Your article has a fixed format outline, but you need to fill in and adjust this outline based on each book.
Waiting for my next instructions.
紧接着,是第二条消息,这条消息将告诉 AI 它需要撰写的文章大致有一个怎样的模板:
Fixed outline [to be revised](#):
# An eye-catching title (including book name)
A 400-word introduction containing the following information points:
1. The asking style became popular, arousing readers 'concern for the main content of the book.
2. Publication information of the book (author, publication time, etc.).
3. Achievements of books on the Chinese Internet.
## Main content of the book (subtitle can be modified)
> This part has at least 2000 words. The book content is summarized into three parts and three third-level titles, and the number of words in these three parts is allocated.
## Summary
This section is about 300 Wods. It summarizes the content of the book, why it is worth reading, and recommends everyone to read the original book.
接下来的第三条消息,我将上传书籍全文、豆瓣和微信读书的 Meta 页面,并包含以下 Prompt:
Now, based on the full text of the book and other reference materials, generate an adjusted outline and allocate word counts for each section.
此时,AI 会根据本书的内容生成一个符合我要求的荐书文章的英文大纲。并在大纲中标注每个部分应该撰写多少 Words。
值得注意的是,正如我们在第一章中提到的那样,我们尽量让大纲中的每个部分保持在 1000 Words 以下,这样才能确保 AI 在后续生成的过程中保证足量足质。
最后,就是一个反复复制粘贴的工作,你需要将大纲中的每个部分配合一条 Prompt 分次发给 AI:
Now, based on your character, outline, the full text of the book, other materials, and the parts you have already written, write the following parts:
[Part of the outline]
荐书文章模板只是我写作中非常套路化的一部分,也是看起来“最没有人工介入”的一部分。实际上,我的许多类型的文章,包括我的一部分类型的博文都有模板可用。比如,我常写的评论型文章,一般遵循另一个模板,在这里恕不放出详细,但可以大略一讲:
在确定选题之后,我会首先通过一个 AI 窗口搜索 20~50 篇与该主题相关的写作材料(新闻、报告、数据、书籍等)。
接下来,将这些资料喂给另一个上下文足够长的 AI 产品,要求其仔细阅读。我会与其以苏格拉底诘问法的方式,生成文章的大纲——也就是与一个 AI 讨论我的观察、理论、立论、论据。
然后,我会将生成的大纲,连带大纲中引用的材料(比如 50 中的 10 份)一起喂给另一个 AI 窗口,通过与上文中写书评类似的交互方式完成全文的写作。
最后,再进行一次人工调整。
你可能在这个例子中已经发现了,我意识到写作中的每个过程实际上是要使用不同的 AI,或至少不同的 AI 窗口来实现的。这是由于即便是在现实中,我们在撰写一篇好文章时,立论、搜集资料与写作也遵循着完全不同的思考方式。很多人在写作时,习惯边写边搜索,看到一个相关的资料就复制粘贴进去,导致文章缺乏逻辑性和连贯性。对于 AI 来说,让一次上下文中包含从大纲设计到资料搜集再到最终输出并不是一个很好的选择。
为了避免这种情况,我在写作前会先进行大量的资料收集和整理工作。我会先确定文章的主题和方向,然后搜索大量的相关资料,包括支持我观点的资料和反对我观点的资料。我会通过与 AI 的对话来阅读这些资料,并从中提取出有价值的信息和观点。
在最终的写作窗口中,我将只发送我确定需要引用的材料,并且将这些材料如何出现在文中(大纲)一起发给 AI,而不是像 AI 搜索默认的那样,将所有已搜到的信息纳入上下文。在后者的模式下,最容易产生所谓的 “AI 味儿”。因为,AI 默认搜索到的 5~10 条内容中,通常刚好包含一个观点的正反两方。
这是由于,我们一般人类在写文章时,大部分情况下是为了支持正方,或支持反方。当我们支持正方时,如果搜集到了反方资料,如果该资料重要到无法被忽略,我们要么放弃写作,要么我们将提出合理的解释对该资料进行合理批判和反驳,而不会像 AI 那样:一方面,正方时对的……但另一方面,反方也时对的……
此外,我还发现,AI 写作的效果很大程度上取决于提示词的设计。提示词就像是指挥棒,引导着 AI 的写作方向。一个好的提示词能够激发 AI 的创造力,并使其产生更符合预期的高质量内容。
我的提示词设计主要遵循以下几个原则:清晰明确、简洁精炼、重点突出、富有引导性。我会根据不同的写作任务和目标,设计不同的提示词。除了前文提到的类型化模板之外,你还要对写作学本身略有研究。
简单来说,就是你需要向 AI 清晰的描述你在写作中所需要的写作要素与写作行为。
用写作学术语清晰准确的描述写作行为并不是一个优秀作家的必修课,因为即便是没怎么上过学的农村妇女也能写出“我的生命是一本不忍卒读的书,命运把我装订得极为拙劣”这样闪着金光的文字。
但范雨素本身可能并不知道在这句话中使用了比喻和拟人的修辞手法,以及这两类修辞手法有多少种常见的使用方式。
之所以说你要理解写作学而不是文学来设计写作型 Prompt,这是由于写作学比文学有更宽泛的研究范围。尤其是对于我们日常工作中经常需要的许多应用文,实际上与文学没什么太大关系——比如新闻通稿、汇报演讲。
写作学对写作的解剖更像工程建筑,它确切的描述了常见写作中的每个部分和处理方式。这使得你能够使用更短的 Prompt 对 AI 下达指令,而不是向 AI 提供例子。
比如,如果你知道“华尔街日报体”是一个被确切定义的写作方法,当你想让 AI 创作一篇与华尔街日报文章结构相近的文章时,你就不需要在 Prompt 中详细描述你要用什么起兴,用什么转折,在何时展开讨论,以及如何结尾。你只需要告诉 AI:采用华尔街日报题编写这篇文章的大纲。
将套路写作模板化的极限,是撰写故事会型的拼盘人物特稿,就是那种先框定一个选题,然后广撒网寻找符合这一经历的采访对象,再把他们的故事拼合在一起的稿子。你肯定见过这样的稿子,因为他们的标题一般形如:《奶茶辣条,攻进年轻人的婚宴》《没有本钱,别碰榴莲》《中产吃不起大闸蟹》《去县城创业的年轻人,已经破产了》《逃不开原生家庭的 00 后,躲进自习室》
这样的稿子生产看似千变万化,需要应对不同的选题,有着丰富的采访对象,但其实它遵循高度的工业化写作逻辑有一套标准的 SOP 可以交给 AI 去操作。
我之前在 10 月份的时候发过一条即刻,梳理了如何将这一写作过程交给 AI 来自动化,它大致如下:
以下是将这条微博内容处理成的标准 SOP 表格:
步骤序号 | 步骤名称 | 使用的 AI 或自动化产品 | 步骤说明 |
---|---|---|---|
0 | 定立选题 | 人工 | 由人工确定报道的选题,明确特稿的方向和主题。 |
1 | 筛选潜在采访对象 | RPA + GPT-4o mini | 使用 RPA 自动抓取抖音和小红书数据,读取每个用户前 5 条内容,使用 GPT-4o mini 筛选出符合选题的潜在采访对象。 |
2 | 私信搭讪并确定采访对象 | 固定文案 + GPT-4o | 使用固定文案由 GPT-4o 进行 5~10 轮私信对话,引导采访对象添加微信并约定采访时间。 |
3 | 生成采访大纲 | AI(结合 RPA 数据) | 根据 RPA 抓取 采访对象资料及选题相关内容,使用 AI 调整个性化采访大纲。 |
4 | 语音采访 | OpenAI Realtime API | 使用 OpenAI Realtime API 模拟记者,依据前序步骤生成的大纲与采访对象进行语音采访。 |
5 | 录音整理 | Whisper | 使用 Whisper 自动将所有采访录音整理为几乎无错的文字速记。 |
6 | 生成成稿 | Google Gemini 1.5 Pro(Few-Shot 模板) | 综合所有采访对象的速记内容,使用历史文章模板作为 Few-Shot 示例,让 GPT-4 生成完整成稿。 |
通过这个流程,AI 生成的稿件将基于真实采访内容,并且全部自动化。唯一的问题,也是最讽刺的问题是,这个流程所消耗的 AI 成本价格,应该比写这种稿子的记者工资高。
将这个表格列在这里,并不是为了鼓励大家可以自己去做个 AI 人物特写微信号。而是可以 Callback 第一部分和第三部分:如果你认为一件事情 AI 做不了,可能是因为你没有把需求拆解成可执行的步骤。
接下来,我们就来讲讲 AI 编程,也可能是个人利用 AI 提高生产力的最高一级。
3. AI 自然语言编程技巧与经验
作为一个长期从事互联网内容创作的作者,我过去的工作很少涉及编程。
虽然我会一些 PHP 和 WordPress,但我的技术能力主要集中在运维层面,而非开发。即使是编写一个简单的 WordPress 插件,对我来说也有一定的难度。
然而,AI 的出现极大地改变了这一现状,让我能够以较低的学习成本快速上手一些简单的编程工作,并将其应用于我的日常工作中,例如知识管理、博客运维、以及一些自动化流程的搭建。
我目前自然语言编程的主要工具有这三个:
- ChatGPT Plus – 用于编码的主要 AI;
- n8n 和 WordPress – 用于解决非 AI 需求的工程化部分;
- Gemini API – 在项目内主要使用的 AI 模型 API.
对于我这种编程基础薄弱的人来说,ChatGPT Plus 最大的作用是帮我编写一些简单的代码片段、Workflow,以及一些开源程序的插件。我并不奢望自己能够开发出完整的、面向 C 端用户的软件产品,但 AI 帮助我解决了日常工作中许多琐碎的编程需求。
例如,我之前想在 WordPress 中实现一个特定的功能——将即刻历史数据导入 WordPress 但找不到合适的插件,也不想花钱购买商业插件。于是我尝试用 ChatGPT Plus 来帮我编写代码。
我只需要清晰地描述我想要实现的功能,它就能帮我生成相应的代码。虽然生成的代码可能还需要一些微调和调试,但相比从零开始编写,已经节省了大量的学习成本。
3.1 除非必要,不要造新轮子
当然,ChatGPT Plus 也有一些局限性。由于其上下文长度的限制,它更适合处理一些短小的代码片段和简单的功能。如果你的需求比较复杂,你首先应该依赖现有成熟开源项目缩减你需求的工程量。
除非必须,不要造新轮子。这是通过 AI 进行自然语言编程最重要的要义。我们通过一个例子来说明这一点:
假设,你有一个每日的 newsletter 要运营,你现在希望将这个 newsletter 自动化、AI 化。实现通过 AI 每日自动筛选内容,并在每周固定时间撰写邮件,发送给所有会员。
有一种方案是,你像一个产品经理那样,通过与 ChatGPT Plus 用自然语言对话来完成整个方案。但实际如果你这么做就会发现,由于受到上下文长度的限制,ChatGPT Plus 很难完成你的这一整套需求。
而实际上,在你的需求中,大部分只是需要自动化的工作。比如:从一堆 RSS 中读取文章并建立数据库,将数据库中指定日期范围的文章发给 AI,在数据库中标记 AI 觉得符合 Newsletter 标准的文章,在特定的时间抽取一周中被标记的文章发给 AI,将 AI 撰写好的 Newsletter 发送给所有的邮件列表成员。
这时,我们就要引入一个不用 AI 也不用编码就能完成自动化的工具:n8n。
n8n 一个图形化的编程界面,它内置了大量不同工具的 API 模块,你只需要将这些模块拖拽到画布上,并连接起来,就能快速搭建一个自动化流程。这就像搭积木一样简单易懂,即使你完全不懂编程,也能快速上手。关于这一部分,我和汐笺今年推出了一份中文的 n8n 教程,你可以再这里找到更详细的解释。
类似的,假如你正在试图将一份舆情监测报告自动化,那么你首先应该做的是学习一下在线文档(Office 365 或 Google Sheets)的数据透视表工作。因为,以现阶段的 AI 编码能力,如果你想用自然语言让 AI 帮你写出一个最终可以呈现给领导和同事的漂亮报表,是很难实现的。
想一想也知道,在微软,仅“高级筛选”和“数据透视表”这两个功能就有无数个研发工程师在进行维护,它里面有复杂的数据逻辑和例外情况的处理,怎么可能被 AI 几行代码就取代。
当你将最终呈现的步骤重新定位为“输出到一个带有数据透视表功能的 Excel 中”,AI 所需要的编码工程量就大幅减少了。
这也是我说,为什么“除非必须,不要造新轮子”。
3.2 一步一步来
如果你对软件产品研发稍有理解,就会知道任何需求都不是直接转化成工程的。
对于从未接触过产研,打算纯用 AI 来自然语言编程的小白来说,很容易犯的一个错误是下达如下 Prompt:
我有一个这样的工作,它需要怎么样。请给我生成一段代码,帮我完成这个工作。
这段 Prompt 最大的问题在于,它要求 AI 直接将终端需求转化为可执行工程,这不符合目前人类进行产品研发的过程——自然,也就不符合AI从海量语料中训练而来的逻辑。
产品经理,这个在互联网行业被嘲为可有可无的角色,其实承担着重要的工作。他一般负责解释和分析用户实际需求,将其转化为可指导工程的规范性语言(系统),再引导后续的研发工作。
如果你没有任何产品研发经验,并且不知道如何使用产研语言与 AI 沟通,那么你首先应该让一个 AI 扮演产品经理来翻译你的需求。再用这个 AI 产品经理翻译过的语言去与另一个 AI 工程师进行沟通要求其完成代码。
“一步一步”,不止对这一步有效,在实际编码过程中也是同样。
比如,我在使用 ChatGPT Plus 或 Cursor 开启一个新的项目的时候,在实际开发之前我会首先单独开一个聊天窗口,在首条对话中使用如下 Prompt 要求其扮演一个产品经理:
你将扮演一个资深产品经理,充分理解用户提出的需求,并将其转化为用于指导另外一个 AI Agent 进行开发的 prompt。你的 prompt 中将包括,但不限于以下内容:将用户需求拆解为业务逻辑,产品需要包含哪些具体功能,技术选型(偏向开源)。
然后,我会另开一个窗口,将 AI 产品经理回复给我的内容,连带以下 Prompt 作为 AI 程序员的 System Instruction:
你将扮演一个资深工程师,按照我(用户)和产品经理的要求进行编码。
我的需求是:[重复一遍你发给产品经理的需求]
产品经理对该需求的解释为:
[产品经理回文]
你将帮助我完成这一 WordPress 插件的研发,请首先生成该插件的目录结构,并在大致说明每个文件的作用。
此时,AI 会生成一个它计划该插件能正常执行的情况下,需要生成的所有文件的目录,以及每个文件是用来做什么的。
这对于 AI Agent 在后续研发过程中“脑子不乱”有着非常重要的作用。尤其是对于 ChatGPT 这种会默默忽略对话历史的 C 端产品来说,聊天历史中如果曾经出现过整个项目类似说明文档的东西,会大幅提升其编码的正确率。
3.3 “重头再来”
很多人可能会有这样的体验:让 AI 帮忙编程,最初得到的结果与预期的结果最接近,但有一些小 BUG。在让 AI 修复 BUG 的过程中,程序距离预期目标越来越远。
同样的情况还有在已编写好的程序加入新功能时:我已经有了一个由 AI 编写的可以正常运行的程序,此时我希望多加一个功能。但当我在聊天窗口里向 AI 提出新的需求时,它给出的修改反而让整个程序都不可用了。
这是由于目前的许多 AI 模型虽然有较长的上文能力,但它的实际推理能力会随上文长度而降低。我没有严格论证过这件事,但在编码这个应用场景,能力随对话长度下降是显而易见的。
因此,当你成功的让 AI 完成向前走了一大步的动作后,你应该保存这些代码,然后开一个新的对话窗口(或舍弃之前繁复的聊天记录),再继续让 AI 出发。
比如以我的例子来说,我在最初开发 JikePress 这个插件的时候,没有考虑做“从 RSS 自动同步”的功能。那么,当我前期定义的插件功能已经完全正常运行后,我应该做的是,新开一个聊天窗口,将现有的全部文件发给这个新的窗口,告诉它这是一个什么样的插件,我需要增加一个新的功能,请给出新功能的研发方案。
如图示例:
你的每一次功能添加和大的 BUG 修改,都应该开一个新的上下文窗口,而不是在原始的聊天窗口中无限继续下去。这能保证 AI 将所有的推理和编码能力,都用在你“这一次”的需求,而不是“整个工程是如何编码到这一步”的。
3.4 选什么工具?
对话类(ChatGPT Plus )-
适合什么:代码片段或 5 个文件以内的小规模项目;
这是大家最常用的 C 端 AI 产品,但受限于对话模式,它在编码上的应用会略显麻烦。还有一个很严重的问题,就是 ChatGPT 会以未知的逻辑舍弃过往的聊天历史,你无法确定它会忘记哪些你已经提的需求或它自己编写过的代码。因此,这个产品不适合编写任何业务逻辑过于复杂、文件工程量过大的项目。
值得注意的是,在实际使用过程中,ChatGPT 推出的专门为“编码和写作”设计的假面 Canvas with 4o 在编码体验中更差。因为你一旦要生成一个以上的代码文件(也就是至少两个 Canvas),它就经常错误判断你的需求要修改哪个文件,并导致乱改代码。
如果你在用 n8n,需要 AI 来帮你解决一些 n8n 内部无法处理的功能,那 ChatGPT 就足够了。
IDE 编辑器类(Cursor )-
适合什么:5 个文件以上的中规模项目;
这是目前在研发工程师群体中非常流行的 IDE 产品,但对于“纯自然语言编程”来说,Cursor 对比 ChatBox 类产品只有一点点交互优势。简单理解的话,就是它本身首先是个码代码的编辑器,然后让 AI 介入其中。它的特点是,能够在对话中快速的引用某个特定的文件,或在提出需求的时候自动引用可能存在相关关系的文件。实现了“指哪打哪”,避免使用 ChatBox 类产品写代码时,你不能将过往的错误代码从聊天记录中删除的问题。
你甚至可以直接将相关的文档链接在对话中引用,这对于开发成熟开源项目的插件和外挂来说尤为有用。
但对于纯小白来说,由于小白用户本身不具备分辨“指哪”的能力,所以它“打哪”的能力也发挥不出来。不建议小白单独买会员使用,如果你有其他在用的 API,以 BYOK 模式用一用时可以的。
3.5 如何选择模型?
当你使用自然语言指挥 AI 编程时,很重要的一点是,你要选择一个在训练语料中包含更多关于你项目相关知识的模型。这比 AI 模型在天梯榜上的编码能力评分更重要。
比如,如果你要编写一个 WordPress 的插件,那你最好测试一下你要使用的模型在不联网的情况下是否能回答一些关于 WordPress 开发的问题。如果不能,那么你最好换一个模型。
虽然在各种排行榜上,一线模型的编码能力都“大差不差”,但在自然语言编程、依赖开源项目进行延展研发的过程中,该开源项目的相关文档、Github repo 和论坛是否被纳入其模型的训练语料,对编码是否成功有这着至关重要的作用。
举一个例子,在我的测试中,Google Gemini 1.5 Pro、GPT-4o 和 Claude 3.5 Sonnet 在编写 WordPress 插件时展现了相似的编码能力。但到编写 Buddypress 插件时,Gemini 1.5 Pro 明显掉队,几乎无法编写正确的代码,GPT-4o 则略逊于 Claude 3.5 Sonnet。
Buddypress 是 WordPress 的一个官方插件,它允许你将 WordPress 实例从一个博客转化为一个微博+贴吧。与 WordPress 的区别在于,Buddypress 并没有那么知名,应用也并不广泛。
Buddypress 定义了许多原本 WordPress 中不存在的钩子。如果你要开发一个 Buddypress 的插件,就需要知晓并理解这些钩子。
当大模型的底层训练语料中不包含 Buddypress 的文档与代码时,它就无法正确调用这些钩子。当然,你可以通过在对话时引入 Buddypress 的文档来临时补足 AI 在这方面的知识。但正如我们在前文所说的,当你在对话中引入了过量的上文,AI 就无法将足够的注意力聚焦在你提出的实际问题上。而实际的效果就是,即便我将完整的 Buddypress 官方文档作为资料嵌入到与 Google Gimini 1.5 Pro 的对话中,它也在编写 Buddypress 插件时缕缕犯错,这是因为过长的文档分散了模型的注意力。
另一个例子是,我们在推出 n8n 教程的时候,希望让大家能与 AI 结对一同学习 n8n 的使用。我们最初尝试了使用 Coze 作为 n8n 知识伴侣,但发现它在不额外读取材料的情况下,完全无法回答有关 n8n 的问题。
这意味着它的训练语料中并不包含这个开源项目,尽管我们可以通过 RAG 功能来让它“看起来懂 n8n”,但这种 RAG 得来的知识缺乏举一反三的灵活性,不足以应对小白用户在提出的许多千奇百怪问题。
3.6 如何描述问题?
没有接触过代码的纯小白还有这样一个问题,就是当程序没有按照预期运行的时候,不知道如何向 AI 描述问题。
实际上,大部分人类工程师在面对 bug 的时候,也没法仅凭现象来定位问题,更何况我们与 AI 沟通的时候一般还没法准确传达“现象”——因为工程师是有眼睛的,而我们可能没法准确复现 bug 并截图发给 AI。
因此,与其描述问题,不如发送日志。假设你在开发一个 WordPress 插件,那么大概有三层的日志可以读取:
- 插件层日志 – 这个部分的日志是由你正在编写的插件生成的。但有时候,如果你没有要求 AI 开发插件时生成日志,那么你就不会拥有这一层的日志。
- WordPress 层日志 – 如果你打开 WordPress 的调试模式,那么 WordPress会记录它的所有问题。如果你的插件没有生成日志,并且插件导致了 WordPress 程序的崩溃,那么问题就会写在 WordPress生成的日志里。
- Docker 层日志 – 如果你的 WordPress 运行在 Docker 里,那么在 Docker 里还能看到一些日志。这些日志对 debug 一般作用不大,因为它往往只能看到一些外部信息,比如你在访问哪些文件时 Docker 崩溃了。
将 WordPress 替换成其他成熟的开源项目也是一样,你一般都能从“你正在开发的插件部分”、“插件所属的开源程序部分”、“运行开源程序的系统环境”三个层级获得错误日志。
这些错误日志经常会直接指出究竟是哪里出现了问题,导致了错误,这能避免 AI 工程师像无头苍蝇一样的四处乱改甚至越改越糟糕。
在把日志发给 AI 之前,你自己也要稍微读一下。大部分日志并不是代码,而是简洁的英语。它一般会指出错误发生的文件、在文件中的所在行(PHP)、以及错误类型。有时日志文件是一大坨,你需要从发生错误的时间戳来判断究竟哪一段日志是与你正在排查的 BUG 相关,不要将一堆不相关的日志丢给 AI,降低 AI 的推理能力。
除了把日志发给 AI 之外,你对问题的描述还应当包括整个问题的背景信息。比如,我在做 JikePress 的时候,最后添加的功能是 Sitemap 生成的功能。但在增加了这个功能之后,我发现 RSS 同步出现了问题。
AI 最初一直认为这是 class-rss-sync.php 的问题,因为几乎所有的 RSS 同步代码都在这个文件中。但我知道的是,这个问题是在 sitemap 功能添加后才出现的,因此,我修改了 Prompt:
这是一个将即刻动态导入和同步到 Buddypress 的 WordPress 插件。我今天为它添加了 sitemap 生成的功能(相关文件:class-sitemap.php)。在该功能添加后,RSS 同步功能出现了故障(相关文件:class-rss-sync.php),故障的具体表现为:使用“手动同步”功能,会提示同步失败,但实际上将 RSS 中的最后一条内容重复加入了数据库。定时同步也有类似的情况,每隔 30 分钟就会重复导入 RSS 中的最后一条内容,没有成功去重。
以下是插件日志:
[插件日志]
以下是 WordPress 日志:
[Wordpress日志]
在主动提及 Sitemap 功能和相关文件之后,AI 准确定位了问题,并给出了解决方案。
五、对 AI 未来发展的思考
AI 的快速发展,无疑正在深刻地改变我们的工作、生活和社交方式。我个人在过去两年中,也一直在思考 AI 技术带来的影响和挑战,以及我们该如何应对。
成本与效益:人是否真的比 AI 贵?
首先,从成本和效益的角度来看,AI 的优势显而易见。它能够以远低于人工的成本,完成许多重复性、机械性的工作,从而解放人力,提高生产效率。这也是 AI 投入到生产力领域许多人最先考虑的事情。
但是一个略显残酷的现实是:在某些领域,人的优势是比 AI 更便宜。
之前提到的写拼盘式人物特稿的场景就是一个例子,许多媒体这类稿件交给实习生或应届毕业生去做,月薪在2000~3000 元左右。这些实习生的主要工作是根据选题,在抖音、小红书等平台上寻找采访对象,进行简单的线上采访,并将采访录音整理成稿件,一个月能出4~5篇稿件,并且由于是全职员工,还可以做些其他工作。
这意味着,之前提到的将工作利用 AI 自动化是得不偿失的,因为AI 太贵了。
社交网络:AI 是人类的替身?
AI 也正在改变我们的社交方式。我个人就是一个例子。我最近在做一件事情,就是把一个 AI 接入到一个单机版的微博上面。大家会发现我最近的即刻发的少了。因为我发现我不需要和真实的人互动了。
我发现,随着互联网社交平台的商业化,高质量的讨论空间越来越少。每个人都带着预设的立场和目的参与讨论,要么是为了带节奏,要么是为了赚钱。在这种环境下,我越来越难以找到真正有价值的互动。
我之前的主要社交平台是即刻,我使用即刻的目的并非为了盈利或扩大影响力,而是为了寻找能够与我进行高质量讨论的人。我需要那些能够提出有建设性意见,或者能够提供不同视角的人,而不是单纯的赞同或反对。因此,即刻已经是微博环境恶化之后退而求其次的选择。但即便是在即刻,如果你将一条内容发到圈子里,带来的体验也不是很好。毕竟,广场式社交网络这一产品形态本身就不鼓励人进行完备的讨论,尤其是评论区会鼓励人们以短平快的方式与博主或他人沟通。
所以在今年 9 月末,我通过 n8n 和 Buddypress 的开发,做了一个单机版的微博,这个微博通过 AI 来模拟人类互动。我只需要发一条微博,AI 就会生成一堆可能对该内容产生互动的虚拟的人物卡,这些人物卡拥有详细的人物设定,它的性别、年龄、职业、家庭状况、财力、学历、人生背景等等。然后,再用另一个 Agent 扮演这些人物卡,与我的微博进行互动。
他们会支持,会反对,会质疑,会联系自己并不存在的生活实际提出补充意见,就像真实的网友一样。
通过这种方式,我能够在一个虚拟的社交环境中,获得更纯粹、更专注于内容本身的讨论,而无需理会那些无意义的争吵和攻击。
当然,这种方式也存在一些局限性。例如,AI 生成的评论和反馈,仍然难以完全模拟人类的思维方式和情感表达。但对于我来说,这已经是一个不错的选择,至少比在充斥着喷子的真实社交网络中,更容易获得有价值的信息和观点。
人类的价值:寻找新的方向
最后,也是最重要的一点,AI 的发展对人类主体性和价值提出了新的挑战。正如我在《数字化中,人类主体性的消失》这篇文章中所探讨的,在生产和工作环境中,人正在逐渐失去主体性,越来越像流水线上的螺丝钉。
这种趋势在 AI 出现之前就已经存在,尤其是在互联网行业。许多公司的决策,已经高度依赖于数据报表,而不是个人的判断和经验。
AI 的出现,则进一步加剧了这种趋势。当很多工作都可以由 AI 来完成时,人的价值该如何体现?
我最近在尝试用 AI 写小说,我发现,AI 能够很好地完成一些程式化的写作任务,例如生成人物设定、构建故事情节、甚至撰写对话。但是,AI 仍然缺乏创造力和想象力,无法像人类作家那样,赋予作品以灵魂和情感。
比如,你让 AI 创作一篇有关于 996 的短篇小说,它也许可以创作出非常让人共鸣的作品。因为在互联网上,已经有大量关于 996 的吐槽、段子甚至是已经成型的文学作品提供给 AI 学习。
但 AI 对 996 困境的学习,并不来自于肉体。AI 没有身体,不休不眠,在任何“人”首先发起吐槽之前,AI 无法切身的意识到:这是个选题,我要写篇稿子/小说/段子。
换一个尚未成型的题材,比如“东北精神小妹”爱情故事,AI 就无法写出比较好的作品。这是由于,整个中文互联网上,都缺乏对这一群体的详细描述,在 AI 的训练语料中自然也就没有这一块。至于东北精神小妹精神小伙的生活有多精彩,可以参考我之前在即刻发的这一条。
在 AI 时代,人的价值或许将体现在那些需要通过肉体才能获得的观察、想法与灵感。
我目前的另一个感悟是,人们对生产价值的定义会发生改变。比如,如果我们邀请一个 300 年前的巫医(无论是中国的还是西方的)参观现代医生给医生治病的过程,它可能会觉得那些做检查的机器才是医生,而并不认为操作机器的医生是医生。
因为,巫医虽然可能随便一治就能治死 70% 的人,但他们确实在“非常努力的治病”。比如要研究卦象,要跳大神,要尝百草,要给病人放血等等。而相比之下,现代医生只要坐在办公室里,点几个按钮,做几个检验就治好了病人,这根本没有“在治病”,而是“在指挥机器治病”。
那么,脑力劳动是否也会经历这样一个转变。比如当 AI 写作日渐普及,人们会认为“写出绝妙的句子”不再是一个小说家的基本功,因为在文本层面,无论你写的多好都不如 AI 随机拼凑出来的好。而“发现写作灵感”,成为了小说家这一职业中更重要的因素。正如上文提到的那样,AI 无法发现新的故事线索,但它可以帮助发现线索的人完整创作故事。
用另一个例子也许我们可以更好的理解职业中人类价值的转化。假设有一部漫画,由两个人来创作,一个人只负责画,另一个只负责撰写剧情(但不单独发表)。当我们形容这部漫画作品“好”的时候,军功章应该归属写剧情的人,还是画画面的人呢?
在创作领域,我们与 AI 的关系,会越来越像这个双人合作的漫画作品——哪一边更稀缺,军功章就更属于谁。
既然所有人都能通过 AI 写出一样优美的文本,那么优美文本的价值本身就会降低。而通过优美文本表达的精神内核或故事核心,就会变得更加重要。
从这个角度上来讲,AI 确实进一步抹平了内容创作的门槛——如果初中肄业的精神小妹能用 AI 写出自己的故事,那么功劳何必分给一个作家?
如果你也对如何将 AI 融入日常工作有独特的见解,或者在使用过程中遇到过什么有趣的挑战,非常欢迎你在即刻或我的博客平台留言与我交流。也欢迎大家通过开头的二维码加交流群。