內容脈絡

情境是指模型在生成回應時所能看見的一切資訊。它包含了對話歷史、工作區中的檔案內容、工具輸出、自訂指令,以及您明確添加的任何參照。模型只能針對它所能看見的內容進行推論,因此提供相關的情境是改善 AI 回應最有效的方法之一。

本文將說明 VS Code 如何組合情境、有哪些類型的情境可用,以及如何有效處理情境視窗(Context window)的限制。

為什麼情境(Context)很重要

包含相關檔案、明確指令與聚焦歷史紀錄的提示詞(Prompt),其產出結果會比缺乏情境的模糊提示詞更好。模型無法記憶之前的對話,也無法存取未提供給它的檔案。模型對您任務的了解,完全來自於為當前請求所組合出的情境。

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.

  • 系統指令 (System instructions):定義代理程式行為的內建準則。
  • 自訂設定 (Customizations):您設定的 AI 自訂項目,包含自訂代理程式、技能與自訂指令。
  • 使用者訊息 (User message):您目前傳送給代理程式的訊息。
  • 對話歷史 (Conversation history):當前對話階段中已交換的訊息。
  • 隱含情境 (Implicit context):您正在編輯的檔案、目前的選取範圍、可見的錯誤以及 Git 狀態。
  • 明確參照 (Explicit references):您透過 # 標記所參照的檔案、編輯器情境、網頁內容及其他來源。
  • 工具輸出 (Tool outputs):在代理程式對話期間,透過檔案讀取、終端機指令、程式碼庫搜尋結果及其他工具呼叫所產生的結果。

這個組合後的提示詞就是模型所能看到的內容。在此範圍之外的一切,對模型而言都是隱形的。這就是為什麼使用 #file 參照特定檔案,會比詢問模型未看過的程式碼更能產生較佳結果的原因。

工作區索引

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

  • 遠端索引 (Remote index):如果您的程式碼託管於 GitHub 儲存庫,您可以建立遠端索引來快速搜尋程式碼庫,即使是大型程式碼庫也適用。
  • 本機索引 (Local index):使用儲存在您本機電腦上的進階語意索引,以獲得快速且精確的搜尋結果。
  • 基礎索引 (Basic index):如果無法使用本機索引,則會針對較大的程式碼庫使用較簡易的演算法來執行本機搜尋。

深入了解 工作區索引

隱含情境

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

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

如何有效地運用情境

  • 為新任務開啟新的對話階段。對話階段 (Session) 是獨立的對話,擁有自己的情境視窗與歷史紀錄。每個階段都是重新開始的,因此請勿將同一個對話用於不相關的任務。
  • 選擇性地提供情境。加入整個程式碼庫並不一定有幫助。請參照與該任務相關的特定檔案。
  • 使用自訂指令來執行持久性規則。您在 自訂指令 中加入的規則會包含在每一次的請求中,因此即使對話被摘要,您也不會丟失這些規則。

範例

以下範例展示了加入情境如何改善結果:

模糊的提示詞(無情境):

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.