语言模型

Visual Studio Code 使用大型语言模型 (LLM) 来驱动其 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

了解更多关于 VS Code 如何组装上下文 以及 上下文压缩 的信息。

思考与推理

一些语言模型可以在产生响应之前执行扩展推理,也称为“思考”。推理模型不会立即生成答案,而是先在内部处理问题,考虑多种方法,评估权衡,并构建分步思维链。这种内部推理发生在与最终输出分开的专用思考标记(thinking tokens)中。

推理模型对于多步骤调试、架构规划、代码重构以及数学或科学分析等复杂任务特别有效。对于生成样板代码或回答基本问题等简单任务,额外的推理只会增加延迟,而没有显著的好处。

思考力度 (Thinking effort)

思考力度控制模型对每个请求应用多少推理。较高的力度水平会产生更彻底的内部推理,从而提高复杂问题的处理质量。较低的力度水平则通过限制或跳过思考步骤来减少延迟和 Token 使用量。

可用的力度水平及其默认值因模型和提供商而异。有些模型还支持自适应思考,即模型会根据每个请求的复杂程度动态决定是否思考以及思考多少,而不是始终使用固定的思考预算。

VS Code 基于评估和在线性能数据设置默认力度水平,并在支持的情况下启用自适应推理。对于大多数使用场景,默认设置无需更改即可良好运行。

思考标记 (Thinking tokens)

思考标记计入模型的上下文窗口,即使它们在响应中不可见。实际的思考输出通常以摘要形式返回,或者为了降低延迟而完全省略。请记住,更高的思考力度水平可能会产生更多的思考标记,这可能会增加延迟。

了解如何 在 VS Code 中配置思考力度水平

选择合适的模型

每个模型都有不同的优势。有些模型针对速度进行了优化,非常适合简单的补全;另一些则拥有更大的上下文窗口或更强的推理能力,是复杂任务的理想选择。您可以根据特定任务的需求随时切换模型。

VS Code 还支持 自动模型选择 (auto model selection),它会自动选择模型以确保最佳性能并减少速率限制。自动模式会从可用模型中进行选择,并为付费用户应用请求折扣。

了解更多关于 选择和配置语言模型 的信息。

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