코드 제안 API
이 API를 사용하여 GitLab Duo Code Suggestions에 접근합니다. 이 엔드포인트는 각 사용자를 1분 창에서 60개 요청으로 속도를 제한합니다. AI 추상화 레이어를 사용하여 코드 완성을 생성합니다. 이 엔드포인트에 대한 요청은 AI Gateway로 프록시됩니다.
이 API를 사용하여 GitLab Duo Code Suggestions에 접근합니다.
코드 완성 생성#
히스토리
- GitLab 16.2에서
code_suggestions_completion_api라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다. 이 기능은 실험적입니다. - 이 엔드포인트를 호출하기 전에 JWT를 생성해야 하는 요구 사항이 GitLab 16.3에서 제거되었습니다.
- GitLab 16.8에서 일반 공개되었습니다. 기능 플래그
code_suggestions_completion_api가 제거되었습니다. context및user_instruction속성이 GitLab 17.1에서code_suggestions_context라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.context및user_instruction속성이 GitLab 18.6에서 일반 공개되었습니다. 기능 플래그code_suggestions_context가 제거되었습니다.
POST /code_suggestions/completions
이 엔드포인트는 각 사용자를 1분 창에서 60개 요청으로 속도를 제한합니다.
AI 추상화 레이어를 사용하여 코드 완성을 생성합니다.
이 엔드포인트에 대한 요청은 AI Gateway로 프록시됩니다.
파라미터:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
current_file |
해시 | 예 | 제안을 생성할 파일의 속성. 이 속성이 허용하는 문자열 목록은 파일 속성을 참조하세요. |
intent |
문자열 | 아니요 | 완성 요청의 의도. completion 또는 generation 중 하나일 수 있습니다. |
stream |
부울 | 아니요 | 준비된 응답을 더 작은 청크로 스트리밍할지 여부 (해당되는 경우). 기본값: false. |
project_path |
문자열 | 아니요 | 프로젝트의 경로. |
generation_type |
문자열 | 아니요 | 생성 요청의 이벤트 유형. comment, empty_function 또는 small_file일 수 있습니다. |
context |
배열 | 아니요 | Code Suggestions에 사용할 추가 컨텍스트. 이 속성이 허용하는 파라미터 목록은 컨텍스트 속성을 참조하세요. |
user_instruction |
문자열 | 아니요 | Code Suggestions에 대한 사용자 지시. |
파일 속성#
current_file 속성은 다음 문자열을 허용합니다:
file_name- 파일의 이름. 필수.content_above_cursor- 현재 커서 위치 위의 파일 내용. 필수.content_below_cursor- 현재 커서 위치 아래의 파일 내용. 선택 사항.
컨텍스트 속성#
context 속성은 다음 속성을 포함하는 요소 목록을 허용합니다:
type- 컨텍스트 요소의 유형.file또는snippet중 하나일 수 있습니다.name- 컨텍스트 요소의 이름. 파일 이름 또는 코드 스니펫.content- 컨텍스트 요소의 내용. 파일 본문 또는 함수.
요청 예시:
curl --request POST \
--header "Authorization: Bearer " \
--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 활성화 여부 확인#
히스토리
- GitLab 16.7에서 도입되었습니다.
이 엔드포인트를 사용하여 다음 중 하나를 확인합니다:
- 프로젝트에
code_suggestions가 활성화되어 있는지. - 프로젝트의 그룹의 네임스페이스 설정에서
code_suggestions가 활성화되어 있는지.
POST code_suggestions/enabled
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
project_path |
문자열 | 예 | 확인할 프로젝트의 경로. |
성공 시 반환:
경로가 비어 있거나 프로젝트가 존재하지 않는 경우 404를 반환합니다.
요청 예시:
curl --request POST \
--url "https://gitlab.example.com/api/v4/code_suggestions/enabled" \
--header "PRIVATE-TOKEN: " \
--header "Content-Type: application/json" \
--data '{
"project_path": "group/project_name"
}'
AI Gateway에 대한 직접 연결 세부 정보 가져오기#
히스토리
POST /code_suggestions/direct_access
이 엔드포인트는 각 사용자를 5분 창에서 10개 요청으로 속도를 제한합니다.
IDE/클라이언트가 AI Gateway로 직접 completion 요청을 보내는 데 사용할 수 있는 사용자별 연결 세부 정보를 반환하며, AI Gateway로 프록시해야 하는 헤더 및 필요한 인증 토큰을 포함합니다.
요청 예시:
curl --request POST \
--header "Authorization: Bearer " \
--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"
}
}
연결 세부 정보 가져오기#
히스토리
- GitLab 18.3에서 도입되었습니다.
POST /code_suggestions/connection_details
이 엔드포인트는 각 사용자를 1분 창에서 10개 요청으로 속도를 제한합니다.
IDE/클라이언트가 원격 측정에 사용할 수 있는 사용자별 연결 세부 정보를 반환하며, 사용자가 연결된 GitLab 인스턴스에 대한 메타데이터를 포함합니다.
요청 예시:
curl --request POST \
--header "Authorization: Bearer " \
--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"
}
