內容脈絡

情境是模型在產生回應時所能看到的一切。它包括對話歷史紀錄、工作區中的檔案內容、工具輸出、自訂指示,以及任何您明確新增的參考資料。模型只能根據它所能看到的進行推論,因此提供相關的情境是改善 AI 回應最有效的方法之一。

本文將說明 VS Code 如何組裝情境、有哪些可用的情境類型,以及如何有效利用情境視窗的限制。

為何情境至關重要

包含相關檔案、清晰指示和焦點明確歷史紀錄的提示,比模糊且沒有情境的提示能產生更好的結果。模型沒有先前會話的記憶,也無法存取未提供給它的檔案。它所知道關於您任務的一切,都來自於為當前請求所組裝的情境。

VS Code 如何組裝情境

當您傳送訊息時,VS Code 會從多個來源建立語言模型提示

Diagram showing the context window as a container with seven layers: system instructions, customizations, user message, conversation history, implicit context, explicit references, and tool outputs, with an arrow sending the assembled prompt to the language model.

  • 系統指示:定義代理程式行為的內建指南。
  • 自訂設定:您設定的 AI 自訂項目,包括自訂代理程式、技能和自訂指示。
  • 使用者訊息:您目前傳送給代理程式的訊息。
  • 對話歷史紀錄:目前會話中至今已交換的訊息。
  • 隱含情境:您正在編輯的檔案、您目前的選取範圍、可見的錯誤以及 Git 狀態。
  • 明確參考資料:您使用 # 提及來參考的檔案、編輯器情境、網頁內容及其他來源。
  • 工具輸出:在代理程式會話期間,檔案讀取、終端機指令、程式碼庫搜尋結果和其他工具呼叫的結果。

這個組裝好的提示就是模型所看到的。它之外的一切對模型都是不可見的。這就是為什麼使用 #file 引用特定檔案,比詢問模型未見過的程式碼能產生更好的結果。

工作區索引

VS Code 使用索引來快速準確地搜尋您的程式碼庫中相關的程式碼片段。此索引可以由 GitHub 維護,也可以儲存在您的本機電腦上。

  • 遠端索引:如果您的程式碼託管在 GitHub 儲存庫中,您可以建立遠端索引,即使是大型程式碼庫也能快速搜尋。
  • 本機索引:使用儲存在您本機電腦上的進階語義索引,以獲得快速準確的搜尋結果。
  • 基本索引:如果本機索引不可用,則對於較大的程式碼庫,可使用更簡單的演算法在本機運作。

深入了解 工作區索引

隱含情境

VS Code 會根據您目前的活動,自動為提示提供情境

  • 在作用中編輯器中目前選取的文字。
  • 作用中編輯器的檔案名稱或筆記本名稱。
  • 如果您使用的是 Ask 代理程式,作用中檔案會自動作為情境包含在內。
  • 當使用 Agent 時,它會根據您的提示自動決定是否需要新增作用中檔案。

有效運用情境

  • 針對新任務開始新會話。 會話 是獨立的對話,擁有自己的情境視窗和歷史紀錄。每個會話都是全新開始,因此請勿將單一對話重複用於不相關的任務。
  • 精挑細選情境。 加入整個程式碼庫並不總是有幫助。請參考與任務相關的特定檔案。
  • 針對持續性規則使用自訂指示。 您在自訂指示中新增的規則會包含在每個請求中,因此在對話摘要時您不會遺失它們。

範例

以下範例說明了新增情境如何改善結果

模糊提示(無情境):

How does authentication work?

模型無法知道您指的是哪個專案,並給出了關於驗證模式的通用答案。

帶有明確情境的提示:

How does authentication work for this project?

模型讀取您實際的驗證檔案,並解釋 的實作如何運作,引用特定的函式和設定值。

帶有網頁情境的提示:

Migrate the auth module to the latest passport.js API #fetch https://www.passportjs.org/concepts/authentication/

模型使用來自網頁的最新文件來指導遷移,避免使用其訓練資料中過時的 API 模式。

深入了解如何為聊天新增情境

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