코드 제안
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
Code Suggestions는 다음에서 사용할 수 있습니다. GitLab Duo Code Suggestions를 사용하면 개발 중에 생성형 AI가 코드를 제안하므로 더 효율적으로 코드를 작성할 수 있습니다. GitLab Duo에는 GitLab 17.2 이상이 필요합니다.
Model information
- 기본 LLM
- Amazon Q 용 LLM: Amazon Q Developer
- GitLab Duo with self-hosted models에서 사용 가능
히스토리
- GitLab 16.1에서 Gemini Enterprise Agent Platform 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의 Free 티어에서 사용 가능해짐.
- GitLab Duo Core 사용자의 Code Suggestions 접근 방식이 변경됨. GitLab 19.0부터 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 기능이 켜져 있어야 합니다.
- IDE에서 Code Suggestions가 설정되어 있어야 합니다.
- 기본 GitLab Duo 네임스페이스가 설정되어 있거나, GitLab Duo에 접근할 수 있는 프로젝트를 열어 두어야 합니다.
GitLab Duo에는 GitLab 17.2 이상이 필요합니다. GitLab Duo Core를 사용하려면, 그리고 최상의 사용 경험과 결과를 얻으려면 GitLab 18.0 이상으로 업그레이드합니다. 이전 버전도 계속 동작할 수 있으나 경험이 저하될 수 있습니다.
Code Suggestions 사용#
Code Suggestions를 사용하려면:
- IDE에서 프로젝트를 엽니다.
- 코드를 작성합니다. 입력하는 동안 제안이 표시됩니다. Code Suggestions는 커서 위치에 따라 코드 스니펫을 제공하거나 현재 줄을 완성합니다.
- 요구 사항을 자연어로 설명합니다. Code Suggestions는 제공된 컨텍스트를 바탕으로 함수와 코드 스니펫을 생성합니다.
- 제안을 받으면 다음 중 하나를 수행할 수 있습니다.
- 제안을 수락하려면 Tab을 누릅니다.
- 제안의 일부만 수락하려면 Control+Right arrow 또는 Command+Right arrow를 누릅니다.
- 제안을 거부하려면 Esc를 누릅니다. Neovim에서는 Control+E를 눌러 메뉴를 종료합니다.
- 제안을 무시하려면 평소대로 계속 입력합니다.
여러 코드 제안 보기#
히스토리
- GitLab 17.1에서 도입됨.
VS Code의 코드 완성 제안에는 여러 제안 옵션이 있을 수 있습니다. 사용 가능한 모든 제안을 보려면:
- 코드 완성 제안 위에 마우스를 올립니다.
- 대안을 넘겨 봅니다. 방법은 다음과 같습니다.
- 키보드 단축키를 사용합니다.
- Mac에서는 Option+[를 눌러 이전 제안을 보고, Option+]를 눌러 다음 제안을 봅니다.
- Linux와 Windows에서는 Alt+[를 눌러 이전 제안을 보고, Alt+]를 눌러 다음 제안을 봅니다.
- 표시된 대화 상자에서 오른쪽 또는 왼쪽 화살표를 선택해 다음이나 이전 옵션을 봅니다.
- 키보드 단축키를 사용합니다.
- Tab을 눌러 원하는 제안을 적용합니다.
코드 완성과 코드 생성#
Code Suggestions는 코드 완성과 코드 생성을 사용합니다.
| 코드 완성 | 코드 생성 | |
|---|---|---|
| 목적 | 현재 코드 줄을 완성하는 제안을 제공합니다. | 자연어 주석을 기반으로 새 코드를 생성합니다. |
| 트리거 | 입력 시 일반적으로 짧은 지연과 함께 트리거됩니다. | 특정 키워드를 포함한 주석을 작성한 뒤 Enter를 누르면 트리거됩니다. |
| 범위 | 현재 줄 또는 작은 코드 블록으로 제한됩니다. | 컨텍스트를 기반으로 전체 메서드, 함수 또는 클래스도 생성할 수 있습니다. |
| 정확도 | 작은 작업과 짧은 코드 블록에 더 정확합니다. | 더 큰 대형 언어 모델(LLM)이 사용되고, 요청에 추가 컨텍스트(예: 프로젝트에서 사용하는 라이브러리)가 전송되며, 지시 사항이 LLM에 전달되기 때문에 복잡한 작업과 큰 코드 블록에 더 정확합니다. |
| 사용 방법 | 코드 완성은 입력 중인 줄에 자동으로 완성 제안을 합니다. | 주석을 작성하고 Enter를 누르거나, 빈 함수나 메서드를 입력합니다. |
| 사용 시기 | 한두 줄의 코드를 빠르게 완성할 때 코드 완성을 사용합니다. | 더 복잡한 작업, 더 큰 코드베이스, 자연어 설명을 바탕으로 새 코드를 처음부터 작성하려는 경우, 또는 편집 중인 파일이 다섯 줄 미만일 때 코드 생성을 사용합니다. |
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 Gateway를 통해 연결합니다.
- GitLab Self-Managed: 두 가지 방식이 있습니다.
- GitLab 이 모델을 호스팅하고 클라우드 기반 AI Gateway를 통해 연결합니다.
- 조직이 자체 호스팅 모델을 사용합니다. 이 경우 AI Gateway와 언어 모델을 직접 호스팅합니다. GitLab 관리형 모델, 지원되는 다른 언어 모델을 사용하거나 호환되는 자체 모델을 가져올 수 있습니다.
결과 정확도#
GitLab은 생성되는 콘텐츠 전반의 정확도를 계속 개선하고 있습니다. 다만 Code Suggestions는 다음과 같은 제안을 생성할 수 있습니다.
- 관련성이 없는 제안.
- 불완전한 제안.
- 파이프라인 실패로 이어질 수 있는 제안.
- 보안상 취약할 수 있는 제안.
- 불쾌하거나 배려가 부족한 제안.
Code Suggestions를 사용할 때에도 코드 리뷰 모범 사례는 그대로 적용됩니다.