現(xiàn)在好幾個(gè)大公司都推出了自家的大語(yǔ)言模型,有的參數(shù)比GPT多,但是真正能稱得上會(huì)編程的,大概只有GPT一個(gè),可以說(shuō)是OpenAI的獨(dú)門功夫。
這篇文章旨在探討GPT輔助編程過(guò)程中常用的提示和技巧。當(dāng)然,我自己也是一邊學(xué)一邊演練,一邊演練一邊完成的這篇博客內(nèi)容。歡迎大家在評(píng)論區(qū)補(bǔ)充更多的用法。 祝大家都能用好ChatGPT這把趁手的兵器,大大提高效率~
推薦閱讀:建議收藏:超詳細(xì)ChatGPT(GPT 4.0)論文潤(rùn)色指南+最全提示詞/咒語(yǔ)
基礎(chǔ)篇——讓代碼編寫更簡(jiǎn)單
開(kāi)始之前
要讓ChatGPT更準(zhǔn)確地回答代碼相關(guān)的問(wèn)題,以下兩個(gè)提示詞用法值得記?。?/p>
1)始終確保你的問(wèn)題明確且具體。
2)試試看在提示詞后添加“請(qǐng)一步步思考”或“請(qǐng)務(wù)必認(rèn)真回答”等語(yǔ)句。這種方法有助于提高ChatGPT的回答精確度。只需要在提示語(yǔ)后面加上這些提醒,ChatGPT的回答就會(huì)有顯著的不同。
更多更細(xì)致的一些,針對(duì)提示詞設(shè)計(jì)層面的一些方法,也可以參考我的另外一篇文章,有一些方法是通用的。
建議收藏:超詳細(xì)ChatGPT(GPT 4.0)論文潤(rùn)色指南+最全提示詞/咒語(yǔ)
代碼理解
假如一家新公司,或者上手一個(gè)新項(xiàng)目,面對(duì)業(yè)務(wù)復(fù)雜、代碼量大的場(chǎng)景,有時(shí)候你需要用ChatGPT作為你的編程顧問(wèn),幫你快速梳理出代碼的邏輯。
代碼解釋
提示:這段代碼主要用于[如果能給出具體的場(chǎng)景更好],我初步接觸這段代碼,需要快速讀懂,您作為有著多年開(kāi)發(fā)經(jīng)驗(yàn)的軟件開(kāi)發(fā)工程師,請(qǐng)幫我詳細(xì)梳理出代碼的主要流程,用小標(biāo)題 + 代碼解釋/作用/原理 +代碼片段的形式給出。
注意,之所以這里用“小標(biāo)題 + 代碼解釋/作用/原理 +代碼片段”的形式,是因?yàn)檫@種方便自己做筆記整理,大家可以按照自己想要的形式來(lái)。
記憶檢測(cè)
注意,由于ChatGPT的記憶有窗口限制,因此,在交流一段時(shí)間之后,如果還需要對(duì)原始代碼進(jìn)行繼續(xù)提問(wèn),那么可以用下面這個(gè)方法來(lái)檢測(cè)最初的那個(gè)問(wèn)題它是否還記得,如果不記得的話,就得重新輸入,保證它的回答不會(huì)跑偏。
提示:為了怕你忘記,檢查你一下,你還記得咱們剛剛討論的是哪個(gè)代碼嗎,請(qǐng)給出[代碼名稱或者函數(shù)名稱]的原始實(shí)現(xiàn)。
核心線索
有時(shí)候?qū)τ邶嬰s的代碼,或者復(fù)雜的SQL查詢,你需要梳理出核心線索。
提示:這個(gè)SQL查詢中,涉及的表過(guò)多,我有點(diǎn)亂,請(qǐng)幫我梳理出一條核心的線索,幫助我更好的讀懂它。
代碼優(yōu)化
向ChatGPT尋求代碼優(yōu)化建議,以提高代碼可讀性和可維護(hù)性。
提示:如何重構(gòu)以下Python代碼,使其更易讀和可維護(hù)?
[在這里粘貼你的代碼]
注意,為了更加清晰看出修改之后的代碼??梢杂靡韵绿崾荆?/strong>
提示:[這里放你的要求], 請(qǐng)你幫忙修改,不涉及修改的代碼省略即可。
下面的所有用法同理。
這樣GPT給出的答案就會(huì)更加清晰易讀。更重要的事,解決「因?yàn)榇a過(guò)長(zhǎng)導(dǎo)致無(wú)法一次性輸出完整」的煩惱。
代碼改寫
有時(shí),你可能需要將某個(gè)功能的代碼從一種編程語(yǔ)言改寫為另一種。這時(shí),你可以請(qǐng)ChatGPT幫忙。
提示:我有這個(gè)JavaScript函數(shù),需要將其改寫為Python。你能幫我完成轉(zhuǎn)換嗎?
[在這里粘貼你的JavaScript函數(shù)]
Code Review
菜菜的自己在代碼被大佬Code Review之前,終于有了一個(gè)得力的Code Review助手!
讓ChatGPT審查你的代碼并提供改進(jìn)建議。
提示:請(qǐng)審查以下Java代碼并提供改進(jìn)建議。
[在這里粘貼你的代碼]
錯(cuò)誤排查
假設(shè)你有一段Java代碼,其中存在一些錯(cuò)誤,你可以請(qǐng)ChatGPT幫助你找出并糾正這些錯(cuò)誤。
提示:我有以下一段帶有錯(cuò)誤的Java代碼。你能幫我找出并糾正這些錯(cuò)誤嗎?
[在這里粘貼你的Java代碼]
深度交互
在與ChatGPT交互時(shí),有時(shí)需要多次往返才能得到滿意的結(jié)果。例如,你可能在調(diào)試一個(gè)復(fù)雜的Python算法:
用戶:我在這個(gè)Python算法中遇到了問(wèn)題。它沒(méi)有給我預(yù)期的輸出。你能幫我找出問(wèn)題所在嗎?
[在這里粘貼你的Python算法]
ChatGPT可能會(huì)首先提供一些建議。如果這些建議仍不能解決問(wèn)題,你可以繼續(xù)與ChatGPT交流,直至找到問(wèn)題的根本原因。
用戶:我嘗試了你的建議,但問(wèn)題仍然存在。你能再看一下,提供更多見(jiàn)解嗎?
通過(guò)與ChatGPT進(jìn)行深度交互,你可以充分利用其能力,提高編程效率。
升級(jí)篇——理解復(fù)雜的業(yè)務(wù)需求
實(shí)際工作中的業(yè)務(wù)往往是復(fù)雜的,代碼與代碼之間有著多種關(guān)聯(lián)關(guān)系,這個(gè)時(shí)候,如何使用ChatGPT解決復(fù)雜的業(yè)務(wù)需求,需要一點(diǎn)體力活。
首先,你需要了解你的業(yè)務(wù)邏輯。確保你明白每個(gè)模塊的工作原理,每個(gè)函數(shù)的輸入和輸出,以及它們之間的相互關(guān)系。這是解決復(fù)雜問(wèn)題的第一步。
其次,嘗試將復(fù)雜的問(wèn)題分解為一系列小問(wèn)題。ChatGPT在處理小問(wèn)題上表現(xiàn)得更好,因此,將大問(wèn)題分解為小問(wèn)題可以提高其解決問(wèn)題的準(zhǔn)確性。
以一個(gè)電商應(yīng)用的訂單管理系統(tǒng)作為例子。假設(shè)我們需要ChatGPT幫助我們?cè)O(shè)計(jì)一個(gè)新的訂單分派功能,此功能需要將新訂單分派給對(duì)應(yīng)的倉(cāng)庫(kù)處理。
我們可以將這個(gè)復(fù)雜問(wèn)題分解為以下幾個(gè)小問(wèn)題:
-
確定倉(cāng)庫(kù):確定哪個(gè)倉(cāng)庫(kù)應(yīng)處理訂單,這可能取決于產(chǎn)品庫(kù)存和訂單的發(fā)貨地址。
-
分派訂單:一旦確定了倉(cāng)庫(kù),我們需要在系統(tǒng)中分派訂單到選定的倉(cāng)庫(kù)。
-
確認(rèn)訂單:倉(cāng)庫(kù)接收訂單后,需要確認(rèn)并開(kāi)始處理。
-
訂單狀態(tài)更新:在訂單的整個(gè)生命周期中,我們需要跟蹤并更新訂單的狀態(tài)。
針對(duì)每個(gè)小問(wèn)題,我們可以分別向ChatGPT尋求解決方案。例如:
用戶:我正在設(shè)計(jì)一個(gè)訂單管理系統(tǒng)。我需要確定如何將訂單分配給倉(cāng)庫(kù)。我們應(yīng)該考慮什么因素來(lái)確定哪個(gè)倉(cāng)庫(kù)處理訂單?
ChatGPT可能會(huì)給出以下答案:
ChatGPT:在確定訂單應(yīng)該分派給哪個(gè)倉(cāng)庫(kù)時(shí),你應(yīng)該考慮以下因素:
庫(kù)存:你應(yīng)該查看每個(gè)倉(cāng)庫(kù)的庫(kù)存,看看他們是否有足夠的商品來(lái)滿足訂單。
發(fā)貨地址:你應(yīng)該考慮訂單的發(fā)貨地址和每個(gè)倉(cāng)庫(kù)的位置。通常,最接近發(fā)貨地址的倉(cāng)庫(kù)可以更快地完成訂單。
倉(cāng)庫(kù)的訂單處理能力:某些倉(cāng)庫(kù)可能已經(jīng)忙于處理其他訂單,因此你也應(yīng)該考慮倉(cāng)庫(kù)的訂單處理能力。
根據(jù)這個(gè)回答,你就可以開(kāi)始設(shè)計(jì)你的訂單分派邏輯了。同樣地,你也可以針對(duì)上述其他小問(wèn)題提問(wèn),從而得到解決方案。通過(guò)將大問(wèn)題分解為小問(wèn)題,你就可以充分發(fā)揮ChatGPT的能力,解決復(fù)雜的業(yè)務(wù)需求。
工具篇——自動(dòng)化代碼提示、對(duì)話
GitHub Copilot
強(qiáng)烈推薦使用?。?!
對(duì)于一些簡(jiǎn)單的編程任務(wù),GitHub Copilot提供了交互體驗(yàn)更好的代碼推理。
由于目前Copilot X還沒(méi)有開(kāi)放使用,因此Copilot最重要的功能仍然是補(bǔ)全代碼。
1)在寫代碼前,先寫注釋
給出核心思路,Copilot會(huì)自動(dòng)進(jìn)行代碼補(bǔ)充,然后可以自行校驗(yàn),或者將給出代碼補(bǔ)充,交給ChatGPT-4進(jìn)行校驗(yàn)。
例如,對(duì)于Spring定時(shí)任務(wù),需要在@Scheduled注解中給出CRON表達(dá)式,只需要像下面一樣先寫上注釋即可。
2) 自動(dòng)注釋,反向理解代碼文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-470904.html
同樣的道理,對(duì)于不理解的代碼,可以用Copilot注釋補(bǔ)全的方式,嘗試?yán)斫獯a。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-470904.html
到了這里,關(guān)于讓ChatGPT成為你的編程助手——從繁雜的工作中解放自己的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!