- 코드 완성
- 코드 생성
- 코드 제안 사용
- 모범 사례
- 탭을 컨텍스트로 열기
- 고급 컨텍스트 지원 언어
- 추론 창 컨텍스트
- 파일 내용의 트렁케이션
- 출력 길이
- 결과의 정확성
- 응답 시간
- 코드 제안 비활성화
- 피드백
코드 제안
세부정보: Tier: Premium with GitLab Duo Pro or Ultimate with GitLab Duo Pro or Enterprise
Offering: GitLab.com, Self-managed, GitLab Dedicated
- 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는 최상의 사용자 경험과 결과를 위해 GitLab 17.2 이상이 필요합니다. 이전 버전도 계속 작동할 수 있지만 경험이 저하될 수 있습니다.
개발 중에 생성적 AI를 사용하여 코드를 제안함으로써 더 효율적으로 코드를 작성하세요.
GitLab Duo 코드 제안을 사용하면 코드 완성과 코드 생성을 얻을 수 있습니다.
코드 완성
코드 완성은 당신이 입력 중인 줄에 대한 완료 제안을 합니다.
코드 완성은 코드의 몇 줄을 빠르게 완성하는 데 가장 많이 사용됩니다.
코드 생성
코드 생성은 자연어 코드 주석 블록을 기반으로 코드를 생성합니다.
# check if code suggestions are enabled for current user
와 같은 주석을 작성한 후 Enter를 눌러 주석의 맥락과 나머지 코드에 따라 코드를 생성하세요.
코드 생성은 다음의 경우에 사용됩니다:
- 주석을 작성하고 Enter를 누릅니다.
- 빈 함수나 메서드를 입력합니다.
- 편집 중인 파일이 5줄 미만의 코드를 포함합니다.
코드 생성 요청은 코드 완성 요청보다 시간이 더 걸리지만 다음과 같은 이유로 더 정확한 응답을 제공합니다:
- 더 큰 LLM이 사용됩니다.
- 요청에 추가적인 맥락이 전송됩니다. 예를 들어, 프로젝트에서 사용되는 라이브러리입니다.
- 귀하의 지침이 LLM에 전달됩니다.
코드 제안 사용
전제 조건:
- 지원되는 IDE 확장 중 하나를 가지고 있어야 합니다.
- 귀하의 조직은 GitLab Duo Pro 추가 기능을 구매하고 귀하에게 좌석을 할당해야 합니다.
- 자체 관리되는 GitLab의 경우 GitLab 16.8 이상을 사용해야 하며, 프록시 설정을 구성해야 합니다.
코드 제안을 사용하려면:
-
지원되는 IDE에서 Git 프로젝트를 엽니다.
-
git remote add
를 사용하여 프로젝트를 로컬 저장소의 원격으로 추가합니다. -
숨겨진
.git/
폴더를 포함하여 프로젝트 디렉토리를 IDE 작업 공간이나 프로젝트에 추가합니다. -
코드를 작성합니다.
타이핑하는 동안 제안이 표시됩니다. 코드 제안은 커서 위치에 따라 코드 조각을 제공하거나 현재 줄을 완성합니다.
-
자연어로 요구 사항을 설명합니다.
코드 제안은 제공된 맥락에 따라 함수 및 코드 조각을 생성합니다.
-
제안을 받으면 다음 중 하나를 수행할 수 있습니다:
- 제안을 수락하려면 Tab를 누르세요.
- 부분 제안을 수락하려면 Control+Right arrow 또는 Command+Right arrow를 누르세요.
- 제안을 거부하려면 Esc를 누르세요.
- 제안을 무시하려면 평소처럼 계속 타이핑하세요.
AI는 비결정적이므로 동일한 입력으로 매번 같은 제안을 받을 수는 없습니다.
양질의 코드를 생성하려면 명확하고 설명적이며 구체적인 작업을 작성하세요.
모범 사례
코드 생성에서 최상의 결과를 얻으려면:
-
간결성을 유지하면서 가능한 한 구체적으로 작성하세요.
-
생성하려는 결과(예: 함수)를 명시하고 무엇을 달성하고자 하는지에 대한 세부 정보를 제공하세요.
-
사용하려는 프레임워크나 라이브러리와 같은 추가 정보를 추가하세요.
-
각 주석 뒤에 공백 또는 새 줄을 추가하세요.
이 공백은 코드 생성기에게 지침을 완료했음을 알립니다. -
GitLab 17.2 이상에서는
advanced_context_resolver
및code_suggestions_context
기능 플래그가 활성화되어 있을 때, 관련 파일을 다른 탭에서 열어
추론 창 컨텍스트를 확장하세요.
예를 들어, 특정 요구 사항이 있는 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에서.
- 추가됨 GitLab Neovim 플러그인에 2024년 7월 16일에.
- 기능 플래그
advanced_context_resolver
및code_suggestions_context
자체 관리 설치에서 활성화됨 GitLab 17.4에서.
이 기능의 사용 가능성은 기능 플래그에 의해 제어됩니다.
자세한 내용은 이력을 참조하세요.
Code Suggestions 및 코드 생성에서 더 정확하고 관련성 높은 결과를 얻으려면
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 > Settings > Extensions로 이동합니다.
-
목록에서 GitLab Workflow를 검색하고 기어 아이콘을 선택합니다.
-
Extension Settings를 선택합니다.
-
User 설정에서 GitLab › Duo Code Suggestions: Open Tabs Context
아래의 Use the contents of open tabs as context를 선택합니다.
-
IDE의 상단 메뉴 바에서 Settings를 선택합니다.
-
왼쪽 사이드바에서 Tools를 확장한 후 GitLab Duo를 선택합니다.
-
GitLab Language Server를 확장합니다.
-
Code Completion 아래에서 Send open tabs as context를 선택합니다.
-
OK 또는 Save를 선택합니다.
열린 탭을 컨텍스트로 사용
컨텍스트를 제공할 파일을 엽니다:
- 열린 탭은 가장 최근에 열린 또는 변경된 파일을 사용합니다.
- 추가 컨텍스트로 사용하고 싶지 않은 파일은 닫으세요.
파일에서 작업을 시작하면 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
라는 플래그와 함께 제공됩니다. 기본적으로 비활성화됨.
코드 제안 추론은 다음에 대해 수행됩니다:
- 현재 열린 파일
- 커서 앞뒤의 내용
- 파일 이름 및 확장자.
- GitLab 17.2 이상에서
advanced_context_resolver
및code_suggestions_context
기능 플래그가 활성화된 경우.- 다른 탭에서 열린 파일.
- 사용자 지침
제안의 품질을 개선하기 위한 미래의 컨텍스트 확장에 대한 자세한 내용은 에픽 11669에서 확인하세요.
파일 내용의 트렁케이션
LLM 한계 및 성능상의 이유로, 현재 열린 파일의 내용이 트렁케이션됩니다:
- 코드 완성을 위한 경우: 2048 토큰(대략 8192 문자).
- 코드 생성을 위한 경우: 142,856 토큰(대략 500,000 문자).
커서 위의 내용은 커서 아래의 내용보다 우선 처리됩니다. 커서 위의 내용은 왼쪽에서 잘리고, 커서 아래의 내용은 오른쪽에서 잘립니다. 이러한 숫자는 코드 제안에 대한 최대 입력 컨텍스트 크기를 나타냅니다.
출력 길이
LLM 한계 및 성능상의 이유로, 코드 제안의 출력은 제한됩니다:
- 코드 완성을 위한 경우: 64 토큰(대략 256 문자).
- 코드 생성을 위한 경우: 2048 토큰(대략 7168 문자).
결과의 정확성
우리는 전체 생성 콘텐츠의 정확성을 개선하기 위해 계속 작업하고 있습니다.
그러나 Code Suggestions는 다음과 같은 제안을 생성할 수 있습니다:
- 관련이 없는
- 불완전한
- 실패한 파이프라인 결과를 초래하는
- 잠재적으로 안전하지 않은
- 공격적이거나 무신경한
Code Suggestions를 사용할 때는 여전히 코드 검토 모범 사례가 적용됩니다.
응답 시간
Code Suggestions는 생성 AI 모델에 의해 구동됩니다.
- 코드 완료의 경우, 제안은 일반적으로 지연 시간이 짧고 1초 미만이 걸립니다.
- 코드 생성의 경우, 알고리즘이나 대규모 코드 블록은 5초 이상 걸릴 수 있습니다.
귀하의 개인 액세스 토큰은 GitLab.com 또는 귀하의 GitLab 인스턴스에 대한 안전한 API 연결을 가능하게 합니다.
이 API 연결은 귀하의 IDE/편집기로부터의 컨텍스트 창을 GitLab AI Gateway로 안전하게 전송하는 GitLab 호스팅 서비스입니다. 게이트웨이는 대규모 언어 모델 API를 호출하고, 생성된 제안은 귀하의 IDE/편집기로 다시 전송됩니다.
스트리밍
VS Code에서 Code Generation 응답의 스트리밍을 지원하여 평균 응답 시간이 빨라집니다.
다른 지원되는 IDE는 응답 시간이 느리며 생성된 코드를 단일 블록으로 반환합니다.
자가 호스팅 모델 사용
Code Suggestions 요청을 관리하기 위해 기본 모델 대신 자가 호스팅 모델을 배포할 수 있습니다.
이것은 외부 모델에 아무것도 전송되지 않도록 하여 보안과 개인 정보를 극대화합니다.
직접 및 간접 연결
- GitLab 17.2에서 도입됨
code_suggestions_direct_access
라는 플래그와 함께. 기본적으로 비활성화되어 있습니다.
기본적으로, 코드 완료 요청은 지연 시간을 최소화하기 위해 IDE에서 AI 게이트웨이로 직접 전송됩니다.
이 직접 연결이 작동하려면 IDE가 https://cloud.gitlab.com:443
에 연결할 수 있어야 합니다.
이것이 불가능한 경우(예: 네트워크 제한으로 인해), 모든 사용자에 대해 직접 연결을 비활성화할 수 있습니다. 이렇게 하면 코드 완료 요청이 GitLab 자가 관리 인스턴스를 통해 간접적으로 전송되며, 이는 요청의 지연 시간이 더 높아질 수 있습니다.
직접 또는 간접 연결 구성
전제 조건:
- 귀하는 GitLab 자가 관리 인스턴스의 관리자여야 합니다.
- 왼쪽 사이드바에서 하단의 관리자를 선택합니다.
- 설정 > 일반을 선택합니다.
- GitLab Duo 기능을 확장합니다.
-
연결 방법 아래에서 옵션을 선택합니다:
- 코드 완료 요청의 지연 시간을 최소화하려면 직접 연결을 선택합니다.
- 모든 사용자에 대해 직접 연결을 비활성화하려면 GitLab 자가 관리 인스턴스를 통한 간접 연결을 선택합니다.
- 변경 사항 저장을 선택합니다.
- 왼쪽 사이드바에서 하단의 관리자를 선택합니다.
- 설정 > 일반을 선택합니다.
- AI 지원 기능을 확장합니다.
- 옵션을 선택합니다:
- 직접 연결을 활성화하고 코드 완료 요청의 지연 시간을 최소화하려면 코드 제안에 대한 직접 연결 비활성화 체크박스를 선택 해제합니다.
- 직접 연결을 비활성화하려면 코드 제안에 대한 직접 연결 비활성화 체크박스를 선택합니다.
코드 제안 비활성화
코드 제안을 비활성화하려면 IDE 편집기 확장에서 기능을 비활성화하세요.
자세한 내용은 귀하의 확장 문서를 참조하세요.
원하신다면, 그룹, 프로젝트 또는 인스턴스에 대해 GitLab Duo를 끌 수 있습니다.
피드백
이슈 435783에서 코드 제안 경험에 대한 피드백을 제공하세요.