大語言模型如何指引我們走向配置和編碼的幸福之路
我們都知道傳統的難題:緩存失效、命名、越界錯誤。配置是新的——甚至更令人頭疼的——難題。
譯自How LLMs Guide Us to a Happy Path for Configuration and Coding,作者 Jon Udell。
我們都有不同的學習方式。不幸的是,我的學習方式是先嘗試所有錯誤的方法,最后才能找到正確的方法。這并不總是壞事。通過探索所有不順暢的路徑,你可以對一個復雜的系統有更深入的了解,這種學習是有價值的。但很多時候,你只想走上幸福之路,盡快到達目的地。
隨著我們的系統變得越來越復雜、分層和相互依賴,不順暢的路徑也隨之增多。
在所有技術領域中,配置是最容易出現不順暢路徑的領域。隨著我們的系統變得越來越復雜、分層和相互依賴,這些不順暢的路徑也隨之增多。我們都知道傳統的難題:緩存失效、命名、越界錯誤。我認為配置是新的——甚至更令人頭疼的——難題。
這周,我需要擴展人類洞察力 + 大語言模型的苦力 = 創意出版解決方案中描述的解決方案。使用 Google Docs 來編寫和協作審查文檔,然后將其轉換為為我們的網站提供支持的 Markdown,已經解決了一個大問題。但它也不可避免地帶來了一個新問題。當我們審查這樣創建的大量文檔時,我們意識到我們對文件名和標題的約定需要改變。如果在 Google Docs 中手動進行,這將是一項痛苦的練習,而且我找到的任何插件都無法處理基于正則表達式的多文檔搜索和替換。因此,除了讀取和翻譯 GDocs 的轉換器之外,我還需要一個更新器來自動執行就地轉換。
如何快速學習 Google Docs API 的必要知識來完成這項工作?
如果這些文檔只是本地系統上的文本文件,那么這將是微不足道的,因為大語言模型具有強大的正則表達式能力。但它們是 Google 文檔,這完全是另一回事。弄清楚如何對 Google 進行身份驗證一直是我的一大難題。如果這是我必須定期做的事情,我會積累足夠的經驗來克服它,而不會有太多戲劇性。但就像很多這樣的瑣事一樣,這不是我經常做的事情。兩次遭遇之間可能會有幾個月甚至幾年的時間,所以每次遭遇都意味著要爬上一條痛苦的學習曲線。我需要創建什么樣的 OAuth 應用程序?請再次提醒我關于那個同意屏幕。哦,對了,我必須弄清楚要啟用哪些 API,然后顯式地啟用它們,對吧?然后確定哪些范圍可供我的應用程序使用?以及如何持久化身份驗證令牌?然后,請提醒我,當我更改范圍時,是否需要刪除令牌并重新進行身份驗證?哦,我的轉換器和更新器可以共享公共憑據嗎?最后,如何快速學習 Google Docs API 的必要知識來完成這項工作?
你知道其他人以前也走過同樣的路。
我一直討厭以這種艱難的方式重新學習所有這些廢話必要的但令人討厭的儀式。你知道其他人以前也走過同樣的路。如果你能拍拍其中一個人的肩膀,并與他們進行五分鐘的交談,你就可以避免這些陷阱。從歷史上看,我們獲取這些知識的最佳方式是進行網絡搜索和閱讀文檔。與之前相比,這已經很了不起:閱讀書籍、參加課程。但仍然不夠好。網絡搜索、文檔、書籍和課程對你在學習時所處的特定環境沒有很好的反應,如果有的話。大語言模型擴展了我們與知識淵博的人交流的機會。這是一種間接的訪問方式,它是不個人的,如果我能及時找到合適的人,我不會選擇它。但這很少可能,與大語言模型交談是一個很好的替代方案。
重構專家關注
我們應該花點時間思考這一點。在重塑發現:網絡科學的新時代中,邁克爾·尼爾森寫道:
“在創造性解決問題的過程中,在正確的時間獲得正確專家的關注往往是最寶貴的資源。專家關注對于創造性解決問題就像沙漠中的水對于生命一樣:它是基本稀缺資源。”
本書中一個重要的故事講述了名為 InnoCentive 的組織(現已并入眾包問題解決平臺Wazoku Crowd)如何幫助一個非營利組織——該組織需要在印度農村地區可靠運行的太陽能無線路由器——與 Zacary Brown 聯系,Zacary Brown 是一位軟件工程師和無線電愛好者,擁有必要的技能。尼爾森補充道:
“InnoCentive 通過重構專家關注度來創造價值,使 Zacary Brown 等人能夠以高杠桿的方式運用他們的專業知識。”
我們絕對應該期望我們的協作工具(看看你,Slack!)能夠幫助我們有效地利用專家關注度。我們如何幫助人們在組織中與專家聯系,而不會讓這些專家充斥著不必要的、會扼殺工作流程的干擾?這是一個重要的開放性問題。正如我上次提到的,像Cody和Unblocked這樣的基于 LLM 的工具可以充當同事的代理,從而保護他們免受干擾。但我們不要忽視以最有效、最不具破壞性的方式將人們聯系在一起的必要性。在這方面,還有很大的提升空間——或者與 Slack 競爭。
看我的屏幕
展示而不是講述的能力是一個改變游戲規則的能力。
如果我能說服一位專家指導我完成 Google 的身份驗證迷宮,我們就會進行一個帶有屏幕共享的通話,這樣我就可以展示我各種失敗的嘗試。令人高興的是,現在使用 LLM 可以做到這一點。正如我之前多次提到的,將屏幕截圖粘貼到 ChatGPT(現在也包括 Claude)中是一種非常有效的方法。以下是我在轉錄中看到的一張幫助我走出迷宮的圖片。
這張圖片值千言萬語。它表明我們是在 Python 的 Google API 客戶端的上下文中操作的,并且我們已經使用某種有效的憑據對服務進行了身份驗證,但文檔 ID 錯誤或沒有授予必要的范圍(或應用程序未請求),或者可能存在其他問題。用文字將這種上下文傳達給另一個人會很乏味——這就是我們進行屏幕共享的原因。用相同的文字提示語言模型也會同樣乏味。展示而不是講述的能力是一個改變游戲規則的能力。
該轉錄中的其他屏幕截圖顯示:
- Google 文檔本身,證明我擁有正確的文檔 ID。
- Google 文檔的共享對話框,證明作為已登錄用戶,我可以查看和編輯具有該 ID 的文檔。
- 開發控制臺的同意屏幕,證明我已授予必要的范圍。
從我的屏幕上抓取一些內容并將其粘貼到 ChatGPT 中,使所有這些基本的故障排除工作變得輕而易舉。
在這種情況下,問題出在其他地方。首先,在添加必要的范圍后,我需要刪除保存的令牌并重新進行身份驗證。其次,我的腳本需要在其 API 請求中包含該添加的范圍。這些錯誤已經反復出現,我最終會自己糾正。通過利用之前走過這條路的人們的經驗,ChatGPT 加快了我識別和擺脫我遇到的陷阱的能力。
解釋代碼
現在我讓 LLM 以長格式編寫正則表達式,并附上極其詳細的注釋。
從身份驗證迷宮中出來后,一切都很順利。以下是匹配模式列表并在其中替換替換項的核心函數。
這不是 Claude 生成的原始函數。在那個函數中,正則表達式看起來像調制解調器線路噪音。它們工作正常,但我沒有信心能夠理解、解釋或修改它們。因此,現在我讓 LLM 以長格式編寫正則表達式,并附上極其詳細的注釋。它們不會主動這樣做,但如果你堅持,它們會照辦。
趁此機會,我要求快速復習一下 Python 的 re.sub 和其中匿名(lambda)函數的使用。我不再需要掌握這些習慣用法,這使我可以專注于我要解決的問題。但這只有在我能夠快速輕松地恢復知識的情況下才是一種可行的策略,而 LLM 有力地使我能夠做到這一點。
找到其他人走過的幸福之路
在如何使用“AI”中,Nicholas Carlini 提供了我在本專欄中一直在探索的策略的詳盡列表。他寫道:
“幾乎所有事情都已經被其他人做過。你想要做的幾乎沒有什么真正是新穎的。語言模型在提供你之前見過的解決方案方面非常出色。”
有些人認為,通過聚合從人類經驗中汲取的知識,大語言模型(LLM)并非如“生成式”一詞所暗示的那樣是創造力的來源,而是平庸的傳播者。既對又不對。確實,真正新穎的想法和方法很少,我并不期望 LLM 能產生它們。然而,大多數創造性行為都包含對已知想法和方法的新穎組合。由于 LLM 極大地提高了我們進行這種組合的能力,因此它們是人類創造力的放大器,而不是威脅。