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