- 코드 완성
- 코드 생성
- 코드 제안 사용
- 최상의 방법
- 컨텍스트로 탭 열기
- 지원되는 고급 컨텍스트 언어
- 추론 창 컨텍스트
- 파일 내용 자르기
- 출력 길이
- 결과의 정확도
- 응답 시간
- 코드 제안 비활성화
- 피드백
코드 제안
- GitLab 16.1에서 Google Vertex AI Codey API 지원 추가됨.
- GitLab 16.2에서 GitLab 네이티브 모델 지원 제거됨.
- GitLab 16.3에서 코드 생성 지원 추가됨.
- GitLab 16.7에서 일반적으로 사용 가능해짐.
- 2024년 2월 15일에 구독 요구사항이 GitLab Duo Pro로 변경됨.
참고: 최상의 사용자 경험과 결과를 위해 GitLab Duo는 17.2 버전 이상의 GitLab을 필요로 합니다. 이전 버전은 계속 작동할 수 있지만 경험은 저하될 수 있습니다.
개발 중 코드 제안을 통해 코드를 효율적으로 작성하세요.
GitLab Duo 코드 제안으로 코드 완성과 코드 생성을 제공받을 수 있습니다.
코드 완성
코드 완성은 입력 중인 라인에 대한 완성을 제안합니다. 코드 완성은 대부분의 상황에서 한 줄 또는 몇 줄의 코드를 빠르게 완성하는 데 사용됩니다.
코드 생성
코드 생성은 자연어 코드 주석 블록을 기반으로 코드를 생성합니다. 예를 들어 # check if code suggestions are enabled for current user
와 같은 주석을 작성하고 Enter를 누르면 주석의 컨텍스트와 나머지 코드를 기반으로 코드를 생성합니다.
코드 생성은 다음과 같은 경우에 사용됩니다:
- 주석을 작성하고 Enter를 누릅니다.
- 빈 함수나 메소드를 입력합니다.
- 편집 중인 파일에 코드가 다섯 줄 미만으로 있는 경우.
코드 생성 요청은 코드 완성 요청보다 시간이 더 걸리지만 다음과 같은 이유로 더 정확한 응답을 제공합니다:
- 더 큰 LLM을 사용합니다.
- 요청에 추가적인 컨텍스트를 보냅니다. 예를 들어, 프로젝트에서 사용하는 라이브러리 등.
- 지시사항이 LLM에 전달됩니다.
코드 제안 사용
전제 조건:
- 지원되는 IDE 확장 프로그램 중 하나를 사용해야 합니다.
- 귀하의 조직이 GitLab Duo Pro 애드온을 구매했고 귀하에게 자리를 할당했어야 합니다.
- Self-managed GitLab을 사용하는 경우 GitLab 16.8 이상 버전이어야 하며 프록시 설정을 해야 합니다.
코드 제안 사용 방법:
- 지원되는 IDE에서 귀하의 Git 프로젝트를 엽니다.
- 프로젝트를 로컬 리포지토리의 원격으로 추가합니다.
git remote add
를 사용하세요. - 숨겨진
.git/
폴더를 포함하여 프로젝트 디렉터리를 IDE 작업 공간 또는 프로젝트에 추가합니다. -
코드를 작성하세요. 입력하는 동안 제안이 표시됩니다. 코드 제안은 코드 스니펫을 제공하거나 현재 라인을 완성합니다.
-
자연어로 요구 사항을 설명하세요. 코드 제안은 제공된 컨텍스트를 기반으로 함수와 코드 스니펫을 생성합니다.
- 제안을 받으면 다음 중 하나를 수행할 수 있습니다:
- 위안을 받으려면 Tab을 누릅니다.
- 부분적인 제안을 받으려면 Control+Right arrow 또는 Command+Right arrow를 누릅니다.
- 제안을 거부하려면 Esc를 누릅니다.
- 제안을 무시하려면 보통대로 입력을 계속하세요.
AI는 결정론적이지 않기 때문에 동일한 입력으로 매번 동일한 제안을 받을 수는 없습니다. 품질이 좋은 코드를 생성하려면 명확하고 구체적인 작업을 작성하세요.
최상의 방법
코드 생성에서 최상의 결과를 얻으려면 다음을 수행하세요:
- 명확하고 구체적인 상태로 가능한 한 구체적이세요.
- 생성하려는 결과(예: 함수)를 명시하고 달성하려는 목표에 대한 세부 정보를 제공하세요.
- 사용할 프레임워크나 라이브러리와 같은 추가 정보를 추가하세요.
- 각 주석 뒤에 공백이나 새 줄을 추가하세요. 이것은 코드 생성기에게 지시를 완료했음을 알려줍니다.
-
advanced_context_resolver
및code_suggestions_context
기능 플래그가 활성화된 GitLab 17.2 이상의 경우 관련 파일을 다른 탭에서 열어 추론 창 컨텍스트를 확장하세요.
예를 들어 특정 요구 사항을 충족하는 Python 웹 서비스를 만들려면 다음과 같은 주석을 작성할 수 있습니다:
# 사용자가 로그인하고 보안 검사를 실행하고 검사 결과를 검토할 수 있는 Tornado를 사용한 웹 서비스를 생성합니다.
# 각 작업 (로그인, 검사 실행 및 결과 검토)은 웹 서비스의 각 자원이어야 합니다.
...
AI는 결정론적이지 않기 때문에 동일한 입력으로 매번 동일한 제안을 받을 수는 없습니다. 품질이 좋은 코드를 생성하려면 명확하고 구체적인 작업을 작성하세요.
사용 사례 및 최상의 방법에 대한 자세한 내용은 GitLab Duo 예제 문서를 참고하세요.
컨텍스트로 탭 열기
- GitLab 17.2에서 추가됨. 기본적으로 비활성화된
advanced_context_resolver
플래그로 지원됩니다.- GitLab 17.2에서 추가됨. 기본적으로 비활성화된
code_suggestions_context
플래그로 지원됩니다.- GitLab Workflow for VS Code 4.20.0에서 추가됨.
- GitLab Duo for JetBrains 2.7.0에서 추가됨.
- 2024년 7월 16일에 GitLab Neovim 플러그인에 추가됨.
플래그: 이 기능의 사용 가능 여부는 플래그로 제어됩니다. 자세한 내용은 이력을 참조하세요.
코드 제안 및 코드 생성의 더 정확하고 관련성 높은 결과를 얻으려면 IDE의 탭에 열린 파일의 내용을 사용할 수 있습니다. 프롬프트 엔지니어링과 유사하게, 이러한 파일은 GitLab Duo에게 코드 프로젝트의 표준 및 관행에 대한 정보를 제공합니다.
오픈 탭을 컨텍스트로 활성화
기본적으로 Code Suggestions는 제안을 할 때 IDE에서 열린 파일을 컨텍스트로 사용합니다.
필수 조건:
- GitLab 17.2 이상이어야 합니다. Code Suggestions을 지원하는 이전 GitLab 버전에서는 프로젝트의 다른 파일보다 열린 탭의 내용을 강조할 수 없습니다.
- GitLab Duo Code Suggestions이 프로젝트에 활성화되어 있어야 합니다.
-
지원되는 코드 언어를 사용하세요:
- 코드 완성: 모든 구성된 언어.
- 코드 생성: Go, Java, JavaScript, Kotlin, Python, Ruby, Rust, TypeScript (
.ts
및.tsx
파일), Vue, 그리고 YAML.
- Visual Studio Code의 경우, GitLab Workflow 확장 프로그램 버전 4.14.2 이상이어야 합니다.
열린 탭이 컨텍스트로 사용되는지 확인하려면:
- 상단 메뉴에서 Code > 설정 > 확장으로 이동합니다.
- 목록에서 GitLab Workflow를 검색하여 기어 아이콘을 선택합니다.
- Extension Settings을 선택합니다.
- User 설정에서 GitLab › Duo Code Suggestions: Open Tabs Context 아래에서 Use the contents of open tabs as context를 선택합니다.
- IDE의 상단 메뉴로 이동하여 설정을 선택합니다.
- 왼쪽 사이드바에서 Tools를 확장하고 GitLab Duo를 선택합니다.
- GitLab Language Server를 확장합니다.
- 아래 Code Completion에서 Send open tabs as context를 선택합니다.
- OK 또는 저장을 선택합니다.
오픈 탭을 컨텍스트로 사용
컨텍스트 제공을 위해 원하는 파일을 엽니다:
- 열린 탭은 가장 최근에 열거나 변경된 파일을 사용합니다.
- 추가적인 컨텍스트로 사용되기를 원치 않는 파일은 닫습니다.
파일에서 작업을 시작할 때 GitLab Duo는 열린 파일을 추가 컨텍스트로 사용하여 파일 내용의 자르기 제한 내에서 작업합니다.
코드 생성 결과를 조정하기 위해 파일에 코드 주석을 추가하여 원하는 내용을 설명할 수 있습니다.
코드 생성은 코드 주석을 채팅처럼 취급합니다. 코드 주석은 user_instruction
을 업데이트한 다음
받는 다음 결과를 개선합니다.
이 프롬프트를 작성하는 코드에 대해 알아보려면 다음 파일을 참조하세요:
-
코드 생성:
ee/lib/api/code_suggestions.rb
gitlab
저장소에서. -
코드 완성:
ai_gateway/code_suggestions/processing/completions.py
modelops
저장소에서.
이 기능에 대한 피드백을 이슈 258에서 제공하세요.
지원되는 고급 컨텍스트 언어
고급 컨텍스트 기능은 다음 언어를 지원합니다:
- 코드 완성: 모든 구성된 언어.
- 코드 생성: Go, Java, JavaScript, Kotlin, Python, Ruby, Rust, TypeScript (
.ts
및.tsx
파일), Vue, 그리고 YAML.
추론 창 컨텍스트
- GitLab 16.8에서 일반적으로 이용 가능.
- GitLab 17.2에서 오픈 탭 컨텍스트 도입 플래그로
advanced_context_resolver
및code_suggestions_context
. 기본적으로 비활성화됨.
Code Suggestions은 다음에 대해 추론합니다:
- 현재 열린 파일
- 커서 앞 뒤의 내용
- 파일명 및 확장자.
- GitLab 17.2 이상에서
advanced_context_resolver
와code_suggestions_context
기능 플래그가 활성화되었을 때.- 다른 탭에서 열린 파일.
- 사용자 지시
제안의 품질을 향상시키기 위해 가능한 미래 컨텍스트 확장에 대한 자세한 내용은 epic 11669을 참조하세요.
파일 내용 자르기
LLM 제한과 성능 상의 이유로 현재 열린 파일의 내용은 자릅니다:
- 코드 완성: 2048 토큰에 대해 (대략 8192 문자).
- 코드 생성: 142,856 토큰에 대해 (대략 500,000 문자).
커서 위의 내용이 커서 아래의 내용보다 우선합니다. 커서 위의 내용은 왼쪽에서, 커서 아래의 내용은 오른쪽에서 자릅니다. 이 숫자는 Code Suggestions의 최대 입력 컨텍스트 크기를 나타냅니다.
출력 길이
LLM 제한과 성능 상의 이유로 Code Suggestions의 출력이 제한됩니다:
- 코드 완성: 64 토큰에 대해 (대략 256 문자).
- 코드 생성: 2048 토큰에 대해 (대략 7168 문자).
결과의 정확도
전반적으로 생성된 콘텐츠의 정확도를 높이기 위해 노력 중입니다. 그러나 Code Suggestions은 다음과 같은 제안을 생성할 수 있습니다:
- 관련 없는.
- 불완전한.
- 실패한 파이프라인 결과.
- 잠재적으로 보안에 취약한.
- 모욕적이거나 민감한 내용.
Code Suggestions를 사용할 때는 코드 검토 최상의 관행이 여전히 적용됩니다.
응답 시간
Code Suggestions은 생성적 AI 모델에 의해 구동됩니다.
- 코드 완성의 경우, 제안은 일반적으로 지연이 적으며 1초 미만이 소요됩니다.
- 코드 생성의 경우, 알고리즘 또는 대규모 코드 블록은 5초 이상이 소요될 수 있습니다.
개인 액세스 토큰을 사용하여 안전한 API 연결이 GitLab.com 또는 GitLab 인스턴스로 제공됩니다. 이 API 연결은 IDE/편집기에서 GitLab AI Gateway로 컨텍스트 창을 안전하게 전송하며, 공유 게이트웨이가 대규모 언어 모델 API를 호출한 다음, 생성된 제안이 IDE/편집기로 다시 전송됩니다.
Streaming
VS Code에서 코드 생성 응답을 스트리밍하는 기능을 지원하여 평균 응답 시간을 단축합니다. 다른 지원되는 IDE는 더 느린 응답 시간을 제공하며 생성된 코드를 한 블록으로 반환합니다.
자체 호스팅 모델 사용
코드 제안 요청을 관리하기 위한 기본 모델 대신 자체 호스팅 모델을 배포하여 외부 모델로 아무 것도 전송되지 않도록 보안과 개인 정보 보호를 극대화할 수 있습니다.
직접 및 간접 연결
- 이슈에서 소개됨 GitLab 17.2에서
code_suggestions_direct_access
라는 플래그와 함께 기본 설정에서 비활성화됨.
기본적으로 코드 완성 요청은 IDE에서 AI Gateway로 직접 보내져 지연 시간을 최소화합니다.
이러한 직접 연결이 작동하려면 IDE가 https://cloud.gitlab.com:443
에 연결해야 합니다. 이것이 불가능한 경우(예: 네트워크 제한 때문) 모든 사용자에게 직접 연결을 비활성화할 수 있습니다. 이렇게 하면 코드 완성 요청이 GitLab 자체 관리 인스턴스를 통해 간접적으로 보내지며, 다시 해당 요청을 AI Gateway로 보냅니다. 이로 인해 요청의 지연 시간이 높아질 수 있습니다.
직접 또는 간접 연결 구성
전제 조건:
- GitLab 자체 관리 인스턴스의 관리자여야 합니다.
- 왼쪽 사이드바에서 아래쪽에서 관리를 선택합니다.
- 설정 > 일반을 선택합니다.
- GitLab Duo 기능을 확장합니다.
-
연결 방법에서 옵션을 선택합니다:
- 코드 완성 요청의 지연 시간을 최소화하려면 직접 연결을 선택합니다.
- 모든 사용자의 직접 연결을 비활성화하려면 GitLab 자체 관리 인스턴스를 통한 간접 연결을 선택합니다.
- 변경 사항 저장을 선택합니다.
- 왼쪽 사이드바에서 아래쪽에서 관리를 선택합니다.
- 설정 > 일반을 선택합니다.
- AI 기반 기능을 확장합니다.
- 옵션을 선택합니다:
- 직접 연결을 활성화하고 코드 완성 요청의 지연 시간을 최소화하려면 코드 제안을위한 직접 연결 비활성화 확인란을 해제합니다.
- 직접 연결을 비활성화하려면 코드 제안을위한 직접 연결 비활성화 확인란을 선택합니다.
코드 제안 비활성화
코드 제안을 비활성화하려면 IDE 편집기 확장 프로그램에서 해당 기능을 비활성화하십시오. 자세한 내용은 확장 프로그램의 설명서를 참조하십시오.
원하신다면 그룹, 프로젝트 또는 인스턴스용 GitLab Duo를 끄거나 켤 수 있습니다.
피드백
이슈 435783에서 코드 제안 경험에 대한 피드백을 제공하세요.