GitHub Copilot 정보 및 인라인 제안
Copilot 인라인 제안은 GitHub Copilot에 의해 인라인으로 생성된 자동 완성 스타일 제안입니다. Copilot 인라인 제안은 AI 기반 쌍 프로그래머로 작업하는 환경을 만들어 코드를 완료하기 위한 제안을 자동으로 제공합니다. 또한 코드 주석, 테스트 등을 제안할 수도 있습니다. 코드를 작성하는 동안 지원되는 편집기에서 이러한 제안을 직접 제공하며, 광범위한 프로그래밍 언어 및 프레임워크에서 작동할 수 있습니다. 자세한 내용은 GitHub Copilot이란?을(를) 참조하세요.
Copilot의 제안은 현재 줄을 완성하기 위한 것일 수도 있지만, 때로는 완전히 새로운 코드 블록을 제안할 수도 있습니다. 제안을 모두 수락하거나 또는 일부만 수락할 수 있으며, 제안을 거부하거나, 계속 입력하고 제안을 무시할 수도 있습니다.
Copilot 인라인 제안은 자연어 처리와 기계 학습의 조합을 사용하여 주변 코드를 이해하고(커서 위치를 기준으로) 제안 사항을 제공합니다. 이 프로세스는 여러 단계로 나눌 수 있습니다.
입력 처리
사용자의 커서에서 주변 코드는 Copilot 인라인 제안 시스템에 의해 사전 처리되며, 컨텍스트 정보(예: 편집기의 열린 탭에서 코드 조각)와 결합되어 프롬프트 형태로 큰 언어 모델로 전송됩니다. 데이터 보존에 대한 자세한 내용은 GitHub Copilot 보안 센터를 참조하세요.
대규모 언어 모델은 전송된 프롬프트를 받아, 프롬프트를 기반으로 응답을 제공합니다. 이 시스템은 코딩을 지원하기 위해 설계되었습니다.
언어 모델 분석
입력 프롬프트를 처리하는 큰 언어 모델은 인라인 제안을 위한 미세 조정된 언어 모델이며, 인라인 제안을 제공하기 위해 특수화된 대규모 코드 데이터 본문에서 학습된 신경망입니다.
인라인 제안에 사용되는 모델을 변경할 수 있습니다. GitHub Copilot 코드 완성을 위한 AI 모델 변경을(를) 참조하세요.
응답 생성
언어 모델은 입력 프롬프트와 제공된 컨텍스트에 대한 분석을 기반으로 응답을 생성합니다. 이 응답은 현재 줄 완성부터 완전히 새로운 코드 블록에 이르기까지 생성된 코드 및 일반 텍스트 주석의 형태를 사용합니다.
출력 형식
Copilot에서 생성된 응답은 주변 코드와 시각적으로 구분되고 제안으로 사용자에게 표시되는 "고스트 텍스트"로 형식이 지정됩니다. 사용자가 제안을 명시적으로 수락하는 경우에만 파일/코드베이스에 추가됩니다. 제안을 모두 수락하거나 또는 일부만 수락할 수 있으며, 제안을 거부하거나, 계속 입력하고 제안을 무시할 수도 있습니다. 이 경우 제안은 폐기됩니다.
GitHub Copilot 인라인 제안은 기존 코드를 보강하기 위해 가장 관련성이 있고 유용한 코드 제안을 제공하기 위한 것입니다. 그러나 항상 사용자가 원하는 답변을 제공하지는 않을 수도 있습니다. Copilot 사용자는 시스템에서 생성된 응답을 수락하기 전에 검토하고 검증하여 정확하고 적절한지 확인할 책임이 있습니다. 또한 제품 개발 프로세스의 일환으로Copilot 인라인 제안의 안전을 이해하고 개선하기 위해 레드 팀을 구성합니다. 생성된 제안도 콘텐츠 필터를 통해 실행됩니다. 콘텐츠 필터링 시스템은 Copilot에서 유해하거나 불쾌감을 주는 콘텐츠나 안전하지 않은 코드가 출력되는 것을 감지하고 차단합니다. 또한 사용자의 GitHub 설정에 따라 필터는 공용 코드와 일치하는 제안을 차단하거나 주석을 추가합니다.
GitHub Copilot의 인라인 제안 사항에 대한 사용 사례
GitHub Copilot 인라인 제안은 다양한 시나리오에서 코딩 지원을 제공할 수 있습니다.
지침에 따른 코드 생성
Copilot에서 제안을 제공하는 것 외에도 코드 주석을 사용하여 Copilot에게 주석 뒤에 나올 코드에 대해 전달할 수 있습니다. 예를 들어, "재귀 사용" 또는 "싱글톤 패턴 사용"과 같은 주석을 사용하여 Copilot이 제안해야 하는 알고리즘 유형을 지정할 수 있습니다. 또는 어떤 메서드와 속성을 클래스에 추가해야 하는지 Copilot에게 주석을 통해 알려줄 수도 있습니다.
단위 테스트 사례 생성
{데이터 변수 변수.product.prodname_copilot_short} 인라인 제안은 편집기에서 입력한 주변 코드를 기반으로 코드 스니펫을 생성하여 단위 테스트 케이스 작성을 돕습니다. 이렇게 하면 테스트 사례를 작성하는 반복적인 작업에 소요되는 시간을 줄일 수 있습니다. 예를 들어 특정 함수에 대한 테스트 케이스를 작성하는 경우 Copilot을 사용하여 함수의 서명 및 본문을 기반으로 가능한 입력 매개변수와 예상 출력 값을 제안할 수 있습니다. 인라인 제안은 코드의 컨텍스트 및 의미 체계에 따라 함수가 제대로 작동하는지 확인하는 어설션을 제안할 수도 있습니다.
Copilot 인라인 제안은 수동으로 식별하기 어려울 수 있는 에지 사례 및 경계 조건에 대한 테스트 사례를 생성하는 데 도움이 될 수 있습니다. 예를 들어 Copilot은 오류 처리, 널 값 또는 예기치 않은 입력 유형에 대한 테스트 사례를 제안하여 코드의 견고성과 복원력을 보장할 수 있도록 도와줍니다. 하지만 생성된 테스트 케이스가 가능한 모든 시나리오를 다루지는 않을 수 있으며, 코드의 품질을 보장하기 위해서는 여전히 수동 테스트 및 코드 검토가 필요하다는 점에 유의해야 합니다.
일반적인 코딩 작업과 과제에 대한 지침과 지원을 제공할 수 있으므로 프로그래머에게 유용한 도구가 될 수 있습니다.
GitHub Copilot 인라인 제안에 대한 성능 향상
Copilot 인라인 제안은 다양한 성능 및 품질 메트릭을 사용하여 다양한 컨텍스트에서 코드 제안을 생성할 수 있습니다. 성능을 향상시키고 Copilot 인라인 제안 기능의 몇 가지 제한 사항을 해결하기 위해 채택할 수 있는 다양한 조치가 있습니다. Copilot 인라인 제안의 제한 사항에 대해 더 알아보려면 GitHub Copilot 인라인 제안의 제한 사항을 참조하세요.
주제에 맞는 프롬프트 유지
Copilot은 코드 관련 완성이나 코드 자체 완성을 생성하는 데에만 사용됩니다. 따라서 편집기의 콘텐츠 컨텍스트를 코드 또는 코딩 관련 정보로 제한하면 모델의 출력 품질이 향상될 수 있습니다.
Copilot 인라인 제안을 대체가 아닌 도구로 사용하십시오.
은 코드 생성을 위한 강력한 도구가 될 수 있지만, 사람이 직접 프로그래밍하는 것을 대체하는 것이 아니라 도구 자체로 사용하는 것이 중요합니다. Copilot에서 생성한 코드 제안을 수락하기 전에 반드시 검토하고, 수락 후에도 해당 코드가 요구 사항을 충족하는지, 오류나 보안 문제는 없는지 추가 검증 단계를 거쳐야 합니다.
중요
사용자는 보안 취약성, 버그, IP 침해 등의 생성된 코드와 관련된 모든 위험을 감수합니다.
보안 코딩 및 코드 검토 관행 사용
Copilot 인라인 제안은 구문적으로 올바른 코드를 생성할 수 있지만 항상 안전하지는 않을 수 있습니다. Copilot의 제한 사항을 해결하려면 항상 하드 코딩된 암호나 SQL 삽입 취약성을 방지하는 것과 같은 보안 코딩 모범 사례를 따르고, 코드 검토 모범 사례도 따라야 합니다.
최신 소식을 받아보세요.
Copilot 인라인 제안은 여전히 상당히 새로운 기술이며 시간이 지남에 따라 진화 할 가능성이 높습니다. 도구에 대한 업데이트나 변경사항은 물론 새로운 보안 위험이나 모범 사례에 대한 최신 정보를 파악해야 합니다. 자동화된 확장 업데이트는 Visual Studio Code, Visual Studio 및 JetBrains IDE 제품군에서 기본적으로 사용하도록 설정됩니다. 자동 업데이트를 사용하도록 설정한 경우 IDE를 열면 Copilot이 자동으로 최신 버전으로 업데이트됩니다. IDE의 자동 업데이트에 대한 자세한 내용은 선호하는 IDE 또는 코드 편집기의 설명서를 참조하세요.
GitHub Copilot 인라인 제안의 제한 사항
코드베이스 및 입력 데이터와 같은 요인에 따라 Copilot 인라인 제안과 상호 작용할 때 성능 수준이 다를 수 있습니다. 다음 정보는 Copilot 인라인 제안에 적용되는 성능에 대한 시스템 제한 사항 및 주요 개념을 이해하는 데 도움이 되도록 설계되었습니다.
제한된 범위
Copilot 인라인 제안은 큰 코드 본문에서 학습되지만 범위가 제한되어 있어 더 복잡한 코드 구조나 모호한 프로그래밍 언어를 처리하지 못할 수 있습니다. 각 언어의 경우 해당 언어에 대한 학습 데이터의 양과 다양성에 따라 제공되는 제안의 품질이 달라질 수 있습니다. 예를 들어 JavaScript는 공용 리포지토리에 잘 표현되어 있으며 GitHub Copilot에서 가장 잘 지원되는 언어 중 하나입니다. 퍼블릭 리포지토리에 잘 표현되어 있지 않은 언어는 Copilot에서 지원하기가 더 어려울 수 있습니다. 또한 Copilot 인라인 제안은 작성 중인 코드의 컨텍스트에 따라 코드를 제안할 수 있으므로 더 큰 디자인 또는 아키텍처 문제를 식별할 수 없습니다.
마지막으로 Copilot의 인라인 제안은 코드와 관련된 출력을 생성하기 위해 설계되었습니다. Copilot 인라인 제안 사용은 자연어 출력을 생성하기 위한 목적이 아닙니다.
잠재적 편향성
Copilot의 학습 데이터는 기존 코드 리포지토리에서 가져온 것으로, 도구에 의해 지속될 수 있는 편견과 오류가 포함될 수 있습니다. 또한 Copilot 인라인 제안은 특정 프로그래밍 언어 또는 코딩 스타일로 편향될 수 있으며, 이로 인해 최적이 없거나 불완전한 코드 제안이 발생할 수 있습니다.
보안 위험
Copilot은 작성 중인 코드의 컨텍스트에 따라 코드를 생성하므로 신중하게 사용하지 않을 경우 민감한 정보나 취약점이 노출될 수 있습니다. 보안에 민감한 애플리케이션의 코드를 생성하는 데 Copilot을 사용할 때는 주의해야 하며, 생성된 코드를 항상 철저히 검토하고 테스트해야 합니다.
공개 코드와 일치
Copilot 인라인 제안은 확률적인 방식으로 새 코드를 생성할 수 있습니다. 확률은 낮지만 Copilot은 학습 집합의 코드와 일치하는 코드 제안을 생성할 수 있습니다.
부정확한 코드
Copilot의 한계 중 하나는 유효해 보이지만 실제로는 의미론적 또는 구문론적으로 올바르지 않거나 개발자의 의도를 정확하게 반영하지 못할 수 있는 코드를 생성할 수 있다는 것입니다. 부정확한 코드의 위험을 줄이려면 특히 중요하거나 민감한 애플리케이션을 다룰 때 생성된 코드를 신중하게 검토하고 테스트해야 합니다. 또한 생성된 코드가 모범 사례 및 디자인 패턴을 준수하고 코드베이스의 전체 아키텍처 및 스타일에 맞는지 확인해야 합니다.
법률 및 규정 고려 사항
사용자는 모든 산업 또는 시나리오에서 사용하기에 적합하지 않을 수 있는 AI 서비스 및 솔루션을 사용할 때 잠재적인 특정 법률 및 규정 의무를 평가해야 합니다. 또한 AI 서비스 또는 솔루션은 해당 서비스 약관 및 관련 행동 강령에서 금지된 방식으로 설계되지 않았으며 사용할 수 없습니다.
다음 단계
Copilot 인라인 제안을 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요.
-
[AUTOTITLE](/copilot/using-github-copilot/getting-code-suggestions-in-your-ide-with-github-copilot)
추가 참고 자료
-
[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot) -
[GitHub Copilot 신뢰 센터](https://copilot.github.trust.page/)