본문 바로가기
AI

[AI] GitHub Copilot 사용법 (2) - 사용하기 전 반드시 알아야 하는 것

by 노력남자 2023. 4. 12.
반응형

이전 포스팅에선 Copilot이란?에 대해서 알아보았다.

 

원래 바로 IntelliJ에 Copilot을 적용하는 걸 포스팅하려다가 copilot 공식 사이트에 "Frequently asked questions"를 정리한 것이 있길래 번역해서 정리해봤다.

 

GitHub Copilot이란?

 

GitHub Copilot은 OpenAI Codex 기술을 이용하여 작성한 인공지능 페어 프로그래머로, 코드 작성 속도를 높이고 노력을 덜어주는 도구입니다. 주석과 코드에서 문맥을 파악하여 개별 라인 및 전체 함수를 즉시 제안합니다. GitHub Copilot은 Visual Studio Code, Visual Studio, Neovim 및 JetBrains 통합 개발 환경(IDE)의 확장 프로그램으로 제공됩니다.

 

GitHub Copilot은 어떤 데이터로 학습되었나요?

 

GitHub Copilot은 OpenAI에서 개발한 사전 학습된 생성 모델인 Codex를 이용하여 작동됩니다. 이 모델은 공개적으로 이용 가능한 소스 코드와 자연어 텍스트를 학습하였으며, GitHub의 공개 저장소에 있는 코드를 포함한 다양한 소스로부터 학습하였습니다.

 

GitHub Copilot가 완벽한 코드를 작성하나요?

 

최근 평가에서, GitHub Copilot이 제안한 모든 완성 작업 중 사용자가 평균적으로 26%를 수락했다는 결과를 발견했습니다. 또한 개발자의 코드 파일의 평균 27% 이상이 GitHub Copilot에 의해 생성되었으며, Python과 같은 특정 언어에서는 40%까지 증가합니다. 그러나 GitHub Copilot은 완벽한 코드를 작성하지는 않습니다. 가능한 한 최상의 코드를 생성하도록 설계되었지만, 제안한 코드를 테스트하지는 않으므로 코드가 항상 작동하지 않거나 의미가 없을 수 있습니다. GitHub Copilot은 매우 제한된 문맥만 이해하므로 프로젝트의 다른 위치나 동일한 파일에서 정의된 유용한 함수를 사용하지 않을 수도 있으며, 오래되거나 사용되지 않는 라이브러리 및 언어 사용을 제안할 수도 있습니다. 다른 언어로 작성된 주석을 코드로 변환할 때 영어와 비교하여 성능 차이가 있을 수 있습니다. 제안된 코드는 다른 코드와 마찬가지로 신중하게 테스트, 검토 및 확인해야 합니다. 개발자는 항상 책임을 져야 합니다.

 

GitHub Copilot이 새로운 플랫폼을 위한 코드 작성에 도움이 될까요?

 

GitHub Copilot은 공개 코드로 학습됩니다. 새로운 라이브러리, 프레임워크, API가 출시되면 학습할 공개 코드가 적어져 새로운 코드베이스에 대한 제안을 제공하는 능력이 감소합니다. 공개 공간에 더 많은 예제가 들어오면 학습 세트에 통합하여 제안의 관련성을 높입니다. 앞으로는 GitHub Copilot의 제안에서 최신 API 및 샘플을 강조하여 관련성을 높이는 방법을 제공할 예정입니다.

 

고객은 GitHub Copilot을 최대한 활용하기 위해서는 어떻게 해야 하나요?

 

GitHub Copilot은 코드를 작은 함수로 나누고, 함수 매개 변수에 의미 있는 이름을 사용하며, 좋은 독스트링과 주석을 작성할 때 가장 잘 작동합니다. 또한, 미지의 라이브러리나 프레임워크를 탐색하는 데 도움이 될 때 가장 잘 작동하는 것으로 보입니다.

 

고객이 기여하는 방법은 무엇인가요?

 

GitHub Copilot을 사용하고 피드백 포럼에서 의견을 공유함으로써 고객은 GitHub Copilot을 개선하는 데 도움이 됩니다. 또한 (예: 모욕적인 출력, 코드 취약점, 코드 생성에서 개인 정보가 보이는 경우 등) 사고를 직접 copilot-safety@github.com으로 보고하여 보안을 개선할 수 있습니다. GitHub은 안전과 보안을 매우 중요하게 생각하며 지속적인 개선에 전념하고 있습니다.

 

GitHub Copilot이 제안하는 코드에서 보안 취약점이 있을 가능성이 있나요?

 

공개 코드는 보안 취약점이나 버그, 오래된 API 또는 관용구 참조 등을 포함할 수 있습니다. GitHub Copilot은 이러한 데이터를 기반으로 코드 제안을 합성할 때 이러한 원하지 않는 패턴을 포함한 코드를 생성할 수도 있습니다. GitHub은 이에 대해 매우 신경을 쓰고 있으며, 최근에는 GitHub Actions, Dependabot 및 CodeQL과 같은 도구를 오픈소스 프로젝트에 제공하여 코드 품질을 향상시키는 데 도움을 주고 있습니다. 물론, GitHub Copilot은 좋은 테스트 및 코드 검토 관행과 보안 도구, 그리고 개인의 판단과 함께 사용해야 합니다.

 

GitHub Copilot이 생성한 코드의 저작권은 GitHub이 소유하나요?

 

GitHub Copilot은 컴파일러나 펜과 같은 도구입니다. GitHub은 GitHub Copilot이 제공하는 제안의 저작권을 소유하지 않습니다. GitHub Copilot을 사용하여 작성한 코드에 대한 책임은 사용자에게 있습니다. 독자적으로 작성하지 않은 자료를 포함하는 코드를 작성하는 것과 마찬가지로, 제품으로 출시하기 전에 코드를 신중하게 테스트, 검토 및 확인하는 것을 권장합니다.

 

GitHub Copilot은 학습 세트에서 코드를 복사하나요?

 

GitHub Copilot의 제안은 모두 인공 지능을 통해 생성됩니다. GitHub Copilot은 새로운 코드를 확률론적으로 생성하며, 학습 데이터 세트에 포함된 코드 스니펫과 동일한 코드를 생성할 확률은 낮습니다. 모델에는 코드 데이터베이스가 없으며, 스니펫을 "조회"하지 않습니다. 최근 내부 연구 결과 약 1%의 경우, 제안에는 학습 세트와 일치하는 약 150자 이상의 코드 스니펫이 포함될 수 있습니다. 이전 연구에서는 이러한 경우 중 많은 경우, GitHub Copilot이 작성하고 있는 코드에서 충분한 컨텍스트를 추론하지 못하거나, 문제에 대한 공통적이고 심지어 보편적인 해결책이 있는 경우입니다.

 

GitHub Copilot이 공개 코드와 일치하는 코드 제안을 줄이려면 어떻게 해야 하나요?

 

GitHub는 공개 코드와 일치하는 코드를 GitHub Copilot에서 추천하는 것을 감지하고 억제하는 필터를 구축했습니다.

 

개인 사용자의 경우, Copilot을 설정할 때 필터를 활성화할 수 있습니다. 비즈니스 사용자의 경우, Enterprise 관리자가 필터가 적용되는 방법을 제어합니다. 모든 조직에 대한 제안을 제어하거나 조직 관리자에게 제어를 위임할 수 있습니다. 이 조직 관리자는 조직의 사용자를 대상으로 설정 중에 필터를 켜거나 끌 수 있습니다(Enterprise 관리자가 제어를 위임한 경우).

 

필터가 활성화되면, GitHub Copilot은 공백을 무시하고 약 150자의 공개 코드와 일치하는 코드 추천을 그 주변 코드와 비교합니다. 일치하는 경우, 해당 추천은 사용자에게 표시되지 않습니다. 또한, 공개 코드와 유사한 추천에 대한 참고 정보를 제공하는 기능을 제공할 예정입니다. 이를 통해 사용자는 해당 코드의 사용 여부와 방법에 대해 더욱 효과적인 결정을 내릴 수 있으며, 해당 코드가 다른 프로젝트에서 어떻게 사용되는지 탐색하고 학습할 수 있습니다.

 

사용자가 독자적으로 작성하지 않은 자료를 사용하여 코드를 작성하는 경우와 마찬가지로, 코드의 작동 방식을 이해하고 적절성을 보장하기 위해 엄격한 테스트, IP 스캐닝, 보안 취약점 확인 등의 조치를 취해야 합니다. 또한, IDE 또는 편집기가 생성된 코드를 검토하기 전에 자동으로 컴파일이나 실행되지 않도록해야 합니다.

 

필터 이외에도, GitHub Copilot에서 제안하는 코드를 평가하기 위해 어떤 조치를 취할 수 있나요?

 

독자적으로 작성하지 않은 자료를 사용하여 작성한 코드와 마찬가지로, GitHub Copilot에서 제안하는 코드를 평가하기 위해 적절한 조치를 취해야 합니다. 이러한 조치에는 엄격한 테스트, IP 스캐닝, 보안 취약점 확인 등이 포함됩니다. 코드를 검토하기 전에 IDE나 편집기가 생성된 코드를 자동으로 컴파일하거나 실행하지 않도록 주의해야 합니다.

 

GitHub Copilot은 영어 이외의 언어를 사용하는 경우에도 동일하게 작동합니까?

 

공개 소스의 대부분이 영어로 되어 있기 때문에, 개발자가 제공하는 자연어 프롬프트가 영어가 아니거나 문법적으로 잘못된 경우, GitHub Copilot이 덜 효과적으로 작동할 가능성이 높습니다. 따라서 영어 이외의 언어를 사용하는 사용자는 서비스 품질이 낮을 수 있습니다.

 

GitHub Copilot은 접근성 기능을 지원합니까?

 

우리는 장애를 가진 개발자들이 GitHub Copilot을 사용하는 것의 용이성을 내부적으로 테스트하고, 모든 개발자가 GitHub Copilot을 사용할 수 있도록 노력하고 있습니다. GitHub Copilot의 접근성에 대한 피드백은 언제든지 피드백 포럼에서 공유해주시기 바랍니다.

 

GitHub Copilot은 모욕적인 결과물을 생성합니까?

 

GitHub Copilot에는 프롬프트에서 모욕적인 언어를 차단하고 민감한 문맥에서 제안을 생성하지 않는 필터가 포함되어 있습니다. 우리는 필터 시스템을 더욱 똑똑하게 개선하여 모욕적인 결과물을 감지하고 제거할 수 있도록 노력하고 있습니다. 만약 모욕적인 결과물을 발견하신 경우, 즉시 copilot-safety@github.com으로 신고해주시기 바랍니다. 우리는 이 문제에 대해 매우 진지하게 대응하고 있습니다.

 

GitHub Copilot와 같은 고급 코드 생성 도구가 개발자 직업에 어떤 영향을 미칠까요?

 

보다 지능적인 시스템을 도입함으로써 개발자 경험에 엄청난 변화를 가져올 가능성이 있습니다. 우리는 GitHub Copilot이 개발자들을 대체하는 것은 기대하지 않습니다. 대신, GitHub Copilot은 개발자들과 협력하여 개발자들의 역량을 증진시키고 생산성을 높이며, 수작업 작업을 감소시켜 개발자들이 흥미로운 작업에 집중할 수 있도록 돕는 것이 목표입니다. 또한, GitHub Copilot은 소프트웨어 개발을 탐구하고 다음 세대 개발자들에게 참여하는 데 필요한 진입 장벽을 낮추는 데 기여할 수 있는 잠재력을 가지고 있다고 믿습니다. 우리는 내부 및 외부 연구를 통해 이러한 가설을 검증하는 데 노력하고 있습니다.

 

비즈니스용 Copilot이 수집하는 데이터는?

 

GitHub Copilot은 파일 콘텐츠와 추가 데이터에 의존하여 작동합니다. 서비스를 제공하기 위해 데이터를 수집하며, 일부 데이터는 이후 분석 및 제품 개선을 위해 보관됩니다.

 

비즈니스용 Copilot은 다음과 같은 방식으로 데이터를 수집합니다.

 

사용자 참여 데이터

GitHub Copilot을 사용하면 IDE 또는 편집기와 상호 작용할 때 생성되는 이벤트에 대한 사용 정보를 수집합니다. 이러한 이벤트에는 완성이 수락되거나 거부된 사용자 편집 작업, 지연 시간 및 기능 참여와 같은 측정 항목을 식별하기 위한 오류 및 일반 사용 데이터가 포함될 수 있습니다. 이 정보는 익명 식별자와 같은 개인 데이터를 포함할 수 있습니다.

 

코드 스니펫 데이터

GitHub Copilot은 건의 사항을 제공하기 위해 IDE에서 코드 스니펫을 GitHub로 전송합니다. 코드 스니펫 데이터는 건의 사항을 반환하기 위해 실시간으로 전송되며, 건의 사항이 반환된 후 삭제됩니다. 비즈니스용 Copilot은 코드 스니펫 데이터를 보관하지 않습니다.

 

Copilot for Business의 데이터는 어떻게 사용되고 공유되나요?

 

사용자 참여 데이터는 GitHub, Microsoft 및 OpenAI가 서비스 제공과 개선을 위해 사용됩니다.

그러한 사용 사례는 다음과 같습니다.

 

  • 사용자에게 긍정적인 영향을 미치는지 측정하여 GitHub Copilot을 평가하는 것
  • 랭킹 및 정렬 알고리즘 및 프롬프트 작성을 조정하는 것
  • GitHub Copilot의 남용 또는 허용되지 않는 사용 정책 위반을 감지하는 것
  • 개발자 도구 및 서비스에 대한 연구 및 실험 수행

 

Copilot for Business 사용자는 데이터 사용을 어떻게 제어할 수 있나요?

 

사용자 참여 데이터(의사 이름을 포함한 익명 식별자 및 일반 사용 데이터)는 GitHub Copilot 사용에 필요하며 GitHub Copilot을 사용할 때 수집, 처리 및 Microsoft 및 OpenAI와 공유됩니다.

 

Copilot for Business는 코드 스니펫 데이터를 보관하지 않습니다.

 

Copilot for Individuals은 어떤 데이터를 수집하나요?

 

GitHub Copilot은 파일 내용 및 추가 데이터에 의존하여 작동하며, 일부는 분석 및 제품 개선을 위해 보존됩니다. GitHub Copilot은 개인 사용자의 다음 데이터를 수집합니다.

 

사용자 참여 데이터 GitHub Copilot을 사용할 때 IDE 또는 편집기와 상호 작용할 때 생성된 이벤트에 대한 사용 정보를 수집합니다. 이러한 이벤트에는 사용자의 완료 수락 및 거부와 같은 사용자 편집 작업, 지연 시간 및 기능 참여와 같은 메트릭을 식별하는 오류 및 일반 사용 데이터가 포함됩니다. 이 정보에는 익명의 식별자와 같은 개인 데이터가 포함될 수 있습니다.

 

코드 스니펫 데이터 선호하는 텔레메트리 설정에 따라 GitHub Copilot은 다음과 같은 것을 수집하고 보존할 수도 있습니다. "코드 스니펫"이라고 일괄적으로 지칭하는 것들: 편집 중인 소스 코드, 관련 파일 및 동일한 IDE 또는 편집기에서 열린 기타 파일, 저장소 및 파일 경로의 URL을 포함합니다.

 

Copilot for Individuals에서 수집한 데이터는 어떻게 사용되고 공유되나요?

 

사용자 참여 데이터와 코드 스니펫 데이터는 GitHub, Microsoft 및 OpenAI에서 GitHub Copilot 및 관련 서비스를 개선하고 개발자에 대한 제품 및 학술 연구를 수행하는 데 사용됩니다.

 

이러한 사용 사례에는 다음이 포함됩니다:

 

  • 사용자가 유용하게 사용할 수 있는 다양한 전략을 처리하고 예측하는 데 다른 접근 방식을 평가하여 GitHub Copilot 직접 개선하기
  • GitHub, Microsoft 및 OpenAI에서 밀접하게 관련된 개발자 제품 및 서비스를 개발하고 개선하기
  • GitHub Copilot의 잠재적인 오용 또는 사용 정책 위반을 조사하고 감지하기
  • 개발자 및 개발자 도구 및 서비스 사용에 관련된 실험 및 연구 수행하기
  • GitHub Copilot의 긍정적인 영향을 측정하여 GitHub Copilot을 평가하기
  • 긍정적인 및 부정적인 예제를 제공하여 기반 코드 생성 모델을 개선하기
  • 랭킹 및 정렬 알고리즘 및 프롬프트 제작을 세밀 조정하기

 

코드 스니펫 데이터를 처리할 때, GitHub는 어떻게 전송된 코드 스니펫 데이터를 보호하는지에 대한 "전송된 코드 스니펫 데이터가 어떻게 보호되나요?"에서 설명한 보호 조치를 취하며, 개인정보 보호 성명에 따라 책임있는 방식으로 적절한 처리를 수행하여 사용자의 텔레메트리 데이터가 이러한 모델을 개선하는 데 사용될 때이 데이터가 다른 GitHub Copilot 사용자와 공유되지 않도록합니다.

 

전송되는 코드 스니펫 데이터는 어떻게 보호되나요?

 

사용자 수정 작업, 소스 코드 조각 및 리포지토리 및 파일 경로의 URL은 민감한 데이터임을 알고 있습니다. 따라서 다음과 같은 보호 조치가 적용됩니다.

 

  • 전송된 데이터는 전송 중과 휴식 중에 암호화됩니다.
  • 접근 권한이 엄격하게 제어됩니다. 데이터에 액세스할 수 있는 사람은 (1) GitHub Copilot 팀 또는 GitHub 플랫폼 헬스 팀에서 작업하는 명명된 GitHub 직원, (2) GitHub Copilot 팀에서 작업하거나 작업하는 Microsoft 직원, (3) GitHub Copilot에서 작업하는 OpenAI 직원만 액세스할 수 있습니다.
  • 코드 조각 데이터에 액세스하는 직원은 역할 기반의 액세스 제어 및 다중 인증이 필요합니다.

 

개인용 Copilot 사용자는 코드 스니펫 데이터 사용을 어떻게 제어할 수 있나요?

 

GitHub Copilot은 수집하는 데이터의 사용 방법에 대해 선택권을 제공합니다. 유저의 활동 데이터(User Engagement Data)는 (유사 익명 식별자와 일반 사용 데이터를 포함하여) GitHub Copilot의 사용에 필요하며, GitHub Copilot을 사용하면 Microsoft 및 OpenAI와 함께 수집, 처리 및 공유됩니다. Copilot for Individuals 사용자는 사용자 설정을 조정하여 Code Snippets Data를 유지하고 추가 처리 및 Microsoft 및 OpenAI와 공유 여부를 선택할 수 있습니다.

 

Copilot for Individuals 사용자는 GitHub ID와 관련된 Code Snippet Data를 삭제 요청할 수 있습니다. GitHub Copilot은 OpenAI에서 학습 된 학습 모델인 Codex에 의해 제공됩니다. Codex의 학습 데이터에서 코드를 제거하려면 OpenAI의 이용 약관 "저작권 불만 처리" 섹션에 기술된 절차를 따르십시오. 추가 정보가 필요한 경우 지원 티켓을 작성하여 문의하십시오.

 

내 개인 코드가 다른 사용자들과 공유될까요?

 

아니요. GitHub Copilot의 다른 사용자를 위한 제안 코드로 사용되지 않도록 개인 정보 보호 정책에 따라 책임 있는 관행을 따릅니다.

 

GitHub Copilot가 개인 데이터를 출력하는 경우가 있나요?

 

GitHub Copilot을 구동하는 Codex 모델은 공개적으로 이용 가능한 코드를 학습 데이터로 사용하고 있기 때문에, 그 데이터에 포함된 개인 정보가 학습 데이터에 포함되어 있습니다. 그러나 내부 검증 결과, GitHub Copilot에서 개인 정보가 그대로 포함된 건 드물다는 것으로 밝혀졌습니다. 모델이 개인 정보처럼 보이는 데이터 (이메일, 전화번호 등)를 제시할 때도, 이 데이터는 실제로 학습 데이터 내에서 발견된 패턴을 합성한 가짜 정보입니다. 즉, 이 데이터는 특정 개인과 관련이 없습니다. 예를 들어, 개발자 중 한 명이 "제 이름은 Mona이고, 생일은..." 라는 프롬프트를 입력했을 때, GitHub Copilot이 제안한 가짜 생일 "12월 12일"은 Mona의 실제 생일이 아닙니다. 또한, 표준 형식으로 표시되는 이메일은 차단하는 필터링 시스템도 구현되어 있지만, 강력하게 시도하면 이러한 내용을 제안할 수도 있습니다. 그러나 GitHub Copilot 제안에서 더 많은 개인 정보를 탐지하고 제거하기 위해, GitHub는 필터링 시스템을 지속적으로 개선할 계획입니다.

 

GitHub의 개인 정보 및 데이터 보호에 대해 더 알고 싶은 경우 어디에서 알아볼 수 있나요?

 

GitHub Copilot의 개인정보 처리 및 이용에 대한 자세한 정보는 GitHub Copilot Privacy Statement를 참조하십시오.

 

 

후 겁나 길다... 꼭 한번쯤은 읽어보자.

 

다음 포스팅에선 Intellij에서 Copilot을 사용하는 방법에 대해 알아보겠다.

반응형

댓글