InfoGrab Docs

코드 제안 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가 제거되었습니다.
  • contextuser_instruction 속성이 GitLab 17.1에서 code_suggestions_context라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.
  • contextuser_instruction 속성이 GitLab 18.6에서 일반 공개되었습니다. 기능 플래그 code_suggestions_context가 제거되었습니다.
POST /code_suggestions/completions
Note

이 엔드포인트는 각 사용자를 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 문자열 확인할 프로젝트의 경로.

성공 시 반환:

  • 기능이 활성화된 경우 200.
  • 기능이 비활성화된 경우 403.

경로가 비어 있거나 프로젝트가 존재하지 않는 경우 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에 대한 직접 연결 세부 정보 가져오기#

히스토리
  • GitLab 17.0에서 code_suggestions_direct_completions라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.
  • GitLab 17.2에서 일반 공개되었습니다. 기능 플래그 code_suggestions_direct_completions가 제거되었습니다.
POST /code_suggestions/direct_access
Note

이 엔드포인트는 각 사용자를 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
Note

이 엔드포인트는 각 사용자를 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"
}

코드 제안 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가 제거되었습니다.
  • contextuser_instruction 속성이 GitLab 17.1에서 code_suggestions_context라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.
  • contextuser_instruction 속성이 GitLab 18.6에서 일반 공개되었습니다. 기능 플래그 code_suggestions_context가 제거되었습니다.
POST /code_suggestions/completions
Note

이 엔드포인트는 각 사용자를 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 문자열 확인할 프로젝트의 경로.

성공 시 반환:

  • 기능이 활성화된 경우 200.
  • 기능이 비활성화된 경우 403.

경로가 비어 있거나 프로젝트가 존재하지 않는 경우 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에 대한 직접 연결 세부 정보 가져오기#

히스토리
  • GitLab 17.0에서 code_suggestions_direct_completions라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.
  • GitLab 17.2에서 일반 공개되었습니다. 기능 플래그 code_suggestions_direct_completions가 제거되었습니다.
POST /code_suggestions/direct_access
Note

이 엔드포인트는 각 사용자를 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
Note

이 엔드포인트는 각 사용자를 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"
}