Help us learn about your current experience with the documentation. Take the survey.

Code Suggestions

  • Tier: Premium, Ultimate
  • Add-on: GitLab Duo Core, Pro, 或 Enterprise, GitLab Duo with Amazon Q
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
  • LLMs for code completion: Fireworks AI 托管的 Codestral(默认)和 Vertex AI 托管的 Codestral
  • LLM for code generation: Anthropic Claude Sonnet 4
  • LLM For Amazon Q: Amazon Q Developer
  • Available on GitLab Duo with self-hosted models: Yes

使用 GitLab Duo Code Suggestions,通过生成式 AI 在开发过程中提供代码建议,从而更高效地编写代码。

前置条件

要使用 Code Suggestions,您需要:

  • GitLab Duo Core、Pro 或 Enterprise 插件。
  • Premium 或 Ultimate 订阅。
  • 如果您有 GitLab Duo Pro 或 Enterprise,需要分配的席位。
  • 如果您有 GitLab Duo Core,启用 IDE 功能

GitLab Duo 需要 GitLab 17.2 或更高版本。要使用 GitLab Duo Core 访问,并获得最佳用户体验和结果, 升级到 GitLab 18.0 或更高版本。早期版本可能继续工作,但体验可能会降级。

使用 Code Suggestions

前置条件:

要使用 Code Suggestions:

  1. 支持的 IDE中打开您的 Git 项目。

  2. 使用 git remote add 将项目添加为本地仓库的远程仓库。

  3. 将项目目录(包括隐藏的 .git/ 文件夹)添加到您的 IDE 工作区或项目中。

  4. 编写您的代码。 输入时会显示建议。Code Suggestions 提供代码片段 或根据光标位置完成当前行。

  5. 用自然语言描述需求。 Code Suggestions 根据提供的上下文生成函数和代码片段。

  6. 当您收到建议时,可以执行以下任一操作:

    • 接受建议,按 Tab
    • 接受部分建议,按 Control+右箭头Command+右箭头
    • 拒绝建议,按 Esc。在 Neovim 中,按 Control+E 退出菜单。
    • 忽略建议,像平常一样继续输入。

查看多个代码建议

对于 VS Code 中的代码补全建议,可能有多个建议选项可用。要查看所有可用建议:

  1. 将鼠标悬停在代码补全建议上。
  2. 滚动浏览替代选项。可以:
    • 使用键盘快捷键:
      • 在 Mac 上,按 Option + [ 查看上一个建议, 按 Option + ] 查看下一个建议。
      • 在 Linux 和 Windows 上,按 Alt + [ 查看上一个建议, 按 Alt + ] 查看下一个建议。
    • 在显示的对话框中,选择右箭头或左箭头查看下一个或上一个选项。
  3. Tab 应用您偏好的建议。

代码补全和生成

Code Suggestions 使用代码补全和代码生成:

代码补全 代码生成
用途 提供完成当前代码行的建议。 基于自然语言注释生成新代码。
触发 在输入时触发,通常有短暂延迟。 在编写包含特定关键词的注释后按 Enter 时触发。
范围 仅限于当前行或小块代码。 可以根据上下文生成整个方法、函数甚至类。
准确性 对于小任务和短代码块更准确。 对于复杂任务和大代码块更准确,因为使用了更大的大型语言模型(LLM),在请求中发送了额外上下文(例如项目使用的库),并将您的指令传递给 LLM。
使用方式 代码补全会自动为您正在输入的行提供补全建议。 您编写注释并按 Enter,或输入空函数或方法。
使用时机 使用代码补全快速完成一行或几行代码。 对于更复杂的任务、更大的代码库、当您想基于自然语言描述从头开始编写新代码,或当您正在编辑的文件少于五行时使用代码生成。

Code Suggestions 始终同时使用这两个功能。您不能单独使用代码生成或代码补全。

查看代码补全与代码生成对比演示

代码生成的最佳实践

要获得代码生成的最佳结果:

  • 在保持简洁的同时尽可能具体。
  • 说明您想要生成的结果(例如函数) 并提供您想要实现目标的详细信息。
  • 添加额外信息,例如您想要使用的框架或库。
  • 在每个注释后添加空格或换行。 这个空格告诉代码生成器您已完成指令。
  • 在 GitLab 17.2 及更高版本中,当启用 advanced_context_resolvercode_suggestions_context 功能标志时,在其他选项卡中打开相关文件以扩展 Code Suggestions 感知的上下文

例如,要创建具有特定要求的 Python Web 服务,您可能会编写如下内容:

# 使用 Tornado 创建一个允许用户登录、运行安全扫描并查看扫描结果的 Web 服务。
# 每个操作(登录、运行扫描、查看结果)都应该是 Web 服务中的独立资源
...

AI 是非确定性的,因此使用相同的输入您可能不会每次都得到相同的建议。 要生成高质量的代码,请编写清晰、描述性、具体的任务。

有关用例和最佳实践,请参阅 GitLab Duo 示例文档

文件内容截断

由于 LLM 限制和性能原因,当前打开的文件内容会被截断:

  • 对于代码补全:截断到 32,000 个 token(约 128,000 个字符)。
  • 对于代码生成:截断到 200,000 个 token(约 800,000 个字符)。

光标上方的内容优先于光标下方的内容。光标上方的内容从左侧截断,光标下方的内容从右侧截断。这些数字代表 Code Suggestions 的最大输入上下文大小。

输出长度

由于 LLM 限制和性能原因,Code Suggestions 的输出被限制为:

  • 对于代码补全:64 个 token(约 256 个字符)。
  • 对于代码生成:2,048 个 token(约 7,168 个字符)。

结果准确性

我们正在持续改进整体生成内容的准确性。 但是,Code Suggestions 可能会生成以下建议:

  • 不相关的。
  • 不完整的。
  • 导致流水线失败。
  • 潜在不安全的。
  • 冒犯性或不敏感的。

使用 Code Suggestions 时,代码审查的最佳实践仍然适用。

可用的语言模型

不同的语言模型可以作为 Code Suggestions 的来源。

  • 在 GitLab.com 上:GitLab 托管模型并通过基于云的 AI 网关连接它们。
  • 在 GitLab Self-Managed 上,有两个选项:

提示词的构建方式

要了解构建提示词的代码,请查看以下文件:

提示词缓存

默认启用提示词缓存以改善 Code Suggestions 延迟。启用提示词缓存后,代码补全提示词数据会临时存储在模型供应商的内存中。提示词缓存通过避免重新处理缓存的提示词和输入数据,显著改善了延迟。缓存的数据永远不会记录到任何持久存储中。

禁用提示词缓存

您可以在 GitLab Duo 设置中为顶级组禁用提示词缓存。

在 GitLab.com 上:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的组。
  2. 选择 设置 > GitLab Duo
  3. 选择 更改配置
  4. 禁用 提示词缓存 开关。
  5. 选择 保存更改

在 GitLab Self-Managed 上:

  1. 在左侧边栏,选择 搜索或跳转 并找到您的组。
  2. 选择 设置 > 常规
  3. 展开 GitLab Duo 功能
  4. 禁用 提示词缓存 开关。
  5. 选择 保存更改

响应时间

Code Suggestions 由生成式 AI 模型驱动。

  • 对于代码补全,建议通常延迟较低,耗时不到一秒。
  • 对于代码生成,算法或大代码块可能需要超过五秒才能生成。

您的个人访问令牌 enables a secure API connection to GitLab.com or to your GitLab instance. This API connection securely transmits a context window from your IDE/editor to the GitLab AI gateway, a GitLab hosted service. The gateway calls the large language model APIs, and then the generated suggestion is transmitted back to your IDE/editor.

流式传输

JetBrains 和 Visual Studio 支持代码生成响应的流式传输,从而 实现更快的感知响应时间。 其他支持的 IDE 将以单个块返回生成的代码。

代码补全不支持流式传输。

直接和间接连接

默认情况下,代码补全请求从 IDE 直接发送到 AI 网关以最小化延迟。 要使此直接连接正常工作,IDE 必须能够连接到 https://cloud.gitlab.com:443。如果这不可行 (例如由于网络限制),您可以为所有用户禁用直接连接。如果这样做, 代码补全请求将通过 GitLab Self-Managed 实例间接发送,该实例又将请求发送到 AI 网关。这可能会导致您的请求延迟更高。

配置直接或间接连接

前置条件:

  • 您必须是 GitLab Self-Managed 实例的管理员。
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 常规
  3. 展开 GitLab Duo 功能
  4. 连接方式 下,选择一个选项:
    • 要最小化代码补全请求的延迟,选择 直接连接
    • 要为所有用户禁用直接连接,选择 通过 GitLab Self-Managed 实例间接连接
  5. 选择 保存更改
  1. 在左侧边栏底部,选择 管理员
  2. 选择 设置 > 常规
  3. 展开 AI 原生功能
  4. 选择一个选项:
    • 要启用直接连接并最小化代码补全请求的延迟,清除 禁用代码建议的直接连接 复选框。
    • 要禁用直接连接,选择 禁用代码建议的直接连接 复选框。

反馈

请在 issue 435783 中提供您对 Code Suggestions 体验的反馈。