譯者 | 李睿
審校 | 重樓
生成代碼是ChatGPT和其他遵循指令運行的大型語言模型(LLM)一個功能強大的應用。如果得到正確的提示,大型語言模型(LLM)可以生成程序員可能需要數小時才能編寫的代碼。
然而,大型語言模型(LLM)并不能完成程序員的所有工作。他們無法分解復雜的問題,思考邏輯和結構,也無法創建多層次的解決方案。它們一次處理一個指令,預測可能遵循用戶提示和輸出的下一段代碼。
以下是可以幫助用戶充分利用ChatGPT強大的編碼能力以及避免進入陷阱的四個技巧。
如果無法驗證,就不要信任ChatGPT
像ChatGPT這樣的大型語言模型(LLM)的一個突出特征是它們的權威聲音。它們總是充滿信心地回答,即使他們的答案毫無意義。不可避免,有時ChatGPT采用令人信服但錯誤的答案回答了一些問題。
本文作者表示,他使用ChatGPT的經驗法則是,只在他完全理解并可以驗證的主題中使用它。例如不會用它來寫量子物理的解釋,因為他對這個主題了解不夠。但是ChatGPT可以幫助他撰寫一篇關于機器學習基礎知識的有趣文章,因為可以完全檢查和糾正它的輸出。
同樣,當使用ChatGPT生成代碼時,只讓它完成可以完全驗證的任務。ChatGPT可能編寫無效或更糟的代碼,這些代碼雖然有效但不安全。因為ChatGPT是一個自動化工具,可以完成那些需要花費很長時間編寫或需要多次訪問文檔頁面或在線論壇(如StackOverflow)的繁重工作。例如,可以要求它編寫排序算法,采用Python/ target=_blank class=infotextkey>Python啟動Web服務器的代碼,從數據庫模式中執行SQL查詢,或者在Matplotlib中執行數據可視化命令。
一次迭代一個代碼塊
大型語言模型(LLM) 往往難以處理需要推理和逐步規劃的任務。因此,不要指望ChatGPT能夠成功地編寫完整的程序或復雜的代碼塊。但是,這并不意味著ChatGPT不能幫助人們完成復雜的編程任務。如果給它提供一個簡單的任務(例如上面提到的任務),就有可能完成。
用戶可以將任務分解成更小的步驟,并一次一步地提示ChatGPT。一個成功的方法是從給ChatGPT一個你想要編寫的程序的邏輯的逐步大綱開始。
這有助于大型語言模型(LLM)為更復雜的任務做好準備,然后逐步提示大型語言模型(LLM)。簡而言之,用戶進行推理,ChatGPT完成工作。順便說一句,這種從大綱開始并逐步完成的方法在完成其他任務時也很成功,例如撰寫某些類型的文章。
如果對循序漸進的過程沒有清晰的愿景,用戶可以從ChatGPT本身獲得幫助。通過提示大型語言模型(LLM)生成完成任務的步驟列表來啟動編碼會話。然后根據需要修改大綱,并開始提示它生成第一步的代碼。
向ChatGPT提供反饋
不能指望ChatGPT每一步都提供干凈、安全、有效的代碼。當查看其代碼并將其輸入集成開發環境(IDE)時,可以進行更正和調整。當這樣做時,最好的做法是將更正后的代碼作為反饋提供給ChatGPT,并在適用的情況下提供解釋。
需要注意的一點是,ChatGPT對場景非常敏感,它的行為可以根據聊天歷史改變。用戶可以利用這一點,這就是為什么提供反饋和糾正代碼片段非常有幫助的原因。
例如,用戶可以說:“這就是我更改你提供的代碼的方式:[在這里插入修改后的代碼]。試著(插入行為更正)繼續這樣做。”這可以幫助引導ChatGPT朝著正確的方向前進,避免在回答以后的提示時重復犯錯。(同樣,本文作者在ChatGPT的其他任務中也成功地使用了這種反饋方法,包括撰寫文章)。
有時可以使用ChatGPT來獲得關于其自身代碼的反饋。嘗試打開一個單獨的聊天會話,在其中向ChatGPT提供它生成的代碼,并要求它對其進行改進或更正。有時,它會產生有趣的結果和新的探索方向。
清理ChatGPT的場景
如果用戶正在處理一個特別大的任務,聊天記錄可能會變得很長,特別是如果使用ChatGPT進行了大量的重復操作。根據用戶使用的模型,大型語言模型(LLM)可能會耗盡ChatGPT場景的內存。ChatGPT的免費版本有4000個令牌的內存。(對于語言任務,100個令牌覆蓋大約75個單詞。對于編程來說,它通常要少得多。)
一個成功的技巧是偶爾清理一下ChatGPT的場景。為此,可以采用一個提示啟動一個新的聊天會話,在這個提示中,可以向ChatGPT提供任務的大綱、到目前為止完成的步驟、到目前為止生成的代碼,以及希望它遵循的一些通用指導原則。然后告訴它繼續下一步。通過消除以前與大型語言模型(LLM)交互中的混亂,可以提供更清晰的場景,并提高了ChatGPT生成代碼的準確性。
大型語言模型(LLM)正在改變編程方式
大型語言模型(LLM)輔助編程領域正在迅速發展。例如,ChatGPT Plus現在有幾個插件可以幫助程序員預測代碼。其他基于大型語言模型(LLM)的編碼工具(例如Github Copilot和Amazon CodeWhisperer)正在幫助程序員顯著提高他們的速度和生產力。檢索增強技術可以使程序員將大型語言模型(LLM)的行為定制為他們自己的專有代碼庫或庫,這些代碼庫沒有包含在訓練數據集中。人們仍在探索大型語言模型(LLM)能為程序員做些什么。
原文標題:How to write better code with ChatGPT,作者:Ben Dickson