语言模型
Visual Studio Code 使用大语言模型 (LLM) 来支持其 AI 功能。您可以通过 GitHub Copilot 计划从多个模型中进行选择,或者使用您自己的模型。本文介绍了语言模型的工作原理、特性以及如何考虑模型选择。
语言模型的工作原理
语言模型处理文本输入(即“提示词”或 prompt)并生成文本输出。在 VS Code 中,提示词由多个来源组合而成:您的消息、对话历史记录、文件内容、工具输出以及自定义指令。模型生成的回复可能包含解释、代码编辑或调用工具的请求。
语言模型不会直接执行代码或访问文件。相反,它们生成文本,由智能体循环 (agent loop) 解释为动作。当模型请求调用工具时,VS Code 会执行该工具并将结果反馈给模型以进行下一次迭代。
关键特性
- 非确定性:相同的提示词每次可能产生不同的结果。这是刻意设计的,反映了模型如何从概率分布中进行采样。
- 上下文相关性:回复的质量取决于提示词中提供的上下文的质量和相关性。
- 知识边界:模型是在特定日期之前的数据上进行训练的,对于超出其训练数据的主题,可能会产生过时或不准确的信息。VS Code 通过工具和工作区索引来缓解这一问题。
上下文窗口
上下文窗口是模型在单次请求中可以处理的信息总量。它包含一切内容:系统提示词、自定义指令、对话历史记录、文件内容、工具输出以及您当前的消息。不同的模型具有不同的上下文窗口大小。
当上下文窗口填满时,VS Code 会自动汇总对话的较早部分以腾出空间。这意味着长对话早期的一些重要细节可能会被压缩或丢失。您也可以在聊天输入框中输入 /compact 以随时手动触发压缩。此外,您还可以在命令后添加自定义指令来引导摘要,例如 /compact focus on the API design decisions(关注 API 设计决策)。
了解有关 VS Code 如何组装上下文以及 上下文压缩的更多信息。
思考与推理
一些语言模型可以在产生回复之前进行扩展推理,也称为“思考”。推理模型不会立即生成答案,而是首先在内部处理问题,考虑多种方法,评估权衡,并构建一步步的思维链。这种内部推理发生在与最终输出分开的专用“思考标记 (thinking tokens)”中。
推理模型对于多步调试、架构规划、代码重构以及数学或科学分析等复杂任务特别有效。对于生成样板代码或回答基本问题等简单任务,额外的推理会增加延迟且没有显著好处。
思考力度 (Thinking effort)
思考力度控制模型对每个请求应用的推理程度。较高的力度水平会产生更深入的内部推理,从而提高复杂问题的处理质量。较低的力度水平通过限制或跳过思考步骤来减少延迟和标记 (token) 使用量。
可用的力度水平及其默认值因模型和提供商而异。一些模型还支持 自适应思考 (adaptive thinking),在这种模式下,模型会根据每个请求的复杂程度动态决定是否思考以及思考多少,而不是始终使用固定的思考预算。
VS Code 根据评估和在线性能数据设置默认的力度水平,并在支持的情况下启用自适应推理。对于大多数用例,默认设置无需更改即可良好运行。
思考标记 (Thinking tokens)
思考标记会占用模型的上下文窗口,即使它们在回复中不可见。实际的思考输出通常以摘要形式返回,或者为了降低延迟可以完全省略。请记住,更高的思考力度水平会产生更多的思考标记,这可能会增加延迟。
了解如何在 VS Code 中 配置思考力度水平。
选择合适的模型
每个模型都有不同的优势。有些针对速度进行了优化,非常适合快速编辑和简单问题。另一些则拥有更大的上下文窗口或更好的推理能力,使其成为复杂任务的理想选择。作为一般指导:
- 快速模型最适合快速代码编辑、样板生成和直截了当的问题。
- 推理模型擅长复杂的重构、架构决策、多步调试以及需要分析权衡的任务。
- 大上下文模型非常适合大型代码库或需要保留更多信息的长对话。
您可以根据特定任务的需求随时切换模型。有关详细比较,请参阅 GitHub Copilot 文档中的 为您的任务选择合适的 AI 模型。
自动模型选择
自动模型选择结合了两个系统,将每个请求路由到最佳模型。一个系统跟踪实时模型健康状况和可用性,另一个系统评估任务复杂性。它们共同将每个任务匹配到最能高效解决该问题的模型,将高成本的推理模型保留给需要它们的问题,并将较简单的任务路由到速度更快的模型。
自动选择功能会从多个模型中进行选择,并遵守您组织的 模型访问设置。自动模式不会选择被管理员策略排除的模型,也不会选择受数据驻留策略限制的模型。
有关更多详细信息,请参阅 GitHub 文档中的 关于 Copilot 自动模型选择。
AI 积分与模型成本
每个 Copilot 计划都包含每月的 AI 积分额度。不同的模型根据模型本身和处理的标记数量,以不同的速率消耗 AI 积分。能力更强的模型每个标记的成本更高,而较轻量的模型可以延长您的使用范围。当您使用自动模型选择时,VS Code 会将每个请求路由到在质量和成本之间取得平衡的高效模型。
其他因素也会影响积分消耗,例如 思考力度(力度越高产生的思考标记越多)、上下文窗口大小和工具使用情况。有关减少积分消耗的实用技巧,请参阅 优化 AI 积分使用。
了解如何在 VS Code 中 选择和配置语言模型。
使用您自己的语言模型密钥
如果内置模型无法满足您的需求,您可以使用自己的语言模型 API 密钥 (BYOK) 来使用其他提供商的模型或在本地运行模型。BYOK 允许您连接到任何兼容的模型提供商,同时仍然使用 VS Code 的聊天体验和工具。
为什么要使用自己的密钥
- 模型选择:访问来自不同提供商的数百种模型,而不仅仅是内置模型。
- 实验:尝试内置模型中尚未提供的新模型或功能。
- 本地计算:使用您自己的计算资源运行 GitHub Copilot 已支持的模型之一,或运行尚未支持的模型。
- 更大的控制权:绕过对内置模型实施的标准速率限制和限制。
- 离线和隔离环境:无需 GitHub 帐户、Copilot 计划或互联网连接,即可通过 Ollama 等本地模型使用 AI 聊天功能。
注意事项
- BYOK 仅适用于聊天体验和实用任务。内联建议(代码补全)以及依赖嵌入 (embeddings) 的功能(如语义搜索)仍然需要 GitHub 帐户。
- 功能因模型而异,可能与内置模型有所不同,例如对工具调用、视觉或思考功能的支持。
- 使用 BYOK 时,不保证会对模型的输出应用负责任的 AI 过滤。
了解如何在 VS Code 中 添加您自己的语言模型密钥。