코드 제안 API
코드 제안 기능에 액세스하기 위해 코드 제안 API를 사용합니다.
코드 완성 생성
Status: Experiment
- GitLab 16.2에 도입되었습니다. 기본적으로 비활성화된
code_suggestions_completion_api
라는 플래그와 함께. 이 기능은 실험적인 기능입니다.- GitLab 16.3에서 이 엔드포인트를 호출하기 전에 JWT를 생성하는 요구사항이 제거되었습니다.
- GitLab 16.8에서 일반 사용 가능(GA) 상태로 전환했습니다. 기능 플래그
code_suggestions_completion_api
가 제거되었습니다.context
및user_instruction
속성이 GitLab 17.1에 도입되었습니다. 기본적으로 비활성화된code_suggestions_context
라는 플래그와 함께.
context
및 user_instruction
속성의 가용성은 기능 플래그로 제어됩니다.
자세한 정보는 이력을 참조하십시오.
이러한 속성은 테스트용으로 사용할 수 있지만 제품용으로 준비되지 않았습니다.
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
| 배열 | 아니요 | 코드 제안에 사용할 추가 컨텍스트입니다. 이 속성이 허용하는 매개변수 목록에 대해서는 컨텍스트 속성을 참조하십시오. |
user_instruction
| 문자열 | 아니요 | 사용자의 코드 제안 지침입니다. |
파일 속성
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"
}
]
}
코드 제안이 활성화되었는지 확인
- GitLab 16.7에 도입되었습니다.
아래 엔드포인트를 사용하여 프로젝트 또는 그룹의 네임스페이스 설정에서 활성화된 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: <YOUR_ACCESS_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"project_path": "group/project_name"
}' \
직접 연결 정보 가져오기
- GitLab 17.0에 도입되었습니다. 기본적으로 비활성화된
code_suggestions_direct_completions
라는 플래그와 함께.- GitLab 17.2에서 일반 사용 가능으로 전환되었습니다. 기능 플래그
code_suggestions_direct_completions
가 제거되었습니다.
POST /code_suggestions/direct_access
이 엔드포인트는 각 사용자를 5분 윈도우 당 10개의 요청으로 제한합니다.
IDE/클라이언트가 완성 요청을 AI Gateway로 직접 보낼 수 있는 사용자별 연결 세부 정보를 반환합니다.
예시 요청:
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"
}
}