編者按:如果說有辦法讓你的軟件開發(fā)過程加快 100 倍,你相信嗎?人工智能讓這一切都成為了可能。未來的軟件開發(fā)可能與現(xiàn)在截然不同,你不再需要做大量編碼工作,而只需要思考想讓人工智能來完成哪些工作。本文來自編譯。
人工智能現(xiàn)在太火了,每天社交媒體上都充斥著大量用 ChatGPT 來實(shí)現(xiàn)的新鮮事,很多人在炫耀他們用人工智能生成的照片。這些無疑都很酷。
科技界已經(jīng)全情投入到這場人工智能淘金熱中了。幾乎每天都有新的軟件、特性和更強(qiáng)大的功能涌現(xiàn)出來,我們必須努力跟上這個(gè)時(shí)代的發(fā)展。那么你是積極擁抱所有的新進(jìn)展,密切關(guān)注它的發(fā)展變化?還是刻意忽略新改變,希望它從未發(fā)生?還是說介于一種中庸觀望的狀態(tài)呢?
照片來自Jurgen Appelo
看看上面的人工智能應(yīng)用發(fā)展曲線,我估計(jì)我們?nèi)匀贿€處于早期應(yīng)用階段的起步期。雖然很多人在網(wǎng)上大肆宣傳,但實(shí)際真正在生產(chǎn)中使用它的人并不多。
但是人工智能的時(shí)代終將會到來,屆時(shí)它將無處不在。我們可能不會特別注意到它,因?yàn)閷脮r(shí)它將成為很自然的存在,那時(shí)的軟件無疑也會更令人愉悅。
但對我來說,我已經(jīng)全身心地?fù)肀Я巳斯ぶ悄?,它完全改變了我策劃、設(shè)計(jì)和開發(fā)軟件的方式。誠然,我不再是一個(gè)企業(yè)架構(gòu)師了,但我確實(shí)在自己經(jīng)營著我個(gè)人的網(wǎng)站 Ready, Set, Cloud,它背后有大量的軟件和服務(wù),一切都是自動化的。
本文我想分享一下我是如何運(yùn)用強(qiáng)大的人工智能進(jìn)行應(yīng)用程序設(shè)計(jì)的。
一個(gè)簡短的前言
在我進(jìn)一步介紹之前,我們來看一個(gè)我熟知的言論,這一言論確實(shí)推動了很多技術(shù)和設(shè)計(jì)決策(雖然不會產(chǎn)生真正的創(chuàng)新)。
世上沒有完美的軟件。你只要能達(dá)到一個(gè)將就“差不多”的狀態(tài),你和你的客戶就都會滿意了。
任何時(shí)候都不要假設(shè)你正在構(gòu)建完美的軟件。即使你設(shè)計(jì)得真的很“完美”,可是當(dāng)你去實(shí)施的時(shí)候,還是免不了要來幾次迭代,最終版本跟起初的設(shè)計(jì)可能大相徑庭。
你不可能讓所有人都滿意。人們也并不需要“完美的軟件”,他們只要能夠解決他們的問題即可。
考慮到這一點(diǎn),人工智能也并不是完美的。它也會出現(xiàn)一些不和諧的小問題,可能偶爾也會給我出難題。這沒關(guān)系。如果我能夠以一種創(chuàng)新的方式解決一個(gè)問題,而且在 80% 的時(shí)間內(nèi)都是有效的,我就認(rèn)為是成功了。
現(xiàn)在我們已經(jīng)解決了這個(gè)問題,讓我們來看看人工智能的快速增長帶來了哪些新的可能。
新的可能
ChatGPT 和其他生成式人工智能服務(wù)在偽裝人類方面令人印象深刻。很多通常需要人類才能回答的問題,現(xiàn)在人工智能都可以自如地回答。如果你愿意接受人工智能給出的答案(假設(shè)你能接受),那么許多以前必須要人類參與互動的行為就有了更多的替代和發(fā)展的可能。
數(shù)據(jù)轉(zhuǎn)換
我想在發(fā)布博客的同時(shí)也把它同步發(fā)到我的社交媒體上去。之前我一直是自己手動同步發(fā)的,但如果有機(jī)會,我完全可以把這個(gè)工作交給一個(gè)虛擬助理來完成。博客文章我已經(jīng)有了,但我還需要知道我的社交媒體上的目標(biāo)受眾喜歡哪些關(guān)鍵詞、結(jié)構(gòu)和格式。我有一個(gè)粗略的想法,并且已經(jīng)按此做了一段時(shí)間,但還不完美。
這個(gè)事兒 ChatGPT 可以做。它知道如何從我的博客帖子中提取出信息,并針對性地轉(zhuǎn)換為目標(biāo)受眾喜歡的形式。它還具備驚人的市場細(xì)分信息,而我需要做的就是為特定的受眾轉(zhuǎn)換數(shù)據(jù)形式,我只需向 ChatGPT 提出要求就行。
“為我的內(nèi)容創(chuàng)建一條面向美國的 serverless 開發(fā)者的推特?!?/p>
如果我有其他的需求,我也可以向 ChatGPT 提出不同的要求,比如“根據(jù)我的博客文章,針對西班牙的.NET 工程師創(chuàng)建一個(gè)西班牙語的 LinkedIn 帖子”。
ChatGPT 生成的內(nèi)容可以很方便地通過 Twitter 的 API 發(fā)送上去。
數(shù)據(jù)生成
這方面的應(yīng)用挺常見的。只要給 ChatGPT 一個(gè)提示,它就能自動按要求生成數(shù)據(jù)、電子郵件或 PDF 文件。它的應(yīng)用案例非常廣泛,值得詳細(xì)說明一下。
我曾在博客上分享過,我做了一個(gè)健身應(yīng)用程序,每天能自動為我生成鍛煉計(jì)劃。我用了一個(gè) Lambda 函數(shù),它能夠隨機(jī)確定當(dāng)天要鍛煉的肌肉群和相應(yīng)的健身器材,并創(chuàng)建一個(gè)提示發(fā)給 ChatGPT。然后 ChatGPT 就會為我制定全套的訓(xùn)練、熱身和整理過程,保存到數(shù)據(jù)庫中。
而在生成式人工智能出現(xiàn)之前,要實(shí)現(xiàn)上述需求簡直就是一場噩夢。首先我得有個(gè)練習(xí)數(shù)據(jù)庫,以及針對不同類型的訓(xùn)練進(jìn)行修改的方法。然后,我還需要想出修改它們的邏輯,以實(shí)現(xiàn)偽隨機(jī)化和結(jié)構(gòu)化訓(xùn)練。所有的這些工作需要花費(fèi)我?guī)字艿臅r(shí)間,結(jié)果也并不令人滿意。
但是現(xiàn)在我只花了 3 個(gè)小時(shí),就建立了一個(gè) Step Function 工作流,它可以自動問詢 ChatGPT,替我完成所有繁瑣的工作。這讓我省下了好幾周的時(shí)間可以深入研究人工智能,而不是自己費(fèi)勁巴拉地去從頭構(gòu)建一些東西。
它的用途不僅僅局限于健身方面,你還可以用它生成故事,根據(jù)提供的模式構(gòu)建整個(gè)模擬數(shù)據(jù)集,或者用您廚房里現(xiàn)有的食物制定出合適的食譜。
現(xiàn)在,只要給出正確的提示,我就能自動得到有意義的數(shù)據(jù)。這讓我的工作從以往的“軟件工程”轉(zhuǎn)變成了“提示工程”。你不再需要這些龐大的元素?cái)?shù)據(jù)庫來提供定制的業(yè)務(wù)邏輯,只需要讓人工智能發(fā)揮它的能力即可。
找到合適的時(shí)間
很多時(shí)候我們需要明確地知道應(yīng)該何時(shí)發(fā)布內(nèi)容、何時(shí)對事件做出反應(yīng)或發(fā)送通知,但這在以前是非常困難的。理想的時(shí)間是不存在的,因?yàn)橥ǔ6紩暰唧w情況而異,很少有可以通用的配置。一個(gè)典型的例子就是當(dāng)系統(tǒng)檢測到異常時(shí),需要及時(shí)通知值班工程師。我們當(dāng)然不會希望所有突發(fā)事件都要通知工程師,那樣誰也受不了。
如果采用人工智能來監(jiān)控?cái)?shù)據(jù),它就可以自動識別異常,并觀察異常是否解決,甚至能夠找出異常發(fā)生的原因。你可以為人工智能提供一些依據(jù),讓它僅在特定需要關(guān)注的事件被觸發(fā)時(shí)才會發(fā)出警報(bào)。這會顯著提高值班人員的工作效率,降低人力成本。
你還可以向 ChatGPT 發(fā)送 JSON 對象(一種數(shù)據(jù)格式),并要求同樣返回 JSON 響應(yīng)。我們來看一個(gè)例子:員工通知。
現(xiàn)在很多人都選擇在家遠(yuǎn)程工作,所以不可能在一個(gè)相同的時(shí)間給每個(gè)人發(fā)送消息,因?yàn)槟莻€(gè)時(shí)間不一定所有人都恰好在線。因此,你可以使用 ChatGPT 來判斷一個(gè)人的活動趨勢,以獲得一個(gè)在統(tǒng)計(jì)學(xué)意義上的最可能在線上聯(lián)系到他們的時(shí)間。假設(shè)有這么一個(gè)審計(jì)歷史:
你可以將審計(jì)歷史反饋給 ChatGPT,然后向其提供以下提示:
以 ISO-8601 格式返回一個(gè)具有“sendAtTime”屬性的 json 對象,該對象在該人下次在線時(shí)與之聯(lián)系上的可能性最高。
其結(jié)果是:
你不必再去費(fèi)力建立一個(gè)通知系統(tǒng)啦!你只需輸入審計(jì)歷史記錄,然后讓生成式人工智能根據(jù)趨勢找出人們下一次在線的時(shí)間。以前需要花費(fèi)數(shù)周的策劃和努力才能完成的工作,現(xiàn)在居然變得如此輕松。你可以構(gòu)建一個(gè)加載審計(jì)歷史記錄的 Step Function 工作流,使用 Lambda 函數(shù)查詢 ChatGPT,然后設(shè)置一次性 EventBridge 計(jì)劃。
這將如何改變軟件開發(fā)
根據(jù)我們之前看過的所有案例,一套全新的用例已經(jīng)出現(xiàn)了。我不再需要專注于構(gòu)建跟蹤 CRUD 操作的傳統(tǒng)系統(tǒng),我們有數(shù)以百計(jì)的案例可以證明這一點(diǎn)。
我現(xiàn)在用人工推理的方式研究軟件。我要考慮的是可以向 ChatGPT 提出什么要求,從而盡可能減少我的代碼開發(fā)工作。我曾多次公開表示編寫代碼是一種負(fù)擔(dān)。只要有機(jī)會,我就不會去做編碼工作。編碼曾經(jīng)是能夠直接將 API Gateway 連接到不同 AWS 服務(wù)的方式。我會刪除 Lambda 函數(shù)代碼,完全跳過它。
但現(xiàn)在,我可能甚至不需要某個(gè)端點(diǎn)就可以做到我想做的事情。無論你是否相信,現(xiàn)在情況就是這樣了。
當(dāng)創(chuàng)建數(shù)據(jù)時(shí),我從“我能自動化什么,我能在哪里收集洞察,以及我應(yīng)該何時(shí)行動”的立場來進(jìn)行開發(fā)。以我的博客為例:
我的所有文章都以 Markdown 文件的形式保存在 GitHub 上。當(dāng)我向主分支推送一篇新文章時(shí),會發(fā)生一系列事件:
轉(zhuǎn)載到其它博客平臺
總結(jié)和收集文章細(xì)節(jié)的分析結(jié)果
將文本轉(zhuǎn)化為語音朗讀音頻并保存到文章中
創(chuàng)建作者分析(寫作技巧水平、語氣、專業(yè)領(lǐng)域、主題)
根據(jù)內(nèi)容確定目標(biāo)受眾和切入點(diǎn)
針對確定的受眾撰寫社交媒體文章,總結(jié)文章內(nèi)容
根據(jù)目標(biāo)受眾,安排在最佳時(shí)間發(fā)布到社交媒體
現(xiàn)在,其中一些行為還無法完全實(shí)現(xiàn)——但由于生成式人工智能的強(qiáng)大,實(shí)現(xiàn)它們只是早晚的事情。你從我上面列舉的一系列行為應(yīng)該不難發(fā)現(xiàn),ChatGPT 基本上已經(jīng)相當(dāng)于一個(gè)自動化的營銷團(tuán)隊(duì)了。識別出對一篇文章最能產(chǎn)生共鳴的人群,知道如何觸達(dá)他們,當(dāng)他們在線時(shí)向他們發(fā)送定制的消息,這些都是營銷任務(wù)——而且是非常艱巨的任務(wù)!
但是,由于我采用的新的軟件開發(fā)方法,這一切都成為了可能。我不是在研究“如何才能建立一個(gè)能做 X、Y 或 Z 的系統(tǒng)”,而是在想我需要讓人工智能為我做什么。
這確實(shí)改變了游戲規(guī)則,而且從投資回報(bào)率的角度考慮,這是一個(gè)非常高性價(jià)比的選擇。當(dāng)然目前的結(jié)果并不總是完美的,但它是我可以接受的。老實(shí)說,如果是我手工構(gòu)建一個(gè)解決方案,它也一樣永遠(yuǎn)不會完美。但是現(xiàn)在我的完成時(shí)間加快了 100 倍,這就非常值了。
譯者:張茉茉