現已釋出!閱讀關於 11 月新增功能和修復的內容。

VS Code 中的提示工程

本文介紹了一些技巧,用於編寫提示以從 Visual Studio Code 中的 AI 獲取更好、更相關的響應。提示工程提示製作是討論 AI 時經常聽到的短語,指的是如何以及將哪些資訊打包傳送到 AI API 端點。

如果您是 VS Code 或 AI 新手,可以先查閱VS Code 中的 AI 概述文章,或直接開始學習入門教程。

充分利用內聯建議

內聯建議透過自動提供程式碼、註釋、測試等的建議來幫助您更高效地編寫程式碼。您可以採取一些措施來幫助(“提示”) AI 為您提供最佳建議。

提供上下文

當 AI 擁有足夠的上下文來了解您正在做什麼以及您需要什麼幫助時,它的工作效果最佳。就像您在請求同事幫助處理特定程式設計任務時會提供上下文一樣,您也可以為 AI 提供幫助。

開啟檔案

對於內聯建議,VS Code 會檢視您編輯器中當前開啟的檔案來分析上下文並生成合適的建議。在使用內聯建議時,在 VS Code 中開啟相關檔案有助於設定此上下文,讓 AI 能夠更全面地瞭解您的專案。

頂級註釋

就像您會向同事提供簡短、高層次的介紹一樣,在您正在處理的檔案中新增一個頂級註釋可以幫助 AI 理解您正在建立的程式碼塊的整體上下文。

適當的包含和引用

最好手動設定您工作所需的包含項或模組引用。AI 可以提供建議,但您最瞭解自己需要包含哪些依賴項。這也有助於讓 AI 瞭解您希望它在生成建議時使用的框架、庫及其版本。

在下面的 TypeScript 示例中,我們希望記錄 add 方法的輸出。當檔案中沒有任何包含項時,AI 會建議使用 console.log

當檔案中沒有匯入時,AI 內聯建議提出 Console.log。 另一方面,當您新增對 Log4js 的引用時,AI 會建議使用該框架來記錄輸出

AI inline suggestion proposes logging using the imported logging framework.

有意義的函式名稱

就像一個名為 fetchData() 的方法對同事(或幾個月後的您)來說意義不大一樣,fetchData() 對 AI 也無濟於事。使用有意義的函式名稱有助於 AI 生成您想要的程式碼。

具體且作用域明確的函式註釋

函式名稱在不至於過長的情況下只能描述這麼多。函式註釋可以幫助填充 AI 可能需要了解的詳細資訊。

為 AI 提供示例程式碼

讓 AI 更好地理解您想法的一個技巧是,將與您想要的內容相似的示例程式碼複製並貼上到開啟的編輯器中。提供一個小示例可以幫助 AI 生成與您想要實現的語言和任務相匹配的建議。一旦 AI 開始為您提供您想要並且實際上會使用的程式碼,您就可以從檔案中刪除示例程式碼。當 AI 預設提供舊版程式碼建議時,這對於啟動 AI 使用較新庫版本特別有用。

保持一致並保持高質量標準

AI 會借鑑您的程式碼來生成遵循現有模式的建議,因此“輸入垃圾,輸出垃圾”這句格言在這裡也適用。始終保持高質量標準可能需要自律。尤其是在您為了讓某項功能正常工作而快速編碼時,您可能希望在“駭客”模式下停用自動完成。要暫時暫停內聯建議,請在狀態列中選擇 Copilot 選單,然後選擇暫停按鈕將暫停時間增加五分鐘。要恢復內聯建議,請在 Copilot 選單中選擇取消暫停按鈕。

Screenshot of the Copilot menu in the Status Bar with Snooze and Cancel Snooze buttons.

充分利用聊天功能

使用聊天功能時,您可以採取多種措施來最佳化您的體驗。

新增相關上下文

您可以透過鍵入 # 後跟您想要提及的上下文項來顯式地向您的提示新增上下文。VS Code 支援不同型別的上下文項:檔案、資料夾、程式碼符號、工具、終端輸出、原始碼管理更改等。

在聊天輸入欄位中鍵入 # 符號,即可看到可用上下文項列表,或在聊天檢視中選擇新增上下文以開啟上下文選擇器。

例如,使用 #<檔名>#<資料夾名>,您可以在聊天提示中引用工作區中的特定檔案或資料夾。透過提供您正在處理的檔案上下文,這有助於使 Copilot Chat 的答案更符合您的程式碼。您可以提出類似“能否為 #package.json 建議一些改進?”或“如何在 #devcontainer.json 中新增擴充套件?”這樣的問題。

您可以使用 #codebase,讓 VS Code 自動從您的程式碼庫中查詢相關檔案,而不是手動新增單個檔案。當您不知道哪些檔案與您的問題相關時,這會很有用。

Screenshot of Chat view, showing the Attach context button and context Quick Pick.

詳細瞭解在聊天中使用上下文

具體且保持簡潔

當您讓聊天功能執行某項操作時,請在您的請求中具體說明,並將大型任務分解為單獨、較小的任務。例如,不要要求聊天功能建立一個 Express 應用,該應用使用 TypeScript 和 Pug,並且有一個從 MongoDB 資料庫檢索資料的產品頁面。相反,首先要求建立帶有 TypeScript 和 Pug 的 Express 應用。接下來,要求新增產品頁面,最後要求從資料庫檢索客戶資料。

當您要求聊天功能執行特定任務時,請具體說明您要使用的輸入、輸出、API 或框架。您的提示越具體,結果就越好。例如,不要說“從資料庫讀取產品資料”,而要說“按類別讀取所有產品,將資料以 JSON 格式返回,並使用 Mongoose 庫”。

迭代您的解決方案

當您向聊天功能尋求幫助時,您不必侷限於第一個響應。您可以迭代並提示聊天功能來改進解決方案。聊天功能既擁有生成程式碼的上下文,也擁有您當前對話的上下文。以下是一個使用內聯聊天建立計算斐波那契數的函式的示例

First response from AI for a function to calculate Fibonacci numbers

也許您更喜歡不使用遞迴的解決方案

Ask AI to not use recursion and new result

您甚至可以要求 AI 遵循編碼約定或改進變數名稱

Ask AI to use better variable names and new result

即使您已經接受了一個結果,您也可以隨時要求 AI 稍後迭代程式碼。

有關 Copilot 提示的更多資源

如果您想進一步瞭解如何高效使用 GitHub Copilot,可以查閱這些影片和博文

© . This site is unofficial and not affiliated with Microsoft.