目錄
01?背景
福利:文末有chat-gpt純分享,無魔法,無限制
02?AI 可以幫助程序員做什么?
?? 2.1 技術知識總結
?? 2.2 拆解任務
?? 2.3 閱讀代碼/優化代碼
?? 2.4 代碼生成
?? 2.5 生成單測
?? 2.6 更多 AI 應用/插件
AIPRM
Voice Control for ChatGPT
ChatGPT Sidebar
著名應用工具使用體驗:Bing Copilot、ChatGPT、Google Bard
Google Bard (LaMDA):Google 近期發布的AI工具目前只支持英文。特點是能夠給出多個回答,而且響應速度很快。集成了 Google it,點擊之后會幫你生成一個最適合你的問題的 google 搜索關鍵詞。這算是和 Bing Copilot 反其道而行之,一個是將 chat 集成到搜索里,一個是將搜索集成到了 chat 中。
03?Prompt 能力
?? 3.1 Prompt 是什么?
?? 3.2 Better Prompt
開發者可以利用它的上下文能力,幫助自己糾正語法以及提供更好的 prompt 的訓練。
04總結
01?背景
福利:文末有chat-gpt純分享,無魔法,無限制
尤記得每個月「本月全球最流行編程語言」發布的時候,都會在程序員屆掀起腥風血雨。“Java 下降了一名,怎么可能”、“JavaScript 又占據榜首,門檻太低,寫個腳本就算用了嗎?”、“C# 這種單平臺語言也就是閉環生態內的產物了” 這類言論層出不窮,大家也都樂此不疲,已然是以前的流量密碼。
然而這一切現在似乎已經悄悄變化了。大家開玩笑說現在使用的最多的編程語言,已經是英語(自然語言)了。
現在 GPT 已經開啟了人工智能狂潮。在社交圈里不聊上兩句 ChatGPT,感覺不只是要和時代脫節,更是已經被開除 IT 籍了 ~
筆者在 2022 年 12 月初開始體驗 ChatGPT。一開始我向它提一些有趣的問題,例如“告訴我 TCS 相關的知識”等等。相信絕大多數人一開始使用的時候都是如此,那時候互聯網上認為它的功效應該是代替知乎,讓 ChatGPT 作為問答知識類的平臺。知乎已死的聲音甚囂塵上。
后來大家又發現,它的很多回答都是胡編亂造的。例如你問它一些新上映的電影,它即使不知道也會胡編亂造一通。大家又開始貶低它,覺得只不過就是一個普通的聊天機器人,還是尬聊型選手。
去年相關的論文的分享介紹比較少,市面上的評價分析的角度還停留在認為 ChatGPT 只能針對已有知識進行總結,或者是平移。
但是隨著使用的人數越來越多,大家才知道,ChatGPT 與語言無關,你用任何語言去提問,它都可以很好的理解你的意思。?因為它使用的是語言模型,而不是具體的某個語言庫。如果還用搜索引擎的“關鍵詞匹配”、“關鍵詞命中”思路去思考人工智能,就已經顯得有些落后了。本篇在介紹 AI對話工具能如何幫助程序員工作(干貨滿滿)之后,將為你分享AI的正確打開方式——better prompt。
02?AI 可以幫助程序員做什么?
?? 2.1 技術知識總結
剛開始接觸學習一門技術的時候,難免需要去查看文檔。現在的手冊非常豐富。往往對于一個初學者來說,需要接觸的信息太多、排版五花八門,學起來云里霧里。
這時候就可以借助 ChatGPT 的總結能力,例如我想學習一下 K8S 的相關知識,我發給它一個文檔的地址,讓它幫我總結。
prompt:? https://kubernetes.io/zh-cn/docs/concepts/overview/?總結這篇文檔。 |
可以看到,它很好地總結了這篇中文的文檔,并且對每一個關鍵點進行了概括。用最少的語言讓你能夠搞懂你想要的知識點。
因為 ChatGPT 是有上下文的,它知道你需要的內容是中文的總結,所以在這里你繼續發一篇英文的文檔給它,它也會用中文幫你總結。
prompt:? 總結這篇文檔https://kubernetes.io/docs/concepts/overview/components/?。 |
目前 chatgpt 的免費版本數據庫的截止時間是 2021 年,也就是說如果問它比較新的內容,它是無法總結的,甚至是會隨意編撰。例如這里詢問一個關于電影《流浪地球 2》的問題,讓它總結一下 wikipedia 里的介紹。?
prompt:?總結: https://zh.wikipedia.org/zh/%E6%B5%81%E6%B5%AA%E5%9C%B0%E7%90%832? |
因為這時候電影還沒有上映,所以之前的內容還都是錯誤的,它的總結是不準確的。
當我們將整個網站的內容復制進來,讓 chatgpt 進行總結。但是這時候會發現,文章太長了,會收到報錯。?
這時候,就要運用自己的想象力,使用 prompt 來進行突破了。我們需要把文章進行段落拆分,每一段都符合它的標準。
將內容拆分成 7 段,發送完成之后,它就會自動總結了。
這樣,才能得到了一篇文檔的正確總結。
?? 2.2 拆解任務
上文所描述的內容,可以算是借助 AI 讓程序猿日常生活效率提升。那么在工作當中,AI 如何幫助我們提效?
我們從需求端獲取一個需求以后,很多情況下我們的任務并不能夠非常準確的估計時,原因就是我們并沒有將任務拆分清楚,所以并不能夠對每一項任務進行估計,導致風險的發生。
這時候可以簡要描述一下我們這次的需求點,讓 ChatGPT 幫我們進行任務拆解。
可以看到任務整體被拆成了一個個細小的任務。它可以很快的讓我們將任務轉換為 task,或者是需求跟蹤單。這既方便和產品經理進行溝通,也便于我們自身排期。轉換成 KANBAN 模式也便于了解當前進度。
如果對方仍有疑問,可以繼續詢問拆解。比如我們想要詢問第三步應該如何進一步實現。可以看到它甚至給了我們具體的 UI 交互。我們可以利用這樣的提示對我們的交互以及實現提供一定的參考。?
?? 2.3 閱讀代碼/優化代碼
開發者經常接手別人的代碼。質量參差不齊,還會夾在很多奇怪的命名。當我們閱讀整體邏輯或者修改邏輯,可能會因為自身閱讀的問題造成理解偏差,進一步引發 bug。
如果將這個方法交給 AI 去閱讀呢?可以看看效果。
prompt:? 逐行解釋下面的代碼 + 代碼內容,?(在這里使用了一段在 github上面的開源代碼進行展示, 這段代碼是一段定時器相關的內容)。 |
可以看到 ChatGPT 正確的理解了我們的代碼,對代碼進行了解釋和說明。
但是這時候只是生成了一個整體的說明,并沒有對每一行分別進行解釋。這時候繼續和它對話:?
prompt:? 可以在每一行代碼上面加上注釋,便于我理解嗎? |
這時候它會逐行的進行代碼標注,便于你對每一行進行理解。如果你接著對它提出一個粗淺的優化需求,它也會照做。
prompt:? 這段代碼可以進行重構和優化嗎?邏輯有些繁瑣。 |
你可以對某一個部分提出更細節的要求,為它提出更好的優化方向。在這里我們提出了關于參數順序耦合的問題,可以看到 GPT 也理解到了我們的需求,并且做出了對應的優化,如下:
prompt:? children: (isCounting: boolean, durationTime: number, startCount: () => void) =>?React.ReactNode // 子組件,接收三個參數,返回一個React節點 這里面的參數太多了,而且對順序有強依賴,該怎么優化這里? |
?? 2.4 代碼生成
開發者在工作中還有一種場景的工作量比較大,需要復雜的邏輯思考。但是實際上最終的代碼可能只需要幾行就可以搞定。你在思考過程中覺得很痛苦,想和身邊的同事去溝通。也許你給他解釋完這個邏輯以后,他非但不能幫你思考,反而將一人份痛苦變成兩人份。
例如,我們要進行數據轉換,是否也可以交給AI來做?我們發送給 GPT 這樣的 prompt,將數據結構進行轉換。數據源為:
[{"candidates":?null,"candidatesX":?null,"description":?"role---用戶角色","label":?"角色","name":?"role","optional":?true,"schema":?null,"type":?"String"},
{"candidates":?null,"candidatesX":?null,"description":?"Topics of the pulsar server to create---需要創建的主題","items": {"schema": [{"candidates":?null,"candidatesX":?null,"description":?"topic name---主題名稱","label":?"主題名稱","name":?"name","schema":?null,"type":?"String"},{"candidates":?null,"candidatesX":?null,"default":?1,"description":?"partition number---分區數","label":?"分區數","name":?"partitions","schema":?null,"type":?"Integer","validator":?">0"}],"type":?"Object"},"label":?"主題列表","name":?"topics","optional":?true,"schema":?null,"type":?"List"}
]
我想要得到的數據是 type 為 List 的數據,并且數據結構為:
?
[
{type:List, name:"topics", needValidates:[{name:"name",?type:"String"
},{name:"partitions",?type:"Integer"}] }
]
GPT 會為我們得到正確的結果:?
我們只需要輸入目標數據結構,轉換后的數據結構,無需指定語言。因為它會從你的上下文里理解到你是想要問什么實現方式。
還有執行腳本,我們只需要描述清楚我們的需求,它也會幫助我們進行完善。
此外,它還可以進行進行解釋說明:
上面可以看到,我們在這里使用了一次“自然語言編程”的操作流程。不論你是否會使用 python、bash 你都可以正常的描述你的需求。進行生成。
我們還可以進行代碼轉換,例如你寫了一段 js 代碼,你希望將這段代碼轉化為python,以前我們會通過 Google 搜索看看有沒有對應的轉換器,現在就只需要交給 gpt 來執行。提出你的訴求,它會在 10s 內為你生成一段沒有 bug,包含異常處理的代碼。這里我們不展開舉例。
?? 2.5 生成單測
我們剛剛那段數據轉化的代碼,如果我們想要進行測試。以前我們可能會苦思冥想很多場景進行補充。現在只需要告訴 AI 幫我生成單測即可。
prompt:? (代碼內容)?為這段代碼生成 unit test。 |
如果你覺得測試條件不夠,那就再問它,讓它再生成。
prompt: 數據源不夠豐富,多測試集中邊界條件,比如數據不存在,數據類型無法轉換,數據類型不對等。 |
它還會給你解釋這里都做了什么操作,這些測試用例覆蓋了不同的場景,包括:
當數據源中沒有類型為 List 的字段時,應該返回空數組;當數據源中有類型為 List 的字段時,應該返回正確的字段數組,包括需要的驗證。
?? 2.6 更多 AI 應用/插件
AI 就像是一個基礎應用, 在它上面還有著很多的可能。隨著你用的越多,解鎖的技能也就越豐富。例如現在 GPT 系列甚至推出了自己的應用市場。下面我們來為各位簡單介紹幾款熱門插件:
-
AIPRM
它是 ChatGPT3.5 時代的應用商店。用戶通過不同的 prompt,對它進行訓練,達到自己的目的。
例如我們在文章最開始介紹的“長文總結”能力:我們普通的和它進行交流,那么字數限制就會成為瓶頸。但是如果我們轉化了溝通技巧,那么就可以突破這一限制。AIPRM 就是一個充滿了奇思妙想的插件系統,你可以在里面查找/發布各種你想要的 prompt。
-
Voice Control for ChatGPT
依托于這樣的系統,我們可以使用它鍛煉英文(偽需求)。或者是直接用語音和它進行對話,讓它替自己寫代碼,例如我們剛剛所有的腳本說明都可以讓它直接語音轉文字發出去。
它也很好的服務了一些視障人士,因為它還會讀出每一次 GPT 生成的內容。讓每個人都擁有平等接觸 AI的機會。
-
ChatGPT Sidebar
隨著使用的人越來越多,ChatGPT 的響應速度越來越慢。有時候只不過想問一個簡單的問題,卻要等上很久。這時候,就可以使用 ChatGPT Sidebar 插件。
它內置了 ChatGPT 的 API,可以直接集成在你的搜索引擎里,你的每一次搜索都會觸發(也可以設置為手動),免注冊,使用方便。還可以讓它提示你如何搜索相關的關鍵詞。
在它的側邊欄里,我們還可以進行其它的操作。
-
著名應用工具使用體驗:Bing Copilot、ChatGPT、Google Bard
那我們再回頭看看幾個影響力比較高的AI工具。筆者個人現常用的基礎 AI 工具大概有 3 種,分別是 Bing Copilot、ChatGPT、Google Bard。最被廣泛使用的 ChatGPT(GPT3-5),我們先來看看它的自我介紹是什么。
ChatGPT:使用頻率最高的 AI。它有強大的上下文,還可以拆分成為不同的 conversation,便于它處理不同的對話。
例如一個控制臺的項目,可以單獨做一個對話,這樣它聊的上下文都是圍繞這個主題進行,每次新的問答也無需補充上下文信息。
Bing?:Bing 在很早就使用了 GPT-4,可是因為對話數實在是太少了(從 5 次擴充到了 15 次),每一次對話的內容長度也很有限(截止目前仍只有 2000 字)?而且不能保存對話上下文,導致使用起來實在很不方便。好處是它是實時聯網的,所以作者主要用于搜索最新的資訊以及總結一些文章和文檔的摘要,以及輔助 ChatGPT 使用,對比一下兩遍生成的邏輯是否一致。優點就是,搜索結果會給出詳細的出處以及引用地址。
Google Bard (LaMDA):Google 近期發布的AI工具目前只支持英文。特點是能夠給出多個回答,而且響應速度很快。集成了 Google it,點擊之后會幫你生成一個最適合你的問題的 google 搜索關鍵詞。這算是和 Bing Copilot 反其道而行之,一個是將 chat 集成到搜索里,一個是將搜索集成到了 chat 中。
03?Prompt 能力
?? 3.1 Prompt 是什么?
整體來說,上述 AI 的強大之處有幾點:
總結/理解能力。它能夠很好的總結你發給它的內容,并且進行總結。其實這也就是一種理解能力。因為它明白了你說的話的意思。
具有強大的上下文關聯能力。你不需要像使用搜索引擎一樣,每一次的操作都是獨立的。你可以將整個對話都變成一個巨大的搜索,通過多次對話來闡述自己想要的信息。甚至還能讓它幫助你向它自己提問。
有豐富的拓展插件潛力。?
這些能力,相信各位讀者上面的case中都能感知。在上面案例中,為了更好使用AI、利用這些能力,我們頻繁使用了一個詞叫做 prompt——這在 AI 時代是一個非常重要的內容。
想要用好各類 AI 效率工具,最好的方法就是不斷的提升自己的 prompt 能力。prompt 就是提示詞,表達語言的能力。
在以前的開發生涯中, 我們是“Google 工程師”、?“StackOverflow 工程師”, 被戲稱為“面向搜索引擎開發”。?每次遇到未解之謎,我們通常會去不斷的更換搜索關鍵詞。?
這時候比拼的就是我們的語言表達能力了——我們需要轉換自己的思維,從工程師到產品經理,或者是一個 Business Analysis 的角色。我們需要將接到手的任務,進行拆解,一步步的變為提示詞。當你拆解到足夠細的時候,任務就自然而然可以依靠 AI 自動完成了。這個會在項目應用的章節進行具體講解。
?? 3.2 Better Prompt
開發者可以利用它的上下文能力,幫助自己糾正語法以及提供更好的 prompt 的訓練。
AI 是不挑語言的?不管你用任何一種語言,它都是利用數據模型進行分析,并不是用單一的語言進行思考。也就是說結果的生成質量不會差異很大。真的是這樣嗎?
實際上,我們通過官網的介紹發現,它對語言的理解是有差異的,目前理解力最強的當然是英文了。我們使用英文進行 prompt,既能鍛煉自己的英文能力,也能更好的表述自己的問題。可是受限于自身英文水平,我們并不一定每一次都能清晰表達自己的觀點,這時候我們可以利用它幫我們提高這一點。我們故意打錯一段話,來測試一下。
prompt: you need answer my question obey the format, format should be like this correct grammar is : "insert correct grammar here" ________________________________ (keep the diver line) you can also ask it like this: "insert better prompt here" ________________________________ then tell the answer about what i ask below the divier also keep the diver line. ? Correct grammar is should correct my question's grammar |
AI 的每一次訓練得到的返回結果都是不一樣的,我們有可能會得到自己想要的,但它也有可能沒有完全理解我們的意思。當我們的訴求沒被完全理解,可以對它進行進一步的訓練。
在它做對了以后,我們對它進行表彰。然后再去嘗試一下我們其它的問題。可以看到一切正常。
如果有時候它忘記了,你需要再提醒它一次 format。它就會重新輸出。
04總結
筆者使用 ChatGPT 等 AI 工具已經 4 個多月了。一開始只是進行簡單的嘗試,并沒有覺得有什么特別的。直到在瀏覽各類教程時,才發現那些以前分享金融知識的人已經開始利用 GPT 進行代碼創作來豐富自己的武器庫,比如進行圖標分析、軟件制作等等。實際上,AI 并不是簡單的問答而已,它具有解決問題甚至是創造知識的能力。
當然我在使用的過程當中,周圍也有很多聲音在質疑 AI 的能力。認為它并不能如想象的優秀。例如你直接跟它講,給我做個需求、給我寫篇論文,它都是無法完成的。
因為其實我們在錯誤地使用 AI。合理的使用,應該是「我們做我們該做的事情,AI 做 AI 該做的事情」。以前搜索引擎的時代,我們也并不是直接在搜索框里輸入 “給我答案” 吧?用戶要盡量描述清楚自己的問題。
現在對程序員的要求已然不是簡單的書寫代碼了。因為 AI 能做,甚至比你的代碼質量還要高。我們需要將自己的思維進行轉換,從程序員變成擁有產品思維的程序員、擁有 BA 思維的程序員。要對自己手里的任務、方法、邏輯,有更清晰的認知。讓人類做人類該做的事情,讓 AI 做它擅長的事情。
當你把你想要的內容清晰的描述出來以后,你會發現:AI 不是來替代你的,是來幫助你更好的工作的。以上是本次分享全部內容,歡迎大家在評論區分享交流。如果覺得內容有用,歡迎轉發~
充電君會在第一時間給你帶來最新、最全面的解讀,別忘了三聯一波哦
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?關注公眾號:資源充電吧
回復:Chat GPT
充電君發你:免費暢享使用中文版哦
點擊小卡片關注下,回復:IT
想要的資料全都有?
?