神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。
编者按:如果说有办法让你的软件开发过程加快 100 倍,你相信吗?人工智能让这一切都成为了可能。未来的软件开发可能与现在截然不同,你不再需要做大量编码工作,而只需要思考想让人工智能来完成哪些工作。本文来自编译。
人工智能现在太火了,每天社交媒体上都充斥着大量用 ChatGPT 来实现的新鲜事,很多人在炫耀他们用人工智能生成的照片。这些无疑都很酷。
科技界已经全情投入到这场人工智能淘金热中了。几乎每天都有新的软件、特性和更强大的功能涌现出来,我们必须努力跟上这个时代的发展。那么你是积极拥抱所有的新进展,密切关注它的发展变化?还是刻意忽略新改变,希望它从未发生?还是说介于一种中庸观望的状态呢?
照片来自Jurgen Appelo
看看上面的人工智能应用发展曲线,我估计我们仍然还处于早期应用阶段的起步期。虽然很多人在网上大肆宣传,但实际真正在生产中使用它的人并不多。
但是人工智能的时代终将会到来,届时它将无处不在。我们可能不会特别注意到它,因为届时它将成为很自然的存在,那时的软件无疑也会更令人愉悦。
但对我来说,我已经全身心地拥抱了人工智能,它完全改变了我策划、设计和开发软件的方式。诚然,我不再是一个企业架构师了,但我确实在自己经营着我个人的网站 Ready, Set, Cloud,它背后有大量的软件和服务,一切都是自动化的。
本文我想分享一下我是如何运用强大的人工智能进行应用程序设计的。
在我进一步介绍之前,我们来看一个我熟知的言论,这一言论确实推动了很多技术和设计决策(虽然不会产生真正的创新)。
世上没有完美的软件。你只要能达到一个将就“差不多”的状态,你和你的客户就都会满意了。
任何时候都不要假设你正在构建完美的软件。即使你设计得真的很“完美”,可是当你去实施的时候,还是免不了要来几次迭代,最终版本跟起初的设计可能大相径庭。
你不可能让所有人都满意。人们也并不需要“完美的软件”,他们只要能够解决他们的问题即可。
考虑到这一点,人工智能也并不是完美的。它也会出现一些不和谐的小问题,可能偶尔也会给我出难题。这没关系。如果我能够以一种创新的方式解决一个问题,而且在 80% 的时间内都是有效的,我就认为是成功了。
现在我们已经解决了这个问题,让我们来看看人工智能的快速增长带来了哪些新的可能。
ChatGPT 和其他生成式人工智能服务在伪装人类方面令人印象深刻。很多通常需要人类才能回答的问题,现在人工智能都可以自如地回答。如果你愿意接受人工智能给出的答案(假设你能接受),那么许多以前必须要人类参与互动的行为就有了更多的替代和发展的可能。
我想在发布博客的同时也把它同步发到我的社交媒体上去。之前我一直是自己手动同步发的,但如果有机会,我完全可以把这个工作交给一个虚拟助理来完成。博客文章我已经有了,但我还需要知道我的社交媒体上的目标受众喜欢哪些关键词、结构和格式。我有一个粗略的想法,并且已经按此做了一段时间,但还不完美。
这个事儿 ChatGPT 可以做。它知道如何从我的博客帖子中提取出信息,并针对性地转换为目标受众喜欢的形式。它还具备惊人的市场细分信息,而我需要做的就是为特定的受众转换数据形式,我只需向 ChatGPT 提出要求就行。
“为我的内容创建一条面向美国的 serverless 开发者的推特。”
如果我有其他的需求,我也可以向 ChatGPT 提出不同的要求,比如“根据我的博客文章,针对西班牙的.NET 工程师创建一个西班牙语的 LinkedIn 帖子”。
ChatGPT 生成的内容可以很方便地通过 Twitter 的 API 发送上去。
这方面的应用挺常见的。只要给 ChatGPT 一个提示,它就能自动按要求生成数据、电子邮件或 PDF 文件。它的应用案例非常广泛,值得详细说明一下。
我曾在博客上分享过,我做了一个健身应用程序,每天能自动为我生成锻炼计划。我用了一个 Lambda 函数,它能够随机确定当天要锻炼的肌肉群和相应的健身器材,并创建一个提示发给 ChatGPT。然后 ChatGPT 就会为我制定全套的训练、热身和整理过程,保存到数据库中。
而在生成式人工智能出现之前,要实现上述需求简直就是一场噩梦。首先我得有个练习数据库,以及针对不同类型的训练进行修改的方法。然后,我还需要想出修改它们的逻辑,以实现伪随机化和结构化训练。所有的这些工作需要花费我几周的时间,结果也并不令人满意。
但是现在我只花了 3 个小时,就建立了一个 Step Function 工作流,它可以自动问询 ChatGPT,替我完成所有繁琐的工作。这让我省下了好几周的时间可以深入研究人工智能,而不是自己费劲巴拉地去从头构建一些东西。
它的用途不仅仅局限于健身方面,你还可以用它生成故事,根据提供的模式构建整个模拟数据集,或者用您厨房里现有的食物制定出合适的食谱。
现在,只要给出正确的提示,我就能自动得到有意义的数据。这让我的工作从以往的“软件工程”转变成了“提示工程”。你不再需要这些庞大的元素数据库来提供定制的业务逻辑,只需要让人工智能发挥它的能力即可。
很多时候我们需要明确地知道应该何时发布内容、何时对事件做出反应或发送通知,但这在以前是非常困难的。理想的时间是不存在的,因为通常都会视具体情况而异,很少有可以通用的配置。一个典型的例子就是当系统检测到异常时,需要及时通知值班工程师。我们当然不会希望所有突发事件都要通知工程师,那样谁也受不了。
如果采用人工智能来监控数据,它就可以自动识别异常,并观察异常是否解决,甚至能够找出异常发生的原因。你可以为人工智能提供一些依据,让它仅在特定需要关注的事件被触发时才会发出警报。这会显著提高值班人员的工作效率,降低人力成本。
你还可以向 ChatGPT 发送 JSON 对象(一种数据格式),并要求同样返回 JSON 响应。我们来看一个例子:员工通知。
现在很多人都选择在家远程工作,所以不可能在一个相同的时间给每个人发送消息,因为那个时间不一定所有人都恰好在线。因此,你可以使用 ChatGPT 来判断一个人的活动趋势,以获得一个在统计学意义上的最可能在线上联系到他们的时间。假设有这么一个审计历史:
你可以将审计历史反馈给 ChatGPT,然后向其提供以下提示:
以 ISO-8601 格式返回一个具有“sendAtTime”属性的 json 对象,该对象在该人下次在线时与之联系上的可能性最高。
其结果是:
你不必再去费力建立一个通知系统啦!你只需输入审计历史记录,然后让生成式人工智能根据趋势找出人们下一次在线的时间。以前需要花费数周的策划和努力才能完成的工作,现在居然变得如此轻松。你可以构建一个加载审计历史记录的 Step Function 工作流,使用 Lambda 函数查询 ChatGPT,然后设置一次性 EventBridge 计划。
根据我们之前看过的所有案例,一套全新的用例已经出现了。我不再需要专注于构建跟踪 CRUD 操作的传统系统,我们有数以百计的案例可以证明这一点。
我现在用人工推理的方式研究软件。我要考虑的是可以向 ChatGPT 提出什么要求,从而尽可能减少我的代码开发工作。我曾多次公开表示编写代码是一种负担。只要有机会,我就不会去做编码工作。编码曾经是能够直接将 API Gateway 连接到不同 AWS 服务的方式。我会删除 Lambda 函数代码,完全跳过它。
但现在,我可能甚至不需要某个端点就可以做到我想做的事情。无论你是否相信,现在情况就是这样了。
当创建数据时,我从“我能自动化什么,我能在哪里收集洞察,以及我应该何时行动”的立场来进行开发。以我的博客为例:
我的所有文章都以 Markdown 文件的形式保存在 GitHub 上。当我向主分支推送一篇新文章时,会发生一系列事件:
转载到其它博客平台
总结和收集文章细节的分析结果
将文本转化为语音朗读音频并保存到文章中
创建作者分析(写作技巧水平、语气、专业领域、主题)
根据内容确定目标受众和切入点
针对确定的受众撰写社交媒体文章,总结文章内容
根据目标受众,安排在最佳时间发布到社交媒体
现在,其中一些行为还无法完全实现——但由于生成式人工智能的强大,实现它们只是早晚的事情。你从我上面列举的一系列行为应该不难发现,ChatGPT 基本上已经相当于一个自动化的营销团队了。识别出对一篇文章最能产生共鸣的人群,知道如何触达他们,当他们在线时向他们发送定制的消息,这些都是营销任务——而且是非常艰巨的任务!
但是,由于我采用的新的软件开发方法,这一切都成为了可能。我不是在研究“如何才能建立一个能做 X、Y 或 Z 的系统”,而是在想我需要让人工智能为我做什么。
这确实改变了游戏规则,而且从投资回报率的角度考虑,这是一个非常高性价比的选择。当然目前的结果并不总是完美的,但它是我可以接受的。老实说,如果是我手工构建一个解决方案,它也一样永远不会完美。但是现在我的完成时间加快了 100 倍,这就非常值了。
译者:张茉茉