通義靈碼使用技巧分享:如何用好注釋以及跨文件索引

通義靈碼是JetBrains、VSCode、Visual Studio等集成開發環境(IDE)中嵌入的一款智能開發助手工具,旨在通過人工智能技術簡化軟件開發過程,提升開發效率。
歡迎關注通義靈碼公眾號,獲取第一手資訊!
代碼注釋的運用
通過注釋引導補全生成
在缺乏額外注釋引導的情況下,模型只能基于當前代碼的上下文,以及項目中引用和找到的相似代碼來推測接下來可能要編寫的內容。當模型的推測不準確時,可以通過增加代碼的方式來引導模型實現所需的代碼。
- 例如,在以下這段代碼中,模型首先推測了一個 CHAT_CONTEXT 字段,然而并不是我們所期望的內容。

- 接下來,我們添加一行注釋,以指示模型下一個字段為歷史記錄。隨后,模型生成了符合預期的字段及其相應的數據填充代碼。

使用描述生成方法
- 通過“編輯區的代碼注釋引導補全”或“使用通義靈碼問答面板”,均可實現基于注釋生成整個方法的目標。由于通義靈碼的智能問答場景所使用的模型參數量通常大于代碼補全模型的參數量,因此,對于這類場景,通常建議在問答面板中直接提出所需生成的問題描述。

- 如果對期望生成的語言或方法簽名(包括方法名、參數類型、返回值類型)有特殊要求,請在提問時詳細描述該方法簽名。

跨文件索引的運用
及時保存文件并更新索引
-
通義靈碼的跨文件索引是抑制代碼幻覺的重要機制。通過自動識別當前上下文中所涉及的類型和方法定義,模型能夠感知項目中其他文件的類型所包含的成員以及方法所具有的參數。
-
在首次打開新項目時,通義靈碼將自動創建項目的文件索引。此后,每次保存文件時,將觸發單個文件的增量索引更新。然而,由于集成開發環境(IDE)中的文件通常存在內存緩存,在剛剛編寫完一個文件后切換到另一個文件時,可能因本地索引尚未更新而無法識別新增加或修改過的內容,仍然按照原有的類型結構進行推理。例如在某代碼項目中,我們為 Pet 對象新增了一個 saleable 屬性。

- 隨后切換至另一個文件,嘗試讓大模型進行補全,但模型推理出的邏輯使用的是另一個不太相關的字段。

- 若要消除這種信息差異,建議在編輯完前一個文件后,主動按下文件保存鍵快捷鍵Ctrl+S,然后再繼續編輯其他文件。這樣生成的內容將能夠正確引用到修改過的對象結構。

針對MyBatis場景的優化方案
除了 Java、Python、JavaScript 等主流編程語言項目的跨文件引用功能,通義靈碼還支持在編寫 MyBatis 的 XML 文件時自動識別 Mapper 對象所引用的表結構類型。例如,在編寫如下的 insert 語句時,插件會利用當前項目中的 TexiOrder 類型信息,確保生成的每個字段都為正確的。


提示詞的使用技巧
在提問中引用所選代碼
在提問時,如果同時在代碼編輯區選擇了文本或代碼段,所選擇的內容將自動以 Markdown 引用格式附加到提問內容的末尾。因此,若在提示詞中提及所選擇的代碼,應使用“如下代碼”或“以下內容”,例如。
- 正確的說法:請檢查以下代碼是否存在下標越界風險。
- 錯誤的說法:請檢查選中的代碼是否存在下標越界風險。(模型并不知道選中的代碼是什么)
在使用命令時,請附加相關信息。
通過在命令后追加更多的輔助信息,可以為問答提供更為豐富的上下文,從而獲得更符合預期的回復。


通過多輪對話生成有效代碼
在與大語言模型進行對話時,提供的上下文越豐富,生成的結果越能符合用戶的預期。因此,用戶可以在上一輪對話的基礎上繼續進行問答,從而增加后續提問的上下文信息,這樣生成的結果能夠更好地反映整個歷史上下文。然而,上一輪的歷史信息有時可能會造成干擾,此時用戶需要適時清空上下文。

在上一輪的基礎上,進一步進行深入追問。

為模型提供參考示例
當需要模型按照指定格式輸出或遵循特定前置規則時,提供一個參考實例往往能取得更好的效果,而非僅用文字描述。例如,某一程序的運行結果文件可以使通義靈碼整理成特定的 JSON 結構文檔。首先,打開文件并全選問題內容,然后在問答區域進行提問。對比下述兩種提示詞,后者能夠更穩定地輸出預期的數據格式。
- 提示詞1:將測試報告整理為JSON格式,每個測試結果為一個JSON結構。用例名稱應放置于name字段,成功與否應記錄于success字段,運行耗時需在duration字段中體現(單位為毫秒),測試覆蓋率則應放置在coverage字段。detail字段的值為一個JSON,包含每次用例的輸入和輸出,分別存放于input和output字段中。
- 提示詞2:將測試報告整理為JSON格式,具體格式參照輸入報告。
…報告內容略…
應輸出的數據如下。請根據此示例生成測試報告。
[
{
“name”: “超出有效頁碼范圍時,應返回空列表并提示無更多數據”,
“duration”: 3434,
“coverage”: 80,
“detail”: [
{
“input”: “…”,
“output”: “…”
}
]
}
]
為模型設定身份
與單純的提問相比,預先向模型提供身份信息能夠有效提升生成結果的穩定性和準確性。以生成測試用例為例,首先打開接口文檔文件,全面選取文件內容,然后在問答區域進行提問。對比下述兩種提示詞,后者能夠生成質量更高且覆蓋率更好的用例。
- 提示詞1:請根據以下接口文檔生成相應的測試用例。
- 提示詞2:您是一位經驗豐富的測試工程師,具備對細節的高度敏感性,并能夠高效識別潛在問題及邊界情況。請根據以下接口文檔生成詳盡的測試用例,以確保所有預期功能行為均得到驗證。
更多內容,可以點擊此處查看通義靈碼最佳實踐指南!

浙公網安備 33010602011771號