Code Suggestions

Tier: Premium 또는 Ultimate with GitLab Duo Pro Offering: GitLab.com, Self-Managed, GitLab Dedicated
note
GitLab Duo Code Suggestions는 GitLab 16.8 이상 버전이 필요합니다. 이전 GitLab 버전은 지원되지 않습니다.

개발 중에 generative AI를 활용하여 코드 제안을 받아 더 효율적으로 코드를 작성하세요.

GitLab Duo Code Suggestions으로 다음을 얻을 수 있습니다:

  • 현재 작성 중인 라인에 대한 완성을 제안하는 코드 완성 기능.
  • 자연어 코드 주석 블록을 기반으로 코드를 생성하는 코드 생성 기능. # 여기에 더 입력 같은 주석을 작성한 후 Enter를 눌러 주별로 코드의 문맥과 나머지 코드를 기반으로 코드를 생성합니다.

클릭해서 데모 보기.

코드 제안 사용하기

필요 사항:

코드 제안을 사용하려면:

  1. 코드를 작성하세요. 타이핑하는 동안 제안이 표시됩니다. 코드 제안은 현재 커서 위치에 따라 코드 스니펫을 제공하거나 현재 라인을 완성합니다.

  2. 자연어로 요구 사항을 설명하세요. 코드 제안은 제공된 문맥을 기반으로 함수와 코드 스니펫을 생성합니다.

  3. 제안을 수락하려면 Tab을 누르세요. 제안을 거부하려면 Esc을 누르세요.
  4. 제안을 무시하려면 일반적으로 타이핑을 계속하세요.

AI는 불확정적이므로 동일한 입력으로 항상 동일한 제안을 받을 수는 없습니다. 품질 좋은 코드를 생성하기 위해 명확하고 기술적인 작업을 작성하세요.

최상의 실천 방법

코드 생성에서 최상의 결과를 얻으려면:

  • 가능한 한 구체적이면서 간결하게 작성하세요.
  • 생성하려는 결과(예: 함수)를 명시하고 달성하려는 목표에 대한 세부 정보를 제공하세요.
  • 사용할 프레임워크나 라이브러리와 같은 추가 정보를 추가하세요.
  • 각 주석 뒤에 공백이나 새 줄을 추가하세요. 이 공백은 코드 생성자에게 지침을 완료했음을 알립니다.

예를 들어, 특정 요구 사항으로 Python 웹 서비스를 생성하려면 다음과 같이 작성할 수 있습니다:

# Tornado를 사용하여 사용자가 로그인하고 보안 검사를 실행하며 검사 결과를 확인할 수 있는 웹 서비스를 생성합니다.
# 각 작업(로그인, 검사 실행, 결과 검토)은 해당 웹 서비스의 자원입니다.
...

AI는 불확정적이므로 동일한 입력으로 항상 동일한 제안을 받을 수는 없습니다. 품질 좋은 코드를 생성하기 위해 명확하고 기술적인 작업을 작성하세요.

최상의 실첵 사례 예시

유스케이스 및 최상의 실첵 사례에 대한 자세한 내용은 GitLab Duo 예제 문서를 참고하세요.

응답 시간

코드 제안은 generative AI 모델에 의해 제공됩니다.

개인 액세스 토큰을 사용하여 안전한 API 연결이 IDE/editor에서 GitLab.com 또는 귀하의 GitLab 인스턴스로 전송됩니다. 이 API 연결을 통해 컨텍스트 창이 GitLab이 호스트하는 서비스인 GitLab AI Gateway로 전송됩니다. Gateway는 대형 언어 모델 API를 호출한 다음 생성된 제안이 IDE/editor로 다시 전송됩니다.

  • 코드 완성 제안은 일반적으로 지연 시간이 낮습니다.
  • 코드 생성의 경우:
    • 알고리즘이나 대형 코드 블록은 10초 이상이 걸릴 수 있습니다.
    • VS Code에서 코드 생성 응답 스트리밍을 지원하므로 평균 응답 시간이 더 빠릅니다. 다른 지원되는 IDE는 더 느린 응답 시간을 제공하며 생성된 코드를 단일 블록으로 반환합니다.

추론 창 컨텍스트

코드 제안은 현재 열린 파일, 커서 앞뒤의 내용, 파일 이름 및 확장자 유형에 대해 추론합니다. 제안의 품질을 향상시키기 위한 가능한 추후 컨텍스트 확장에 대한 자세한 내용은 epic 11669을 참조하세요.

파일 내용의 축소

LLM 한도와 성능상의 이유로 현재 열린 파일의 내용이 다음과 같이 축소됩니다:

  • 코드 완성의 경우: 2048 토큰(대략 8192 문자)까지.
  • 코드 생성의 경우: 50,000 문자까지.

커서 위의 내용이 커서 아래의 내용보다 우선합니다. 커서 위의 내용은 왼쪽에서, 커서 아래의 내용은 오른쪽에서 축소됩니다.

결과의 정확도

전반적으로 생성된 내용의 정확도를 개선하기 위해 노력을 계속하고 있습니다. 그러나 코드 제안은 다음과 같은 제안을 생성할 수 있습니다:

  • 관련이 없는 제안.
  • 불완전한 제안.
  • 실패한 파이프라인.
  • 잠재적으로 불안전한 제안.
  • 무례하거나 민감할 수 있습니다.

코드 제안 사용 시 코드 검토 최상의 실첵이 여전히 적용됩니다.

코드 제안 비활성화

코드 제안을 비활성화하려면 IDE 편집기 확장 기능에서 해당 기능을 비활성화하세요.

프로젝트용 코드 제안 비활성화

Status: 실험

필요 사항:

  • 해당 프로젝트에 적어도 Maintainer 역할이 있어야 합니다.

특정 프로젝트에서 코드 제안을 비활성화할 수 있습니다.

이를 위해 프로젝트 내에서 duoFeaturesEnabled 설정을 업데이트하기 위해 GraphQL API를 사용하세요.

이 설정에 대한 자세한 내용은 API 문서의 projectSettingsUpdate mutation를 참조하세요.

피드백

이슈 435783에서 코드 제안 경험에 대한 피드백을 제공하세요.