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

代码建议 API

使用此 API 访问 代码建议 功能。

生成代码补全

  • 状态:实验性功能

contextuser_instruction 属性的可用性由功能标志控制。更多信息请参见历史记录。这些属性可用于测试,但尚未准备好用于生产环境。

POST /code_suggestions/completions

此端点将每个用户的请求速率限制为每分钟 60 次。

使用 AI 抽象层来生成代码补全。

对此端点的请求会被代理到 AI 网关

参数:

属性 类型 必需 描述
current_file hash 正在为其生成建议的文件的属性。有关此属性接受的字符串列表,请参阅文件属性
intent string 补全请求的意图。可以是 completiongeneration
stream boolean 是否在准备好时以较小的数据块流式传输响应(如果适用)。默认值:false
project_path string 项目的路径。
generation_type string 生成请求的事件类型。可以是 commentempty_functionsmall_file
context array 用于代码建议的额外上下文。有关此属性接受的参数列表,请参阅上下文属性
user_instruction string 用户对代码建议的指令。

文件属性

current_file 属性接受以下字符串:

  • file_name - 文件名。必需。
  • content_above_cursor - 文件中当前光标位置上方的内容。必需。
  • content_below_cursor - 文件中当前光标位置下方的内容。可选。

上下文属性

context 属性接受一个包含以下属性的元素列表:

  • type - 上下文元素的类型。可以是 filesnippet
  • name - 上下文元素的名称。文件名或代码片段的名称。
  • content - 上下文元素的内容。文件主体或函数体。

请求示例:

curl --request POST \
  --header "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
  --data '{
      "current_file": {
        "file_name": "car.py",
        "content_above_cursor": "class Car:\n    def __init__(self):\n        self.is_running = False\n        self.speed = 0\n    def increase_speed(self, increment):",
        "content_below_cursor": ""
      },
      "intent": "completion"
    }' \
  --url "https://gitlab.example.com/api/v4/code_suggestions/completions"

响应示例:

{
  "id": "id",
  "model": {
    "engine": "vertex-ai",
    "name": "code-gecko"
  },
  "object": "text_completion",
  "created": 1688557841,
  "choices": [
    {
      "text": "\n        if self.is_running:\n            self.speed += increment\n            print(\"The car's speed is now",
      "index": 0,
      "finish_reason": "length"
    }
  ]
}

验证代码建议是否已启用

使用此端点验证以下任一情况:

  • 项目是否启用了 code_suggestions
  • 项目的组是否在其命名空间设置中启用了 code_suggestions
POST code_suggestions/enabled

支持的属性:

属性 类型 必需 描述
project_path string 要验证的项目的路径。

如果成功,则返回:

  • 如果功能已启用,则返回 200
  • 如果功能已禁用,则返回 403

此外,如果路径为空或项目不存在,则返回 404

请求示例:

curl --request POST \
  --url "https://gitlab.example.com/api/v4/code_suggestions/enabled"
  --header "Private-Token: <YOUR_ACCESS_TOKEN>" \
  --header "Content-Type: application/json" \
  --data '{
      "project_path": "group/project_name"
    }' \

获取 AI 网关的直接连接详细信息

POST /code_suggestions/direct_access

此端点将每个用户的请求速率限制为每 5 分钟 10 次。

返回用户特定的连接详细信息,可供 IDE/客户端用于直接向 AI 网关发送 completion 请求,包括必须代理到 AI 网关的标头以及所需的身份验证令牌。

请求示例:

curl --request POST \
  --header "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
  --url "https://gitlab.example.com/api/v4/code_suggestions/direct_access"

响应示例:

{
  "base_url": "http://0.0.0.0:5052",
  "token": "a valid token",
  "expires_at": 1713343569,
  "headers": {
    "X-Gitlab-Instance-Id": "292c3c7c-c5d5-48ec-b4bf-f00b724ce560",
    "X-Gitlab-Realm": "saas",
    "X-Gitlab-Global-User-Id": "Df0Jhs9xlbetQR8YoZCKDZJflhxO0ZBI8uoRzmpnd1w=",
    "X-Gitlab-Host-Name": "gitlab.example.com"
  }
}

获取连接详细信息

POST /code_suggestions/connection_details

此端点将每个用户的请求速率限制为每分钟 10 次。

返回用户特定的连接详细信息,可供 IDE/客户端用于遥测,包括用户连接到的 GitLab 实例的元数据。

请求示例:

curl --request POST \
  --header "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
  --url "https://gitlab.example.com/api/v4/code_suggestions/connection_details"

响应示例:

{
  "instance_id": "292c3c7c-c5d5-48ec-b4bf-f00b724ce560",
  "instance_version": "18.2",
  "realm": "saas",
  "global_user_id": "Df0Jhs9xlbetQR8YoZCKDZJflhxO0ZBI8uoRzmpnd1w=",
  "host_name": "gitlab.example.com",
  "feature_enablement_type": "duo_pro",
  "saas_duo_pro_namespace_ids": "1000000"
}