Code Suggestions
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Code Suggestions는 다음에서 사용할 수 있습니다: GitLab Duo Code Suggestions를 사용하여 개발하는 동안 생성형 AI가 코드를 제안하게 함으로써 더 효율적으로 코드를 작성하세요. GitLab Duo에는 GitLab 17.2 이상이 필요합니다.
Model information
- Default LLM
- LLM for Amazon Q: Amazon Q Developer
- Available on GitLab Duo with self-hosted models
히스토리
- GitLab 16.1에서 Google Vertex AI Codey API 지원 도입됨.
- GitLab 16.2에서 GitLab 네이티브 모델 지원 제거됨.
- GitLab 16.3에서 코드 생성 지원 도입됨.
- GitLab 16.7에서 일반 공개됨.
- 2024년 2월 15일부터 GitLab Duo Pro 애드온을 요구하도록 변경됨. 이전에는 이 기능이 Premium 및 Ultimate 구독에 포함되어 있었습니다.
- 2024년 10월 17일부터 지원되는 모든 GitLab 버전에 GitLab Duo Pro 또는 GitLab Duo Enterprise 애드온을 요구하도록 변경됨.
- GitLab 17.6에서
fireworks_qwen_code_completion이라는 플래그와 함께 Fireworks AI 호스팅 Qwen2.5 코드 완성 모델 지원 도입됨. - GitLab 17.11에서 Qwen2.5 코드 완성 모델 지원이 제거됨.
- GitLab 17.11에서 기능 플래그
use_fireworks_codestral_code_completion을 통해 Fireworks 호스팅Codestral이 기본값으로 활성화됨. - GitLab 18.0에서 GitLab Duo Core를 포함하도록 변경됨.
- GitLab 18.1에서 Fireworks 호스팅
Codestral이 기본 모델로 활성화됨. - GitLab 18.2에서 코드 생성의 기본 모델이 Claude Sonnet 4로 변경됨.
- GitLab 18.6에서 기능 플래그
code_suggestions_context가 제거됨. - GitLab 18.10에서 GitLab Credits를 사용하여 GitLab.com의 무료 티어에서 사용 가능.
- GitLab 19.0부터 GitLab Duo Core 사용자의 Code Suggestions 접근 방식이 변경됨. 이제 GitLab Duo Agent Platform의 일부로 제공됩니다.
Code Suggestions는 다음에서 사용할 수 있습니다:
- GitLab Duo Agent Platform. 청구는 사용량 기반입니다.
- GitLab Duo Pro 또는 Enterprise, GitLab Duo with Amazon Q. 청구는 애드온을 기준으로 합니다.
GitLab Duo Code Suggestions를 사용하여 개발하는 동안 생성형 AI가 코드를 제안하게 함으로써 더 효율적으로 코드를 작성하세요.
전제 조건#
- GitLab Duo Core가 있는 경우 IDE 기능을 켭니다.
- Code Suggestions 설정.
- GitLab 프로젝트가 있어야 합니다.
GitLab Duo에는 GitLab 17.2 이상이 필요합니다. GitLab Duo Core 액세스 및 최상의 사용자 경험과 결과를 위해 GitLab 18.0 이상으로 업그레이드하세요. 이전 버전은 계속 작동할 수 있지만 경험이 저하될 수 있습니다.
Code Suggestions 사용#
Code Suggestions를 사용하려면:
- IDE에서 프로젝트를 엽니다. 로컬 프로젝트에는 GitLab의 저장소를 가리키는 Git 원격이 구성되어 있어야 합니다.
- 코드를 작성합니다. 입력할 때 제안이 표시됩니다. Code Suggestions는 커서 위치에 따라 코드 스니펫을 제공하거나 현재 줄을 완성합니다.
- 자연어로 요구 사항을 설명합니다. Code Suggestions는 제공된 컨텍스트를 기반으로 함수와 코드 스니펫을 생성합니다.
- 제안을 받으면 다음 중 하나를 수행할 수 있습니다:
- 제안을 수락하려면 Tab을 누릅니다.
- 부분 제안을 수락하려면 Control+오른쪽 화살표 또는 Command+오른쪽 화살표를 누릅니다.
- 제안을 거부하려면 Esc를 누릅니다. Neovim에서는 Control+E를 눌러 메뉴를 종료합니다.
- 제안을 무시하려면 평소대로 계속 입력합니다.
여러 코드 제안 보기#
히스토리
- GitLab 17.1에서 도입됨.
VS Code에서 코드 완성 제안의 경우 여러 제안 옵션을 사용할 수 있습니다. 사용 가능한 모든 제안을 보려면:
- 코드 완성 제안 위에 마우스를 올립니다.
- 대안을 스크롤합니다. 다음 중 하나를 사용합니다:
- 키보드 단축키 사용:
- Mac에서 Option+[을 눌러 이전 제안을 보고, Option+]을 눌러 다음 제안을 봅니다.
- Linux 및 Windows에서 Alt+[을 눌러 이전 제안을 보고, Alt+]을 눌러 다음 제안을 봅니다.
- 표시된 대화 상자에서 오른쪽 또는 왼쪽 화살표를 선택하여 다음 또는 이전 옵션을 봅니다.
- 키보드 단축키 사용:
- 선호하는 제안을 적용하려면 Tab을 누릅니다.
코드 완성 및 코드 생성#
Code Suggestions는 코드 완성과 코드 생성을 사용합니다:
| 코드 완성 | 코드 생성 | |
|---|---|---|
| 목적 | 현재 코드 줄 완성에 대한 제안을 제공합니다. | 자연어 주석을 기반으로 새 코드를 생성합니다. |
| 트리거 | 입력 시 트리거되며, 보통 짧은 지연이 있습니다. | 특정 키워드를 포함하는 주석을 작성한 후 Enter를 누를 때 트리거됩니다. |
| 범위 | 현재 줄 또는 작은 코드 블록으로 제한됩니다. | 컨텍스트를 기반으로 전체 메서드, 함수 또는 클래스도 생성할 수 있습니다. |
| 정확도 | 작은 작업과 짧은 코드 블록에 더 정확합니다. | 복잡한 작업과 큰 코드 블록에 더 정확합니다. 더 큰 대규모 언어 모델(LLM)이 사용되고, 추가 컨텍스트(예: 프로젝트에서 사용하는 라이브러리)가 요청에 전송되며, 사용자의 지침이 LLM에 전달되기 때문입니다. |
| 사용 방법 | 코드 완성은 입력하는 줄에 자동으로 완성을 제안합니다. | 주석을 작성하고 Enter를 누르거나, 빈 함수나 메서드를 입력합니다. |
| 사용 시기 | 한두 줄의 코드를 빠르게 완성할 때 코드 완성을 사용합니다. | 복잡한 작업, 큰 코드베이스, 자연어 설명을 기반으로 새 코드를 작성하려 할 때, 또는 편집 중인 파일이 5줄 미만일 때 코드 생성을 사용합니다. |
Code Suggestions는 항상 이 두 가지 기능을 모두 사용합니다. 코드 생성만 또는 코드 완성만 사용할 수 없습니다.
코드 생성 모범 사례#
코드 생성에서 최상의 결과를 얻으려면:
- 간결하게 유지하면서 최대한 구체적으로 지정합니다.
- 생성하려는 결과(예: 함수)를 명시하고 달성하려는 것에 대한 세부 정보를 제공합니다.
- 사용하려는 프레임워크 또는 라이브러리와 같은 추가 정보를 추가합니다.
- 각 주석 뒤에 공백 또는 새 줄을 추가합니다. 이 공백은 코드 생성기에게 지침을 완료했음을 알립니다.
- Code Suggestions에서 사용 가능한 컨텍스트를 검토하고 조정합니다.
예를 들어, 특정 요구 사항이 있는 Python 웹 서비스를 만들려면 다음과 같이 작성할 수 있습니다:
# Create a web service using Tornado that allows a user to sign in, run a security scan, and review the scan results.
# Each action (sign in, run a scan, and review results) should be its own resource in the web service
...
AI는 비결정론적이므로 동일한 입력으로도 매번 같은 제안을 받지 못할 수 있습니다. 고품질 코드를 생성하려면 명확하고 구체적인 설명을 작성합니다.
사용 사례 및 모범 사례는 GitLab Duo 예시 문서를 따르세요.
사용 가능한 언어 모델#
Code Suggestions의 소스가 될 수 있는 다양한 언어 모델이 있습니다.
- GitLab.com에서: GitLab은 모델을 호스팅하고 클라우드 기반 AI 게이트웨이를 통해 모델에 연결합니다.
- GitLab Self-Managed에서 두 가지 옵션이 있습니다:
- GitLab이 모델을 호스팅하고 클라우드 기반 AI 게이트웨이를 통해 연결할 수 있습니다.
- 조직이 자체 호스팅 모델을 사용할 수 있습니다. 이는 AI 게이트웨이와 언어 모델을 직접 호스팅함을 의미합니다. GitLab 관리 모델, 다른 지원되는 언어 모델을 사용하거나 호환 모델을 가져올 수 있습니다.
성능#
Code Suggestions의 기본 응답 시간, 스트리밍, 프롬프트 캐싱, 연결 구성 옵션에 대해 알아보세요.
응답 시간#
Code Suggestions는 생성형 AI 모델에 의해 구동됩니다.
- 코드 완성의 경우 제안은 보통 짧은 지연 시간이며 1초 미만이 걸립니다.
- 코드 생성의 경우 알고리즘이나 큰 코드 블록을 생성하는 데 5초 이상 걸릴 수 있습니다.
개인 액세스 토큰은 GitLab.com 또는 GitLab 인스턴스에 대한 보안 API 연결을 가능하게 합니다. 이 API 연결은 IDE/에디터에서 GitLab AI 게이트웨이(GitLab 호스팅 서비스)로 컨텍스트 창을 안전하게 전송합니다. 게이트웨이는 대규모 언어 모델 API를 호출하고 생성된 제안이 IDE/에디터로 다시 전송됩니다.
스트리밍#
코드 생성 응답의 스트리밍은 JetBrains 및 Visual Studio에서 지원되어 더 빠른 응답 시간을 제공합니다. 다른 지원되는 IDE는 생성된 코드를 단일 블록으로 반환합니다.
코드 완성에는 스트리밍이 활성화되지 않습니다.
프롬프트 캐싱#
히스토리
- GitLab 18.0에서 도입됨.
프롬프트 캐싱은 Code Suggestions 지연 시간을 개선하기 위해 모든 Fireworks 호스팅 모델에서 기본적으로 활성화되어 있습니다.
프롬프트 캐싱이 활성화되면 코드 완성 프롬프트 데이터가 모델 공급업체에 의해 임시로 메모리에 저장됩니다.
프롬프트 캐싱은 캐시된 프롬프트와 입력 데이터의 재처리를 방지하여 지연 시간을 크게 개선합니다. 캐시된 데이터는 영구 저장소에 기록되지 않습니다.
프롬프트 캐싱 끄기#
GitLab Duo 설정에서 최상위 그룹의 프롬프트 캐싱을 끌 수 있습니다. 이는 GitLab Duo Chat (에이전틱)의 프롬프트 캐싱도 끕니다.
전제 조건:
- GitLab Self-Managed의 경우 관리자 액세스 권한이 있어야 합니다.
GitLab.com에서:
- 상단 바에서 Search or go to를 선택하고 그룹을 찾습니다.
- 왼쪽 사이드바에서 Settings > GitLab Duo를 선택합니다.
- Change configuration을 선택합니다.
- Prompt caching 토글을 비활성화합니다.
- Save changes를 선택합니다.
GitLab Self-Managed에서:
- 오른쪽 상단 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 GitLab Duo를 선택합니다.
- Change configuration을 선택합니다.
- Prompt cache 아래에서 Turn on prompt caching 체크박스를 선택 해제합니다.
- Save changes를 선택합니다.
직접 및 간접 연결#
기본적으로 코드 완성 요청은 지연 시간을 최소화하기 위해 IDE에서 AI 게이트웨이로 직접 전송됩니다.
이 직접 연결이 작동하려면 IDE가 https://cloud.gitlab.com:443에 연결할 수 있어야 합니다. 이것이 불가능한 경우(예: 네트워크 제한으로 인해) 모든 사용자에 대한 직접 연결을 비활성화할 수 있습니다. 이렇게 하면 코드 완성 요청이 GitLab Self-Managed 인스턴스를 통해 간접적으로 전송되고 인스턴스가 다시 AI 게이트웨이로 요청을 보냅니다. 이로 인해 요청의 지연 시간이 더 높아질 수 있습니다.
직접 또는 간접 연결 구성#
전제 조건:
- GitLab Self-Managed 인스턴스의 관리자여야 합니다.
- 오른쪽 상단 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- GitLab Duo features를 펼칩니다.
- Connection method 아래에서 옵션을 선택합니다:
- 코드 완성 요청의 지연 시간을 최소화하려면 Direct connections를 선택합니다.
- 모든 사용자에 대한 직접 연결을 비활성화하려면 Indirect connections through GitLab Self-Managed를 선택합니다.
- Save changes를 선택합니다.
- 오른쪽 상단 모서리에서 Admin을 선택합니다.
- 왼쪽 사이드바에서 Settings > General을 선택합니다.
- AI-native features를 펼칩니다.
- 옵션을 선택합니다:
- 직접 연결을 활성화하고 코드 완성 요청의 지연 시간을 최소화하려면 Disable direct connections for code suggestions 체크박스를 선택 해제합니다.
- 직접 연결을 비활성화하려면 Disable direct connections for code suggestions 체크박스를 선택합니다.
제한 사항#
파일 콘텐츠 잘라내기#
LLM 제한 및 성능상의 이유로 현재 열린 파일의 콘텐츠는 잘립니다:
- 코드 완성: 32,000 토큰(약 128,000자)으로 제한.
- 코드 생성: 80,000 토큰(약 320,000자)으로 제한.
커서 위의 콘텐츠가 커서 아래 콘텐츠보다 우선합니다. 커서 위의 콘텐츠는 왼쪽에서 잘리고, 커서 아래의 콘텐츠는 오른쪽에서 잘립니다. 이 숫자는 Code Suggestions의 최대 입력 컨텍스트 크기를 나타냅니다.
코드 생성 제한 증가에 대한 지원은 이슈 585841에서 제안되고 있습니다.
출력 길이#
LLM 제한 및 성능상의 이유로 Code Suggestions의 출력이 제한됩니다:
- 코드 완성: 64 토큰(약 256자)으로 제한.
- 코드 생성: 2048 토큰(약 7168자)으로 제한.
결과 정확도#
생성된 콘텐츠의 전반적인 정확도에 대한 작업을 계속하고 있습니다. 그러나 Code Suggestions는 다음과 같은 제안을 생성할 수 있습니다:
- 관련 없음.
- 불완전함.
- 파이프라인 실패를 유발할 가능성이 있음.
- 잠재적으로 안전하지 않음.
- 공격적이거나 민감함.
Code Suggestions를 사용할 때 코드 검토 모범 사례가 여전히 적용됩니다.
피드백#
이슈 435783에서 Code Suggestions 경험에 대한 피드백을 제공하세요.
