語言模型
Visual Studio Code 使用大型語言模型 (LLMs) 來驅動其 AI 功能。您可以透過您的 GitHub Copilot 方案選擇多種模型,或使用您自己的模型。本文說明語言模型如何運作、其特性,以及如何評估模型選擇。
語言模型運作原理
語言模型處理文字輸入(稱為「提示詞」或 prompt)並產生文字輸出。在 VS Code 中,提示詞是由多個來源組合而成:您的訊息、對話記錄、檔案內容、工具輸出和自訂指令。模型產生的回應可能包含解釋、程式碼編輯,或呼叫工具的請求。
語言模型不會直接執行程式碼或存取檔案。相反地,它們產生由代理迴圈 (agent loop) 解讀為動作的文字。當模型請求呼叫工具時,VS Code 會執行該工具,並將結果回饋給模型以進行下一次迭代。
關鍵特性
- 非決定性 (Nondeterministic):相同的提示詞每次可能產生不同的結果。這是設計使然,反映了模型如何從機率分佈中進行採樣。
- 上下文依賴 (Context-dependent):回應的品質取決於提示詞中提供的上下文之品質與相關性。
- 知識邊界 (Knowledge boundaries):模型是在特定日期之前的資料上進行訓練的,對於訓練資料之外的主題,可能會產生過時或錯誤的資訊。VS Code 透過工具和工作區索引來緩解此問題。
上下文視窗
上下文視窗是模型在單次請求中可以處理的資訊總量。它包含所有內容:系統提示詞、自訂指令、對話記錄、檔案內容、工具輸出以及您當前的訊息。不同的模型具有不同的上下文視窗大小。
當上下文視窗填滿時,VS Code 會自動摘要對話的較舊部分以騰出空間。這意味著長對話早期的一些重要細節可能會被壓縮或遺失。您也可以在聊天輸入框中輸入 /compact 來隨時手動觸發壓縮。此外,您可以在指令後加上自訂指令來引導摘要,例如 /compact focus on the API design decisions(著重於 API 設計決策)。
進一步了解 VS Code 如何組裝上下文 以及 上下文壓縮。
思考與推理
有些語言模型在產生回應之前可以進行深度推理,也稱為「思考」。推理模型不會立即產生答案,而是先在內部處理問題,考慮多種方法、評估權衡,並建立逐步的思維鏈。這種內部推理發生在與最終輸出分離的專用思考 Token 中。
推理模型對於多步驟除錯、架構規劃、程式碼重構以及數學或科學分析等複雜任務特別有效。對於產生樣板程式碼或回答基本問題等簡單任務,額外的推理只會增加延遲,而沒有顯著的好處。
思考力道 (Thinking effort)
思考力道控制模型對每個請求所應用的推理程度。較高的力道等級會產生更徹底的內部推理,從而提高處理複雜問題的品質。較低的力道等級則透過限制或跳過思考步驟來減少延遲與 Token 的使用量。
可用的力道等級及其預設值因模型和提供者而異。有些模型也支援自適應思考 (adaptive thinking),模型會根據每個請求的複雜度動態決定是否進行推理以及推理的程度,而不是始終使用固定的思考預算。
VS Code 根據評估與線上效能數據設定預設的力道等級,並在支援的情況下啟用自適應推理。對於大多數使用案例,預設值無需變更即可發揮良好效果。
思考 Token
思考 Token 會計入模型的上下文視窗,即使它們在回應中不可見。實際的思考輸出通常會以摘要形式返回,或者為了降低延遲而完全省略。請記住,較高的思考力道等級可能會產生更多的思考 Token,這可能會增加延遲。
了解如何在 VS Code 中 設定思考力道等級。
選擇合適的模型
每個模型都有不同的強項。有些針對速度進行了優化,適用於快速編輯和簡單的問題;有些則擁有更大的上下文視窗或更好的推理能力,使其成為處理複雜任務的理想選擇。作為一般指導原則:
- 快速模型 (Fast models) 最適合快速程式碼編輯、樣板程式碼產生和直接了當的問題。
- 推理模型 (Reasoning models) 擅長複雜的重構、架構決策、多步驟除錯,以及需要評估取捨的任務。
- 大上下文模型 (Large context models) 適用於大型程式碼庫或長對話,在這些情況下,保留更多資訊至關重要。
您可以隨時根據特定任務的需求切換模型。如需詳細比較,請參閱 GitHub Copilot 文件中的 為您的任務選擇正確的 AI 模型。
自動模型選擇
自動模型選擇結合了兩個系統,將每個請求路由至最優模型。一個系統追蹤即時的模型健康狀態與可用性,另一個則評估任務複雜度。兩者共同運作,將每個任務與能最高效解決它的模型進行配對,將成本較高的推理模型保留給需要它們的問題,並將簡單任務路由至更快的模型。
自動選擇功能會從多個模型中進行選擇,並遵守您組織的 模型存取設定。自動選擇功能不會選取管理員政策排除的模型,或受資料駐留政策限制的模型。
欲了解更多詳細資訊,請參閱 GitHub 文件中的 關於 Copilot 自動模型選擇。
AI 額度與模型成本
每個 Copilot 方案都包含每月配額的 AI 額度。不同的模型會根據其類型與處理的 Token 數量,以不同的費率消耗 AI 額度。能力越強的模型,每個 Token 的成本就越高,而輕量型模型則能延長您的使用期限。當您使用自動模型選擇時,VS Code 會將每個請求路由至能在品質與成本之間取得平衡的高效模型。
其他因素也會影響額度消耗,例如 思考力道(較高力道會產生更多思考 Token)、上下文視窗大小和工具使用情況。有關減少額度消耗的實用建議,請參閱 優化 AI 額度使用量。
了解如何在 VS Code 中 選擇與設定語言模型。
使用您自己的語言模型金鑰
如果內建模型無法滿足您的需求,您可以帶入您自己的語言模型 API 金鑰 (BYOK),以使用來自其他提供者的模型或在本地執行模型。BYOK 讓您可以在使用 VS Code 聊天體驗與工具的同時,連接到任何相容的模型提供者。
為什麼要使用自己的金鑰?
- 模型選擇:存取來自不同提供者的數百種模型,而不限於內建模型。
- 實驗性:嘗試內建模型尚未提供的新模型或新功能。
- 本地運算:使用您自己的運算資源來執行 GitHub Copilot 已支援的模型,或執行尚未提供的模型。
- 更強的控制權:繞過內建模型所施加的標準速率限制與限制。
- 離線與隔離環境:在無需 GitHub 帳號、Copilot 方案或網際網路連線的情況下,使用像是 Ollama 等本地模型來體驗 AI 聊天功能。
注意事項
- BYOK 僅適用於聊天體驗與公用程式任務。行內建議(程式碼自動完成)以及依賴嵌入 (embeddings) 的功能(如語意搜尋)仍需要 GitHub 帳號。
- 功能取決於模型,可能與內建模型有所不同,例如是否支援工具呼叫、視覺能力或思考能力。
- 使用 BYOK 時,無法保證模型輸出會套用負責任的 AI 過濾機制。
了解如何在 VS Code 中 新增您自己的語言模型金鑰。