코드 제안 API

코드 제안 기능에 액세스하려면 코드 제안 API를 사용하십시오.

코드 완성 생성

Status: Experiment
POST /code_suggestions/completions
note
이 엔드포인트는 각 사용자를 1분의 창구에서 60번의 요청으로 제한합니다.

AI 추상화 계층을 사용하여 코드 완성을 생성하십시오.

이 엔드포인트로의 요청은 AI Gateway로 프록시됩니다.

매개변수:

속성 유형 필수 설명
current_file 해시 코드 제안이 생성되는 파일의 속성입니다. 이 속성이 허용하는 문자열 디렉터리에 대한 정보는 파일 속성을 참조하십시오.
intent 문자열 아니요 완성 요청의 의도입니다. 옵션: completion 또는 generation.
stream 부울 아니요 (해당되는 경우) 응답을 작은 청크로 스트리밍할 지 여부입니다. 기본값: false
project_path 문자열 아니요 프로젝트의 경로입니다.

파일 속성

current_file 속성은 다음 문자열을 허용합니다:

  • file_name - 파일의 이름입니다. 필수 항목.
  • content_above_cursor - 현재 커서 위치 위의 파일 내용입니다. 필수 항목.
  • content_below_cursor - 현재 커서 위치 아래의 파일 내용입니다. 선택적 항목입니다.

예시 요청:

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 문자열 확인하려는 프로젝트의 경로입니다.

성공할 경우 반환:

  • 기능이 활성화된 경우 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"
    }' \

직접 연결 정보 가져오기

Status: Experiment
  • GitLab 17.0에서 여기에서 소개되었습니다 : 기본적으로 비활성화된 code_suggestions_direct_completions라는 플래그와 함께 소개되었습니다. 이 기능은 기본적으로 비활성화되어 있으며 실험적입니다.

플래그: 자체 호스팅하는 GitLab에서는 기본적으로 이 기능을 사용할 수 없습니다. 사용하려면 관리자가 피처 플래그code_suggestions_direct_completions를 활성화해야 합니다. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 없습니다. 이 기능은 제품화 준비가 되지 않았습니다.

POST /code_suggestions/direct_access
note
이 엔드포인트는 각 사용자를 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": "유효한 토큰",
  "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"
  }
}