取得代碼建議

watsonx Code Assistant

透過使用聊天對話或在編輯器中完成程式碼來產生程式碼建議。

使用聊天對話

輸入解釋您需要的程式碼的提示,然後watsonx Code Assistant會產生您可以選擇使用的內容。

  1. 若要開始新的聊天對話,請按一下新聊天圖示 新聊天
  2. 提出問題或給予指示。
  3. 按一下傳送圖示 傳送。Watsonx Code Assistant 將您的輸入傳送 至代碼模型,並在聊天中顯示回應。

選取 watsonx Code Assistant 產生最後好結果的訊息,然後在新的聊天中繼續聊天對話。

  1. 若要在新聊天中使用先前或現有的訊息,請按一下開始新聊天圖示開始新聊天
  2. 提出問題或給予指示。
  3. 按一下傳送圖示 傳送。Watsonx Code Assistant 將您的輸入傳送 至代碼模型,並在聊天中顯示回應。

在聊天和編輯器之間傳輸程式碼

當您收到想要使用的程式碼建議時,您可以將聊天內容中的程式碼區塊插入編輯器中。

  1. 將游標定位在編輯器中。
  2. 在聊天中,按一下插入游標圖示 Insert at Cursor

如果您在編輯器中有要在聊天中作為上下文使用的程式碼,您可以將程式碼複製到聊天中。

  1. 在編輯器中反白顯示程式碼。
  2. 按一下滑鼠右鍵以顯示彈出選單。
  3. 選擇 watsonx Code Assistant.
  4. 選擇「將選取的代碼加入聊天」。

使用自然語言

每個聊天訊息都是聊天對話的一部分。 讓對話集中在特定主題或任務。 當您將上下文切換到另一種程式語言、工作區中的另一個專案或不同的程式設計任務時,建立新的聊天對話。 您可以獲得與您的問題更相關的結果。

範例:

  • Create a Python class Customer. Include attributes for firstName, lastName and age.
  • Create a JavaScript function that fetches data from a REST API endpoint, dynamically populates an HTML table with the results, and updates the UI asynchronously

使用提示庫

Watsonx Code Assistant包含一個提示庫,其中包含一組常見的自然語言編碼請求。 您可以在聊天中按原樣使用它們,也可以根據您的用例修改它們。

若要存取提示庫:

  1. 按一下 Open(開啟)功能表圖示 Open(開啟)功能表
  2. 點擊提示庫將其打開。
  3. 按一下複製到剪貼簿圖示複製到剪貼簿
  4. 再次按一下 “提示庫” 將其關閉。
  5. 將提示貼到聊天中。

編寫有效的聊天訊息

為了在談話中獲得最佳效果:

  • 用英文寫下您的聊天訊息。
  • 從簡單明了的說明開始。
  • 使用後續聊天訊息來完善模型的程式碼輸出。
  • 每個步驟都盡可能具體和詳細。 您可以透過後續的聊天訊息逐步增強已建立的程式碼。
  • 在訊息中使用文件和方法引用來提供相關上下文。 例如,如果您希望模型建立與另一個方法類似的方法,請將 similar to @<method> 新增至您的訊息。
  • 如果您發現答案變得不太相關,或者您開始一項新任務,請建立新的聊天對話,然後從那裡開始工作。 最好進行許多簡短的聊天對話,每個對話都有特定的上下文,而不是一次大型對話,因為這可能會使模型與不同且不相關的聊天訊息混淆。

引用工作區中的程式碼

若要提問或精煉本機工作區中的特定檔案、類別、函式或方法,您可以使用程式碼參考。 這些參考文獻提供了重要的背景信息,有助於提高答案的準確性。

  1. 在聊天訊息中鍵入 @ 符號,即可查看工作區中的檔案、類別和方法的清單。
  2. 透過鍵入要引用的檔案、類別或方法名稱的字元來過濾清單。
  3. 點擊以選擇參考。Watsonx Code Assistant參考內容作為訊息的一部分傳送。

.gitignore 中的項目不包括作為代碼參考的選擇。 如果您有敏感資料,例如 .env 檔案,請務必將此新增至 .gitignore

當您開啟本機工作區資料夾時,watsonx Code Assistant 會在記憶體中建立這些項目的索引,以便您在聊天時引用這些檔案和函式。 您的編輯器也會對您在會話期間新增或變更的檔案編制索引。 此索引包含最多 1,000 個以下程式語言的最新檔案:

  • C
  • C++
  • 進行
  • Java
  • JavaScript
  • Python
  • TypeScript

檔案索引僅適用於本機套件庫。

當您引用方法,或在方法上使用 CodeLens 時,watsonx Code Assistant 支援特定的程式碼語言。 引用完整檔案適用於所有語言。 如需詳細資訊,請參閱 使用方法時的語言支援

當您引用檔案時,大小限制為 50 KB。 如果達到此限制,請將檔案分割為個別函式,並參照每個函式。 或者,將檔案分割為 49 KB,注意函數邊界,並在每次分割時引用檔案。 無論採用哪一種方法,您都需要合併結果。

帶有引用程式碼範例的用例:

引用程式碼的聊天訊息
使用案例 範例訊息
根據現有函數產生函數 建立一個類似 @send_code_explanation_message 的方法 send_translate_message
產生遵循現有單元測試的單元測試 為@getName建立一個單元測試,該測試類似於@testLoadTablesChildConnectionReceiverJob.h 中的單元測試
增強現有功能 將錯誤處理和日誌語句加入@format_documents
增強現有功能 使用空字串的錯誤處理更新@setEmail
解釋程式碼 @ main.py做什麼
解釋程式碼 解釋一下@send_invoice的邏輯
產生函數和類別的文檔 新增 JavaDoc 至 @ 客戶

檢索擴增生成

標準計畫

使用「標準」方案,您的組織可以設定檢索擴增生成 (RAG),這是透過使用額外的上下文進行提示擴增來優化大型語言模型 (LLM) 輸出的過程。 如需詳細資訊,請參閱 設定檢索擴增世代(RAG)

如果您提交查詢,watsonx Code Assistant 會使用 RAG 工具從您的程式碼庫或文件中擷取資訊。 此相關上下文會在傳送至 LLM 模型之前附加到查詢中。 RAG 系統會決定需要包含或排除的來源,以產生具備最有用資訊的回應。

RAG 要求 watsonx Code Assistant 標準計劃和 Visual Studio Code 延伸。 Eclipse 外掛程式無法使用。

當您的 Git 儲存庫啟用 RAG 時,在聊天對話中輸入 @repo < instruction >@docs < instruction >,即可產生使用向量儲存庫中參考儲存庫或文件的上下文的回應。 以提示訊息取代 < instruction > 參數。

  • 使用引用程式碼庫的語法範例:

    @repo how is a chat message processed?
    
  • 使用參考文件集的語法範例:

    @docs What are the steps to setup a connection to the user data store?
    

使用聊天指令

可用於執行某些任務的聊天命令:

聊天命令
指令 說明 取得相關資訊
/document 為活動工作區中引用的文件、方法或類別產生文檔 產生文件
/docs 提出參考IBM和Red Hat產品文件的問題 從IBM文檔中取得答案
/explain 使用生成式 AI 分析和總結您的程式碼,以了解程式碼的用途 解釋程式碼
/help 獲得有關任務的快速協助 在聊天中輸入 /help
/unit-test 為各種程式語言產生單元測試 發電機組測試
/translate 將程式碼從一種語言翻譯為另一種語言 翻譯程式碼
@repo 與檢索擴增生成 (RAG) 搭配使用 啟用 RAG
@docs 與檢索擴增生成 (RAG) 搭配使用 啟用 RAG

管理聊天對話階段

您可以使用聊天對話功能表來管理現有的聊天對話對話。

要開啟選單:

  1. 按一下 Open(開啟)功能表圖示 Open(開啟)功能表
  2. 點選聊天會話

切換聊天對話階段

若要在聊天對話階段之間切換,請從聊天階段清單中選取階段。

重新命名聊天階段

若要重新命名聊天對話階段,請

  1. 在聊天階段中,按一下溢出功能表圖示溢出功能表
  2. 按一下重新命名
  3. 輸入新名稱,然後按 Enter。

刪除聊天階段

若要刪除單一聊天會話,請

  1. 在聊天階段中,按一下溢出功能表圖示溢出功能表
  2. 按一下刪除

若要刪除多個聊天會話,請

  1. 按一下 Select chats 圖示 Select chats
  2. 選取您要刪除的聊天記錄,或按一下全選
  3. 按一下刪除圖示刪除,然後按一下刪除按鈕確認。

在編輯器中完成程式碼

透過在編輯器中輸入程式碼或註釋來取得程式碼建議。

在Eclipse中使用編輯器

對於 C、C++、Go、JavaScript, Python和TypeScript:

  1. 用滑鼠右鍵按一下檔案。
  2. 一下「開啟方式」, 然後按一下 「文字編輯器」

對於Java,watsonx Code Assistant支援使用Eclipse IDE中的Java編輯器產生內聯程式碼,但首先需要進行設定。

  1. 前往Eclipse設定中的 Content Assist。

    導航至內容輔助
    作業系統 路徑
    MacOS Eclipse > 設定 > Java > 編輯器 > 內容輔助
    Windows 視窗 > 首選項 > Java > 編輯器 > 內容輔助
  2. 插入部分,清除自動插入單一提案

  3. 「自動啟動」 部分中,將 ._abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 新增至 Java自動啟動觸發器」 中,並確認選取「啟用自動啟動」

  4. 按一下套用並關閉

單行完成

當您在編輯器中編寫一行程式碼時,watsonx Code Assistant可以建議程式碼來完成它。

  1. 開始輸入一行程式碼,然後暫停。
  2. Watsonx Code Assistant新增程式碼建議來完成您鍵入的行。
  3. 在 Visual Studio Code 中,按 Tab 接受建議。 在 Eclipse 中,按 ReturnEnter 接受建議。 或按 Esc 拒絕。

多行補全

您可以根據您輸入的一行程式碼或註解取得多行程式碼建議。

  1. 開始鍵入一行程式碼,或輸入描述所需程式碼的註解。

    為了達到最佳效果,請在您的註解中包含預期的程式語言,例如:

    // Sort an array with a fast sort function (TypeScript programming language)
    
  2. 使用鍵盤快速鍵。

    預設鍵盤快速鍵
    作業系統 快速鍵
    MacOs 選項+。
    Windows Alt+。
  3. Watsonx Code Assistant新增多行程式碼建議。

  4. 在 Visual Studio Code 中,按 Tab 接受建議。 在 Eclipse 中,按 ReturnEnter 接受建議。 或按 Esc 拒絕。

停用特定程式語言的程式碼完成

必要時,您可以使用 Visual Studio Code 擴充套件的 Completion: Disabled Languages 設定來停用特定程式碼語言的程式碼補齊功能。

  1. 開啟 watsonx Code Assistant 延伸設定。

  2. 按一下「新增項目」以選擇代碼語言。 選擇有

    代碼語言
    選擇 代碼語言
    c C
    cpp C++
    go 進行
    java Java
    javascript JavaScript
    javascriptreact JavaScript 反應
    python Python
    typescript TypeScript
    typescriptreact TypeScript 反應

若要重新啟用代碼語言,您可以將它從清單中移除。

  1. 按一下清單中的代碼語言。

  2. 按一下 Remove Item(移除項目 )圖示 Close(關閉)圖示,將其從停用語言清單中移除。

更改鍵盤快速鍵

如果預設組合已指定給其他任務,您可以變更鍵盤捷徑。

若要變更Visual Studio Code中的鍵盤快速鍵:

  1. 按一下「代碼」功能表。
  2. 選取設定
  3. 選擇鍵盤快速鍵
  4. 搜尋 watsonx
  5. 針對您要變更的捷徑,按一下變更按鍵綁定編輯鉛筆圖示,並指定不同的按鍵組合。

要更改Eclipse中的鍵盤快速鍵:

  1. 按一下 Eclipse 選單。
  2. 選取設定
  3. 輸入 Keys 以過濾設置,然後按一下 “按鍵”
  4. 輸入 WCA 以過濾清單。
  5. 選擇您要變更的鍵盤快速鍵。
  6. 「綁定」 欄位中,輸入新的組合鍵。

禁用代碼完成

如有必要,您可以在編輯器視窗中停用程式碼完成。

若要在Visual Studio Code中停用程式碼完成:

  1. 在編輯器的右下角,按一下停用 watsonx Code Assistant 完成圖示影像
  2. 您可以再次點選啟用watsonx Code Assistant Completions 圖示來重新啟用補全。

要在Eclipse IDE中停用程式碼完成:

  1. 在編輯器工具列中,按一下停用watsonx Code Assistant Completions 圖示。
  2. 您可以再次點選啟用watsonx Code Assistant Completions 圖示來重新啟用補全。

產生程式碼建議的最佳實踐

使用這些技巧可以獲得最佳結果。

使用聊天來處理較長的程式碼區塊。 使用編輯器內程式碼產生來最佳化和樣板程式碼。

使用聊天可以:

  • 產生一個類別的大綱
  • 詳細指定方法
  • 使用更多說明細化建議的程式碼(例如,重新命名或替換)

使用編輯器內程式碼產生可以:

  • 完成您開始輸入的程式碼行
  • 自動建立樣板程式碼,例如 getter 和 setter
  • 建立可以用單一註解行描述的方法和程式碼

程式碼註釋:使用描述性註釋,而不是指令

當您在編輯器中使用註釋到程式碼時,請編寫描述預期行為的註釋,類似於為您編寫的程式碼編寫註釋的方式。 例如,使用 //return even numbers from an arraylist//method that returns even numbers from an arraylist

不要將註解寫為指令,例如 //write a method that returns even numbers from an arraylist。Watsonx Code Assistant使用經過訓練的模型來完成包含許多典型的描述性評論的資料代碼,因此這些類型的評論會產生更好的結果。

用於編輯器內程式碼產生的上下文

程式碼產生的關鍵要素是上下文,也就是傳遞給模型的周圍程式碼。 對於編輯器內程式碼生成,watsonx Code Assistant使用:

  1. 觸發生成的行之前的 20 行程式碼。
  2. 觸發生成的行之後的 20 行程式碼。
  3. 從觸發生成的目前檔案開頭最多 200 行。
  4. 最多 5 個與觸發生成的行周圍的程式碼類似的程式碼片段。 這些片段取自您使用與目前檔案相同的程式語言開啟的最後 10 個檔案。

若要改善編輯器內程式碼產生的結果:

  • 開啟工作區中包含您希望watsonx Code Assistant了解的程式碼的檔案。Watsonx Code Assistant嘗試在這些檔案中尋找與觸發完成的位置類似的程式碼,例如使用類似類別和變數的方法,然後將此程式碼作為上下文傳送到模型。
  • 透過從類別定義開始或新增匯入語句來幫助watsonx Code Assistant,或使用watsonx Code Assistant聊天來建立初始大綱,將結果複製到檔案中在您的工作區中,然後繼續在編輯器中產生程式碼。 當您從零或幾乎為空的檔案開始時,請勿使用編輯器內程式碼生成,因為這些條件無法提供足夠的上下文。