Help us learn about your current experience with the documentation. Take the survey.
代码建议 API
使用此 API 访问 代码建议 功能。
生成代码补全
- 状态:实验性功能
context 和 user_instruction 属性的可用性由功能标志控制。更多信息请参见历史记录。这些属性可用于测试,但尚未准备好用于生产环境。
POST /code_suggestions/completions此端点将每个用户的请求速率限制为每分钟 60 次。
使用 AI 抽象层来生成代码补全。
对此端点的请求会被代理到 AI 网关。
参数:
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
current_file |
hash | 是 | 正在为其生成建议的文件的属性。有关此属性接受的字符串列表,请参阅文件属性。 |
intent |
string | 否 | 补全请求的意图。可以是 completion 或 generation。 |
stream |
boolean | 否 | 是否在准备好时以较小的数据块流式传输响应(如果适用)。默认值:false。 |
project_path |
string | 否 | 项目的路径。 |
generation_type |
string | 否 | 生成请求的事件类型。可以是 comment、empty_function 或 small_file。 |
context |
array | 否 | 用于代码建议的额外上下文。有关此属性接受的参数列表,请参阅上下文属性。 |
user_instruction |
string | 否 | 用户对代码建议的指令。 |
文件属性
current_file 属性接受以下字符串:
file_name- 文件名。必需。content_above_cursor- 文件中当前光标位置上方的内容。必需。content_below_cursor- 文件中当前光标位置下方的内容。可选。
上下文属性
context 属性接受一个包含以下属性的元素列表:
type- 上下文元素的类型。可以是file或snippet。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 | 是 | 要验证的项目的路径。 |
如果成功,则返回:
此外,如果路径为空或项目不存在,则返回 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"
}