为 Duo Self-Hosted 开发 AI 功能
本文档概述了为 GitLab Duo Self-Hosted 开发 AI 功能的流程。为 GitLab Duo Self-Hosted 开发 AI 功能与为 Duo SaaS 开发 AI 功能非常相似,但存在一些差异。
获取托管模型的访问权限
截至 2025 年 7 月,以下模型目前可供 GitLab 团队成员用于开发目的:
- AWS Bedrock 上的
Claude Sonnet 3.5 - AWS Bedrock 上的
Claude Sonnet 3.5 v2 - AWS Bedrock 上的
Claude Sonnet 3.7 - AWS Bedrock 上的
Claude Sonnet 4 - AWS Bedrock 上的
Claude Haiku 3.5 - AWS Bedrock 上的
Llama 3.3 70b - AWS Bedrock 上的
Llama 3.1 8b - AWS Bedrock 上的
Llama 3.1 70b - FireworksAI 上的
Mistral Small - FireworksAI 上的
Mixtral 8x22b - FireworksAI 上的
Codestral 22b v0.1 - FireworksAI 上的
Llama 3.1 70b - FireworksAI 上的
Llama 3.1 8b - FireworksAI 上的
Llama 3.3 70b
开发环境提供有限模型集的访问权限,以优化成本。完整模型目录 在生产部署中可用。
获取 FireworksAI 模型的访问权限
要获取 FireworksAI 的访问权限,首先创建一个访问请求。如果您不确定要填写哪些信息,请参阅此示例访问请求。
我们的 FireworksAI 账户由 Create::Code Creation 管理。获得访问权限后,导航到 https://fireworks.ai/ 创建 API 密钥。
获取 AWS Bedrock 模型的访问权限
要获取 AWS Bedrock 中模型的访问权限,请使用 aws_services_account_iam_update 模板创建访问请求。如果您不确定要填写哪些信息,请参阅此示例访问请求。
您的访问请求获得批准后,可以通过访问 https://gitlabsandbox.cloud/login 获取 AWS 凭证。
登录 gitlabsandbox.cloud 后,执行以下步骤:
- 选择
cstm-mdls-dev-bedrockAWS 账户。 - 在页面右上角,选择 查看 IAM 凭证。
- 在打开的模型中,您应该能够看到
AWS 控制台 URL、用户名和密码。访问此 AWS 控制台 URL 并输入获取的用户名和密码进行登录。
在 AWS Bedrock 上,您必须获取要使用模型的访问权限。为此:
- 访问 AWS 模型目录控制台。
- 确保您的位置设置为
us-east-1。 - 从模型列表中,找到您要使用的模型,并将鼠标悬停在 可请求访问 链接上。然后选择 请求访问。
- 完成表单以请求访问该模型。
您的访问权限应在几分钟内获得批准。
在 AWS 上生成访问密钥和秘密密钥
要使用 AWS Bedrock 模型,您必须生成访问密钥。要生成这些访问密钥:
- 访问 IAM 控制台。
- 选择 用户 选项卡。
- 选择您的用户名。
- 选择 安全凭证 选项卡。
- 选择 创建访问密钥。
- 选择 下载 .csv 以下载访问密钥。
将访问密钥保存在安全的位置。您需要它们来配置模型。
或者,要在 AWS 上生成访问密钥,您可以遵循此关于如何在 AWS 中创建访问和秘密密钥的视频。
设置您的 GDK 环境
GitLab Duo Self-Hosted 要求您的 GDK 环境在 Self-Managed 模式下运行。它在 Multi-Tenant/SaaS 模式下不起作用。
要设置您的 GDK 环境以运行 GitLab Duo Self-Hosted,请按照此AI 开发文档中的步骤操作,在 GitLab Self-Managed / Dedicated 模式 下。
设置环境变量
要使用托管模型,请在您的 AI 网关上设置以下环境变量:
-
在
GDK_ROOT/gitlab-ai-gateway/.env文件中,设置以下变量:AWS_ACCESS_KEY_ID=your-access-key-id AWS_SECRET_ACCESS_KEY=your-secret-access-key AWS_REGION=us-east-1 FIREWORKS_AI_API_KEY=your-fireworks-api-key AIGW_CUSTOM_MODELS__ENABLED=true # useful for debugging AIGW_LOGGING__ENABLE_REQUEST_LOGGING=true AIGW_LOGGING__ENABLE_LITELLM_LOGGING=true -
在
GDK_ROOT/env.runit文件中,设置以下变量:export GITLAB_SIMULATE_SAAS=0 -
使用
bundle exec rake gitlab:duo:seed_self_hosted_models为您的 Duo 自托管模型进行种子化。 -
运行
bundle exec rake gitlab:duo:list_self_hosted_models应该输出创建的模型列表 -
使用
gdk restart重启您的 GDK 以使更改生效。
在 UI 中配置自定义模型
要在 GitLab 实例中启用自托管模型的使用,请按照以下步骤操作:
-
在您的 GDK 实例上,转到
/admin/gitlab_duo/configuration。 -
选择 在 GitLab Duo Self-Hosted 中使用测试版模型和功能 复选框。
-
对于 本地 AI 网关 URL,输入您的 AI 网关实例的 URL。在大多数情况下,这将是
http://localhost:5052。 -
保存更改。
-
要保存更改,选择 创建自托管模型。
- 通过点击
Create self-hosted model按钮保存您的更改。
使用自托管模型为 AI 功能提供支持
要使用创建的自托管模型为 AI 原生功能提供支持:
- 在您的 GDK 实例上,转到
/admin/gitlab_duo/self_hosted。 - 对于您要与自托管模型一起使用的每个 AI 功能(例如,代码生成、代码补全、通用聊天、解释代码等),从相应的下拉列表中选择您新创建的自托管模型(例如,Bedrock 上的 Claude 3.5 Sonnet)。
- 可选。要将配置复制到特定类别下的所有功能,请选择其旁边的复制图标。
- 完成选择后,更改通常会自动保存。
这样,您就成功配置了自托管模型,为 GitLab 实例中的 AI 原生功能提供支持。要使用例如聊天功能测试该功能,请打开聊天并说 Hello。您应该在聊天中看到由您的自托管模型提供支持的响应。
将 GitLab.com 或 GitLab Self-Managed 中可用的功能迁移到 GitLab Duo Self-Hosted
要将 GitLab.com 或 GitLab Self-Managed 中可用的功能迁移到 GitLab Duo Self-Hosted:
- 使该功能可配置为使用自托管模型。
- 为该功能添加提示,为您要支持的每个模型系列。
使该功能可配置为使用自托管模型
当功能在 GitLab.com 或 GitLab Self-Managed 中可用时,它应该可配置为使用自托管模型。要使该功能可配置为使用自托管模型:
- 将该功能的名称添加到
ee/app/models/ai/feature_setting.rb中,作为稳定功能或测试版/实验性功能。 - 将该功能的名称添加到
ee/lib/gitlab/ai/feature_settings/feature_metadata.yml文件中,包括它支持的模型系列列表。 - 将单元原语添加到
gitlab-cloud-connector仓库 中的config/services/self_hosted_models.yml。此合并请求可用作参考。 - 基于上述更改关联的规范更改。
请参阅以下合并请求作为参考:
为该功能添加提示
为您要支持的该功能的每个模型系列,您必须添加一个提示。提示存储在 AI Gateway 仓库 中。
在大多数情况下,GitLab.com 上使用的提示也用于 Self-Hosted Duo。
请参阅以下合并请求作为参考:
您的功能现在应该在 GitLab Duo Self-Hosted 中可用。重启您的 GDK 实例以应用更改并测试该功能。