天天看點

GitHub重磅程式設計助手Copilot X上手體驗

作者:閃念基因

作者:nicky

最近科技圈是真熱鬧,各大公司相繼釋出了自家的人工智能新産品,ChatGPT、GPT4、文心一言、Bard。微軟更是接二連三地宣布将 GPT-4 應用到 Bing 搜尋引擎、Edge 浏覽器、Office 全家桶中。3 月 22 日其旗下代碼托管平台 GitHub 再次釋出重磅“炸彈”:GitHub Copilot X。

Copilot X 是對 2021 年釋出的 Copilot 進行了更新,接入 GPT-4,并新增了聊天和語音等功能,在 Copilot X 中,你隻需“動動嘴”,它就能把你的代碼寫了,順便幫你把測試用例也寫了,還能給你解釋你看不太懂的代碼片段,更能直接讓它幫你 DeBug,簡直是程式員的貼心小助手。接下來就帶着大家了解一下 Copilot X 并上手體驗一番。

從 Copilot 到 Copilot X

GitHub Copilot

GitHub Copilot 誕生

早在 2021 年 GitHub 和 OpenAI 就合作開發了一個面向程式員的生産力提升工具 Copilot,使用者可以在使用 Visual Studio Code、Microsoft Visual Studio、Vim 或 JetBrains 內建開發環境時通過 Copilot 自動補全代碼,主要面向 Python、JavaScript、TypeScript、Ruby 和 Go 等程式設計語言。可以協助程式員完成自動補全代碼塊或方法或函數、以及消除重複代碼,甚至根據代碼注釋生成可運作代碼。

GitHub重磅程式設計助手Copilot X上手體驗

GitHub Copilot 底層模型

Copilot 底層的 AI 模型 由 OpenAI Codex 提供支援,OpenAI Codex 是基于 GPT-3 修改後的版本(GPT-3 是一種使用深度學習生成類人類文本的語言模型)。接受了一系列英語語言、公共 GitHub 存儲庫和其他公開可用源代碼的訓練,包括來自 5400 萬個公共 GitHub 存儲庫的 159 GB 代碼的資料集。

GitHub Copilot 釋出

2021 年 6 月 29 日 GitHub 對外正式釋出 GitHub Copilot,很快就吸引了衆多開發者使用,根據 GitHub 的資料,截至上個月,Copilot 已參與到微軟全體雲代碼倉庫中的 46%,幫助開發人員将程式設計速度提高了 55%。

GitHub重磅程式設計助手Copilot X上手體驗

GitHub 的研究還表明,使用 GitHub Copilot 的開發人員中有 90% 表示可以更快地完成任務,其中 73% 的開發人員能夠更好地保持順暢并節省精力,高達 75% 的開發人員感到更有成就感,并且能夠專注于更令人滿意的工作。

GitHub重磅程式設計助手Copilot X上手體驗

GitHub Copilot X

GitHub Copilot X 釋出

随着 OpenAI 的 GPT-4 模型的釋出,GitHub 緊接着就釋出了新版本的 GitHub Copilot X,Copilot X 的 AI 模型采用的是最新 OpenAI GPT-4,畢竟 GitHub 是微軟的親兒子。GitHub Copilot X 緻力于改進開發者體驗,将提供聊天和語音界面,支援拉取請求,回答文檔問題,并通過 GPT-4 實作更個性化的開發者體驗。使用 GitHub Copilot X,它可以解釋代碼的用途,還可以在遇到 bugs 時讓 Copilot X 嘗試去修複它,甚至還可以順帶生成單元測試。

GitHub重磅程式設計助手Copilot X上手體驗

GitHub Copilot X 願景

GitHub 官方部落格中提到 Copilot X 是 GitHub 對人工智能軟體開發未來的願景。希望能內建到開發人員工作流程的每個部分中。GitHub Copilot X 的目标是為每個團隊、項目和代碼庫提供個性化的開發體驗,讓開發者更高效地開發軟體,提高工作滿意度。

GitHub重磅程式設計助手Copilot X上手體驗

Copilot X 核心功能體驗

Copilot X 中的 X 代表什麼

GitHub 官網中有提到 GitHub Copilot X 中的 X 代表什麼?其實“X”代表一個占位符,表示希望 GitHub Copilot 可用的位置,以及期望它能夠做什麼(例如“Copilot for pull”、“Copilot for security”)。它将産品從單一體驗、代碼完成擴充到跨開發人員工作流程的 X 體驗。此外,“X”表示我們打算對開發人員成就産生的影響程度。

這次 GitHub 推出的 Copilot X 包括如下功能:

  1. Copilot Chat 聊天功能:在編輯器中內建與 VS Code 和 Visual Studio 的聊天界面,幫助開發者深入分析代碼、生成單元測試和修複 bug,讓你可以邊寫代碼邊聊天。
  2. Copilot Voice 語音功能:允許開發者通過口頭指令進行自然語言陳述意圖,然後讓 Copilot Voice 完成生成代碼片段的繁重工作。
  3. Copilot For Pull Requests 支援 PR 功能:幫助開發者更好的編寫 PR 描述,并幫助團隊更快地審查和合并 PR。
  4. Copilot CLI 終端 CLI 工具:将自然語言翻譯成終端指令。
  5. Copilot For Docs 文檔工具:能夠回答有關軟體文檔的問題,使開發人員免于搜尋大量文檔。初步支援 React、Azure Docs 和 Mozilla Developer Network (MDN) 文檔查詢。

Copilot Chat

其實可以這樣簡單的了解 Copilot Chat = Copilot + ChatGPT,Copilot Chat 就是給 Copilot 加上了聊天對話功能并嵌入到 IDE 中,Copilot Chat 專注于開發人員場景,并與 VS Code 和 Visual Studio 原生內建。它可以識别開發人員輸入了哪些代碼,顯示了哪些錯誤消息,并将其嵌入到 IDE 中。開發人員可以深入分析和解釋代碼塊的用途,生成單元測試,并對 bug 給出修複建議。

GitHub重磅程式設計助手Copilot X上手體驗

相比舊版的 Copilot,新版的 Copilot Chat 也能識别開發者輸入的代碼,比如下面示例中,選中一行代碼,讓 Copilot Chat 解釋代碼的作用:

GitHub重磅程式設計助手Copilot X上手體驗

我們實際上手來一些接地氣的例子:

  1. 首先我們讓 GitHub Copilot 根據代碼注釋幫我們生成一個程式員面試必備的接雨水的代碼。
GitHub重磅程式設計助手Copilot X上手體驗
GitHub重磅程式設計助手Copilot X上手體驗

然後我們直接 Accept Solution 生成代碼,讓它繼續幫我們生成測試代碼,可以看到它很貼心的幫我們生成了一堆測試用例,你可以根據自己的喜好選擇一個。

GitHub重磅程式設計助手Copilot X上手體驗
GitHub重磅程式設計助手Copilot X上手體驗
  1. 更厲害的是它還可以幫你進行不同程式設計語言間的翻譯轉換。
GitHub重磅程式設計助手Copilot X上手體驗
GitHub重磅程式設計助手Copilot X上手體驗

當然,Copilot 的能力還遠不如此,還有更多的功能等待你去探索,希望它能成為大家工作中得力的助手。

Copilot Voice

顧名思義,是的就是動動嘴皮子,讓 Copilot 幫你來寫代碼,Write code without the keyboard。

GitHub重磅程式設計助手Copilot X上手體驗

除了編寫代碼,Copilot Voice 還可以進行更多的操作:代碼跳轉、控制 IDE、代碼總結。

GitHub重磅程式設計助手Copilot X上手體驗

Copilot For Pull Requests

維護過開源項目,或者用 Git 進行團隊協作的同學應該知道,規範化送出 Pull Request(PR) 對于項目開發者來說,到底有多重要。一個好的 pull request 描述能讓代碼審查者一目了然,可以幫助審閱者快速了解你的代碼變動情況,減少項目合并出錯的可能性,并提升溝通效率,并可以幫助你的團隊的其他成員跟上進度。

是以為了滿足開發人員的需求,Copilot 建構了一項功能,允許開發人員在他們的拉取請求描述中插入标記标簽。儲存描述後,Copilot(由 OpenAI 的新 GPT-4 模型提供支援)會根據标記動态提取與分析代碼的變更資訊,自動生成描述。然後開發人員可以檢視或修改建議的描述。

支援的标記,主要有以下幾種:

  • copilot:summary生成一段摘要總結。
  • copilot:walkthrough詳細的更改清單,包括指向相關代碼片段的連結。
  • copilot:poem寫一首詩來描述本次改動。
  • copilot:all自動生成以上所有内容。
GitHub重磅程式設計助手Copilot X上手體驗

随着後續産品的更新疊代,未來,Copilot 還會新增 Gentest 和 Ghost Text 的兩大功能。

  • Gentest:當 Copilot 發現送出的 Pull Request 缺少足夠的測試時,會自動提醒開發者,并根據項目需求建議可編輯、接受或拒絕的潛在測試。對于項目所有者來說,這個功能還可以幫助他們去制定關于測試的政策,同時支援開發者遵循這些政策。
GitHub重磅程式設計助手Copilot X上手體驗
  • Ghost Text:當開發者建立 Pull Request 時,Copilot 會動态地擷取代碼更改的相關資訊,并自動給出建議。
GitHub重磅程式設計助手Copilot X上手體驗

此外,GitHub 正在進行的其他探索和實驗包括:

  • 用 AI 解決問題:可以自動描述如何解決問題,甚至自動建議需要進行的更改。

如下,在送出了轉移到 PyTorch 的問題後,新功能可以提供生成代碼建議,并發起新的 Pull Request。

GitHub重磅程式設計助手Copilot X上手體驗
  • 用 AI 審查 PR:由于大量的開發人員将時間花費在代碼審查,以及為代碼審查準備 PR 上,這一功能就可以減少審查花費的周期。
GitHub重磅程式設計助手Copilot X上手體驗

估計再過不久,AI 就能幫你自動調整代碼、完善 PR、修複 Bug 了。

Copilot CLI

影視劇中經常有黑客在電腦螢幕黑視窗前噼裡啪啦的不停地敲着一大串的指令,确實非常的酷炫。而在實際中,開發人員真的很難記住那麼多複雜的指令,不過不用怕,Copilot CLI 它來了,它帶着這 3 個指令來了:?? 、git? 和 gh?

  • ??可以作為任意 shell 指令的通用 goto,在該指令後面輸入相關描述,Copilot 便會列出最适用該描述的具體指令。

比如,你不清楚如何列出所有 JavaScript 檔案,隻需要輸入:

>  ?? list js file
           

Copilot CLI 便會提供可參考的指令以及描述,如果不滿意,還能進一步更改描述。确定之後,在終端選中 Run this command,然後按下回車即可。

GitHub重磅程式設計助手Copilot X上手體驗
  • git?用于專門搜尋以及調用git。

相比??, 它在生成 Git 指令方面要強大許多。如果你明确要用的是 Git 指令,那可以優先選擇使用這個。

GitHub重磅程式設計助手Copilot X上手體驗
  • gh? 結合了 GitHub CLI 指令的靈活性與查詢界面的便捷性,讓搜尋變得更加快捷、資訊展示更為清晰。
GitHub重磅程式設計助手Copilot X上手體驗

Copilot For Docs

很多開發人員在閱讀官方技術文檔時一定都遇到過這些問題:文檔内容過于基礎、過于粗略或者相關資訊被拆分到多個頁面上,其中充滿了不相關的細節。

Copilot for Docs 就是用來幫助開發者解決上述這些問題的,Copilot for docs 通過定制的摘要為問題呈現最相關的内容,有助于将這些點聯系起來,進而避免了開發人員搜尋大量文檔,更快地為開發人員提供所需資訊,包括開發者關于他們正在使用的語言、架構和技術的問題。

GitHub 稱,其将從 React、Azure Docs 和 MDN 的文檔開始,以便能夠與這些項目的開發者和使用者一起快速學習和疊代。GitHub 正在使用 AI 掃描這些開源存儲庫,以幫助開發人員獲得答案,是以它的聊天生成的代碼内容會比 GPT-4 所基于的訓練資料集更新一些。

GitHub重磅程式設計助手Copilot X上手體驗

比較厲害的是 Copilot for Docs 的個性化内容。它可以根據使用者的不同程式設計水準,對該文檔的了解程度,以及想要查找的内容,輸出不同的答案。

GitHub重磅程式設計助手Copilot X上手體驗

而且開發人員還可以直接從 GitHub repo 上擷取最新内容檔保持同步。并在現有的 GitHub 權限基礎上提供隻有自己内部團隊可以看到的資訊,可以輕松回答有關團隊私有内容的問題。

GitHub重磅程式設計助手Copilot X上手體驗

Copilot X 對軟體開發的影響及程式員如何應對

看了以上那麼多 Copilot X 強大的功能,程式員也得大呼:”家裡水晶被偷了!“

其實從 ChatGPT 出圈以來,大家對 AI 是否會取代人類工作的讨論已經非常多了,這裡就不再贅述了,僅僅簡單談一談 Copilot X 對軟體開發行業影響的看法以及程式員該如何應對這場危機:

  • Copilot X 對軟體開發行業影響
  1. 面向智能軟體程式設計成為趨勢,正如電腦成為都市白領打勞工的标配,Copilot X 之類的程式設計輔助工具也将成為越來越多軟體開發人員稱心如意的越來越離不開的助手,讓自己的工作更加高效和順暢。
  2. 軟體開發者的核心工作不再是編碼,簡單重複的占用大多時間的編碼不再是開發人員的主要工作,了解和解決問題、設計和架構系統、優化性能和安全性等會變成程式員的更重要的工作。
  3. 軟體開發的門檻更低,Copilot X 可以讓更多對軟體開發感興趣的人更加輕松的參與到軟體開發工作中,同時,它提高了程式設計效率和品質,使我們可以在更短的時間内完成更多的工作,它還能幫助我們更好地協作和溝通。
  4. 超大規模的軟體項目管理成為可能,Copilot X 的意義不僅僅局限于單個開發者。這個突破性的工具可以通過簡化工作流程、減少錯誤和實作更快的開發周期來重塑整個行業。

展望未來,AI 程式設計助手在軟體開發領域的前景是無限廣闊的。它不僅可以持續更新,克服更多挑戰,還可以與其他 AI 技術結合,拓展更多的應用場景。

  • 程式員如何應對 Copilot X 帶來的職業危機感

通過前面的文章我們已經體驗到了 GitHub Copilot X 的強大并能預見到它将對未來的軟體開發行業産生巨大的影響,那麼作為普通的程式員,我們該如何提升那方面的能力才能應對這場職業危機呢?

  1. 首先,我們要接受事實,GitHub Copilot X 等 AI 輔助程式設計産品是不可避免的,我們無法阻止技術的發展,作為程式員我們應該接受這個事實,并積極地去擁抱變化,去接受它去使學習它使用它,并讓它提高你的生成效率。
  2. 其次,我們需要提升自身能力,我們需要知道程式員的核心競争力究竟是什麼?是每天送出幾百行、上千行代碼嗎?答案肯定不是,現在和未來的很長一段時間内,程式員的工作模式會成為按照業務需求進行設計拆解并輸入提示詞,讓 GitHub Copilot X 之類的 AI 幫你生成代碼,然後由你進行驗證和修複,讓代碼能夠正常運作,是以程式員首先要提升的是業務了解、需求拆分、架構設計等方面的能力。
  3. 最後,我們需要學會與 AI 合作,讓程式員+AI 形成 1+1>2 的效果,比如我們要學會當然還有編寫提示詞的能力!有人可能會說,編寫提示詞不就是會打字就行嗎?非也,一個好的提示詞,能讓 AI 快速準确的生成你想要的代碼,比如你要在提示詞中定義好需要完成的功能、對任務進行拆分、确定輸入輸出、表達準确避免歧義等等,是以提示詞的編寫本身就會變得十分的重要,未來程式員的第一課可能并不是學習 xx 程式設計語言,而是如何編寫提示詞。

總之,GitHub Copilot X 的出現給程式員帶來了一定的沖擊,但是我們應該以積極的态度去面對它,提高自身能力,與它合作,進而更好地适應技術的發展。

附:GitHub Copilot X 申請使用教程

說了這麼多 GitHub Copilot X 的新 feature,是不是有點迫不及待想要上手試一試呢?目前 GitHub Copilot X 剛剛推出不久,想要搶先體驗,需申請加入等待名單隊列中,成功排上隊之後就可以暢玩了。

具體的步驟如下:

  1. 注冊 GitHub 賬号https://github.com/signup
  2. 申請試用

Copilot Chat: https://github.com/github-copilot/chat_waitlist_signup/

Copilot Voice: https://githubnext.com/projects/copilot-voice/

Copilot for Docs: https://githubnext.com/projects/copilot-for-docs/

Copilot for PRs: https://githubnext.com/projects/copilot-for-pull-requests/

Copilot CLI: https://githubnext.com/projects/copilot-cli/

  1. 安裝代碼編輯器如 Visual Studio Code、Microsoft Visual Studio、JetBrains 等
  2. 安裝 GitHub Copilot 插件以 Visual Studio Code 為例(下載下傳 VS Code https://code.visualstudio.com/ )進入 VS Code 的 Extensions 面闆(快捷鍵 Ctrl+Shift+X),在搜尋框中輸入“GitHub Copilot”并回車,在搜尋結果中找到“GitHub Copilot”插件并選擇相應的插件點選安裝。
  1. 登入 GitHub 賬号:安裝完成後,單擊 VS Code 底部狀态欄中的 GitHub Copilot 圖示,進入 GitHub Copilot 面闆。首次使用需要登入 GitHub 賬戶,可以選擇使用 GitHub 賬戶登入或者輸入 Personal Access Token 登入。
  2. 使用 GitHub Copilot 插件:在編輯器中輸入關鍵字或者語句時,GitHub Copilot 會自動出現一個提示框,使用者可以選擇其中的建議代碼或者繼續輸入以獲得更多的建議。使用者可以通過快捷鍵或者指令面闆啟動 GitHub Copilot,具體方法可以檢視編輯器插件的幫助文檔。
  3. 确認和編輯代碼:GitHub Copilot 生成的代碼不一定完全符合使用者的需求,是以使用者需要對生成的代碼進行确認和編輯。使用者可以通過按下Enter鍵或者 Tab 鍵來接受或者拒絕 GitHub Copilot 的建議代碼,也可以手動編輯代碼以符合自己的需求。
  4. Copilot 也提供了一些快捷鍵,可以很友善地使用。
  5. 接受建議:Tab
  6. 拒絕建議:Esc
  7. 打開 Copilot:Ctrl + Enter (會打開一個單獨的面闆,展示 10 個建議)
  8. 下一條建議:Alt/Option + ]
  9. 上一條建議:Alt/Option + [
  10. 觸發行内 Copilot:Alt/Option + \ (Coplit 還沒有給出建議或者建議被拒絕了,希望手工觸發它提供建議)
  11. 一些使用技巧:Copilot X 是一款基于人工智能技術的代碼生成工具,它可以為程式員提供更高效的編寫代碼的方式。下面是一些使用技巧:
  12. 确定上下文:在使用 Copilot X 之前,需要确定目前需要編寫的代碼的上下文,包括程式設計語言、函數、類等等。這樣可以幫助 Copilot X 更好地了解你的需求,進而生成更準确的代碼。
  13. 使用良好的注釋:在編寫代碼時,建議使用良好的注釋,這可以幫助 Copilot X 更好地了解你的代碼,進而生成更準确的代碼。
  14. 給出明确的指令:在使用 Copilot X 時,需要給出明确的指令,比如輸入函數名、變量名等等。這樣可以幫助 Copilot X 更好地了解你的需求,進而生成更準确的代碼。
  15. 不斷嘗試:Copilot X 是一款基于人工智能技術的工具,它的生成結果可能并不總是準确的。是以,我們需要不斷嘗試,比較不同的生成結果,進而找到最優的方案。
  16. 結合自己的思考:雖然 Copilot X 可以生成大部分代碼,但是在某些情況下,我們仍然需要自己思考,比如算法的實作、架構設計等等。是以,在使用 Copilot X 時,需要結合自己的思考,進而更好地完成編碼任務。總之,Copilot X 是一款非常有用的代碼生成工具,但是它并不能完全取代程式員的工作。是以,在使用它時,需要結合自己的思考和經驗,進而更好地完成編碼任務
  17. Http 代理

有些使用者可能會遇到 Copilot 不工作的問題,原因是 Copilot 無法通路網際網路或 Github api。你可以在輸出面闆上看到以下錯誤資訊:GitHub Copilot could not connect to server. Extension activation failed: "connect ETIMEDOUT xxx.xxx.xxx:443"。

在這種情況下,你需要設定 http 代理。

首先,擷取你的 http 代理資訊。你可以向你的網絡管理者詢問代理位址和端口,或者如果你使用代理軟體,你可以在代理軟體設定中找到代理位址和端口。

下面是一個使用代理軟體"ClashX"的例子,你可以在"設定"标簽中找到代理位址和端口,代理位址是 "127.0.0.1:1080"。

GitHub重磅程式設計助手Copilot X上手體驗

然後,打開 VSCode 的設定,搜尋http.proxy,并設定代理位址和端口。

GitHub重磅程式設計助手Copilot X上手體驗

設定完成後,重新啟動 VSCode,Copilot 應該可以正常工作。

作者:nicky

來源:微信公衆号:騰訊技術工程

出處:https://mp.weixin.qq.com/s/BAzOuxjUongX0U3H4gYvYQ

繼續閱讀