참고
현재 무료, 프로 및 팀 플랜에 대한 설명서를 보고 있습니다. GitHub Copilot Enterprise 는 플랜의 GitHub Enterprise Cloud 고객만 사용할 수 있습니다. 자세한 내용은 설명서의 Copilot EnterpriseGitHub Copilot란?을 GitHub Enterprise Cloud 참조하세요.
애플리케이션 카드란?
GitHub’s application and platform cards are intended to help you understand how our AI technology works, the choices application owners can make that influence application performance and behavior, and the importance of considering the whole application, including the technology, the people, and the environment. Application cards are created for AI applications and platform cards are created for AI platform services. These resources can support the development or deployment of your own applications and can be shared with users or stakeholders impacted by them.
As part of its commitment to responsible AI, GitHub adheres to Microsoft's six core principles: fairness, reliability and safety, privacy and security, inclusiveness, transparency, and accountability. These principles are embedded in the Responsible AI Standard, which guides teams in designing, building, and testing AI applications. Application and Platform Cards play a key role in operationalizing these principles by offering transparency around capabilities, intended uses, and limitations. For further insight, readers are encouraged to explore Microsoft’s Responsible AI Transparency Report and GitHub 약관.
1 - 개요
GitHub Copilot 인라인 제안은 작업하는 동안 자동 완성 방식의 제안을 표시합니다. 이러한 제안은 편집기 또는 GitHub.com 텍스트 필드에 인라인으로 표시되므로 코드를 작성하고 요청 설명을 더 빠르게 끌어올 수 있습니다.
Copilot 인라인 제안은 다음 두 가지 형태로 제공됩니다.
- IDE 인라인 제안: 지원되는 편집기에서 코드를 입력할 때 Copilot 자동으로 인라인 제안을 제공하여 현재 줄을 완료하거나, 새 코드 블록을 생성하거나, 기존 코드에 대한 편집을 제안합니다. 이러한 제안에는 다음 편집할 위치와 코드 삭제, 수정 또는 삽입을 포함하여 편집할 위치를 모두 예측하는 것이 포함될 수 있습니다. 제안의 전부 또는 일부를 수락하거나, 해제하거나, 계속 입력하여 무시할 수 있습니다. 인라인 제안은 광범위한 프로그래밍 언어 및 프레임워크에서 작동합니다.
- 풀 리퀘스트 텍스트 완성: GitHub.com에서 풀 리퀘스트 설명을 입력하다가 멈추면 Copilot이 사용자의 생각을 이어서 작성할 수 있는 문장을 제안합니다. 이 제안은 풀 리퀘스트 제목, 기존 설명 텍스트, 커밋 제목, 일부 변경 내용, 그리고 최근에 본 풀 리퀘스트 및 이슈 제목을 기반으로 합니다. Tab 키를 눌러 제안을 수락하거나 입력을 계속하여 거부할 수 있습니다.
끌어오기 요청 텍스트 완성에 지원되는 기본 언어는 영어입니다. 인라인 제안은 다양한 프로그래밍 언어를 지원하며, 품질은 각 언어에 사용할 수 있는 학습 데이터의 볼륨 및 다양성에 따라 달라집니다.
2. 주요 용어
다음 목록에서는 GitHub Copilot 인라인 제안과 관련된 주요 용어집을 제공합니다.
- 콘텐츠 필터링: 사용자에게 표시되기 전에 프롬프트 및 응답을 검사하여 유해하거나 불쾌하거나 안전하지 않은 콘텐츠를 감지하고 차단하는 안전 시스템입니다.
- 환각: 언어 모델이 그럴듯하게 들리지만 실제로는 틀렸거나 제공된 컨텍스트에서 지원되지 않거나 완전히 조작된 출력을 생성하는 현상입니다. 환각은 큰 언어 모델의 알려진 위험이며 AI 생성 출력에 대한 인간의 검토가 중요한 주요 이유입니다.
- 인라인 제안: 입력할 때 편집기에서 나타나는 Copilot AI 생성 코드 제안입니다. 인라인 제안은 현재 줄을 완료하거나 다음 변경이 발생할 위치와 코드 삽입, 수정 또는 삭제를 포함하여 변경해야 하는 사항을 모두 예측하여 기존 코드에 대한 편집을 제안할 수 있습니다. 제안이 커서에 표시되거나 사용자가 코드베이스의 다른 관련 위치로 안내할 수 있습니다. 이 위치는 계속해서 입력하여 수락, 해제 또는 무시될 수 있습니다.
- LLM(큰 언어 모델) : 자연어 및 코드를 생성, 분석 및 변환할 수 있는 대규모 텍스트 데이터 본문에서 학습된 신경망 유형입니다. Copilot 인라인 제안은 하나 이상의 LLM을 사용하여 컨텍스트를 처리하고 제안을 생성합니다.
- 퍼블릭 코드 일치: Copilot 제안이 공개적으로 사용 가능한 코드와 일치하는지 여부를 확인하는 안전 기능입니다. 설정에 따라 일치하는 제안은 원본 리포지토리 및 라이선스 정보에 대한 참조로 차단되거나 주석이 추가됩니다.
- 풀 리퀘스트 텍스트 자동 완성: GitHub.com의 풀 리퀘스트 설명을 위한 자동 완성 방식의 제안입니다. 입력을 잠시 멈추면 Copilot이 풀 리퀘스트 컨텍스트에 따라 작성하던 내용을 이어갈 수 있는 문장을 제안합니다.
- 학습 데이터: Copilot 인라인 제안의 기반이 되는 모델을 학습시키는 데 사용된, 공개적으로 이용 가능한 방대한 양의 텍스트와 코드입니다. 학습 데이터의 구성은 다양한 프로그래밍 언어, 프레임워크 및 주제 전반에 걸쳐 모델의 제안 품질과 적용 범위에 영향을 미칩니다.
3. 주요 기능 또는 역량
여기에 설명된 주요 기능과 성능은 GitHub Copilot 인라인 제안이 무엇을 하도록 설계되었는지와 지원되는 작업 전반에서 어떻게 작동하는지를 설명합니다.
- 인라인 코드 제안: 지원되는 편집기에서 코드를 입력하면 Copilot 현재 줄을 완료하거나, 새 코드 블록을 생성하거나, 기존 코드에 대한 편집을 제안할 수 있는 인라인 제안을 자동으로 제공합니다. 이러한 제안에는 코드 삽입, 수정 또는 삭제, 코드 주석, 테스트 등이 포함될 수 있습니다. 변경해야 할 사항과 코드베이스에서 변경해야 하는 위치를 모두 예측합니다. 제안은 커서에 표시되거나 사용자를 다른 관련 편집 위치로 안내할 수 있으며, 입력을 계속하여 전체 또는 부분적으로 수락되거나, 해제되거나, 무시될 수 있습니다.
- 주석 기반 코드 생성: 예상되는 코드를 설명하는 코드 주석을 작성하여 인라인 제안을 안내할 수 있습니다. 예를 들어 "재귀 사용" 또는 "싱글톤 패턴 사용"와 같은 주석은 Copilot 제안하는 알고리즘 유형에 영향을 줍니다.
- 다중 언어 지원: 인라인 제안은 광범위한 프로그래밍 언어 및 프레임워크에서 작동합니다. 제안의 품질은 각 언어에 사용할 수 있는 학습 데이터의 양과 다양성에 따라 달라집니다. GitHub 있는 적극적으로 개발된 프로그래밍 언어 목록은 프로그램 언어 참조하세요.
- 풀 리퀘스트 텍스트 완성: GitHub.com에서 풀 리퀘스트 설명을 입력하다가 잠시 멈추면 Copilot이 생각을 이어갈 수 있도록 문장을 제안합니다. 제안은 풀 리퀘스트 제목, 기존 설명 텍스트, 커밋 제목, 일부 diff, 그리고 최근에 확인한 풀 리퀘스트 및 이슈 제목을 참고합니다.
4. 용도
GitHub Copilot 인라인 제안은 다양한 산업의 여러 시나리오에서 사용할 수 있습니다. 사용 사례의 몇 가지 예는 다음과 같습니다.
- 코드 작성 가속화: 개발자는 코드 완료, 새 블록 생성 또는 기존 코드 수정을 포함하여 입력할 때 예측된 변경 내용을 수락하여 인라인 제안을 사용하여 더 빠르게 작업할 수 있습니다. 제안은 변경해야 할 내용과 발생 위치를 모두 예상하여 현재 줄 또는 파일의 다른 관련 위치에서 코드를 삽입, 업데이트 또는 삭제할 수 있습니다. 이는 코드가 지원되는 언어 및 프레임워크 간에 발전함에 따라 상용구 코드, 반복 패턴, 일반적인 관용구 및 일관성 유지 관리에 특히 유용합니다.
- ** 단위 테스트 생성**: Copilot 가능한 입력 매개 변수, 예상 출력 값 및 어설션을 포함하여 주변 코드를 기반으로 테스트 사례를 제안할 수 있습니다. 이렇게 하면 개발자가 수동으로 식별하기 어려울 수 있는 에지 사례 및 경계 조건을 포함하여 테스트 범위를 더 빠르게 만들 수 있습니다. 생성된 테스트는 모든 시나리오를 다루지 않을 수 있으므로 계속 검토해야 합니다.
- 주석을 통한 코드 생성: 개발자는 필요한 코드를 설명하는 자연어 주석을 작성할 수 있으며, Copilot은 이에 해당하는 구현 코드나 수정 사항을 생성합니다. 이는 클래스에 추가할 알고리즘, 디자인 패턴 또는 메서드 및 속성을 지정하는 데 유용할 수 있습니다.
- 풀 리퀘스트 설명 작성하기: GitHub.com에서 풀 리퀘스트 설명을 작성할 때 Copilot이 생각을 이어갈 수 있도록 문구를 제안해 변경 사항을 더 명확하게, 더 빠르게 요약할 수 있도록 도와줍니다.
5. 모델 및 학습 데이터
GitHub Copilot 인라인 제안은 다양한 AI 모델을 활용해 사용자가 경험하는 기능을 구동합니다. Copilot 사용할 수 있는 모델의 비교는 AI 모델 비교 참조하세요. 지원되는 모델의 전체 목록은 GitHub Copilot에서 지원되는 AI 모델을 참조하세요. 모델이 호스트되는 위치에 대한 자세한 내용은 GitHub Copilot 위한 모델 호스팅을 참조하세요. GitHub Copilot 인라인 제안 뒤에 기초 모델을 학습하는 데 사용되는 데이터에 대해 자세히 알아보려면 위의 연결된 AI 모델 비교와 GitHub Copilot FAQ에서 GitHub Copilot 학습된 데이터는 무엇입니까? 참조하세요.
끌어오기 요청 텍스트 완성은 일반 대용량 언어 모델에서 Copilot API를 활용하는 간단한 프롬프트 흐름을 사용합니다. 이 기능에는 학습된 추가 모델이 사용되지 않습니다.
6. 성능
Copilot 인라인 제안은 자연어 처리와 기계 학습의 조합을 사용하여 주변 컨텍스트를 이해하고 제안을 제공하는 방식으로 작동합니다. 이 프로세스는 일관된 파이프라인을 따릅니다.
- 입력 처리: 커서 위치의 주변 코드는 인라인 제안 시스템에 의해 미리 처리되고, 컨텍스트 정보(예: 편집기의 열린 탭에서 코드 조각)와 결합되고, 프롬프트 형식으로 큰 언어 모델로 전송됩니다. 데이터 보존에 대한 자세한 내용은 Copilot 보안 센터 참조하세요.
- 언어 모델 분석: 큰 언어 모델은 입력 프롬프트를 처리합니다. 인라인 제안의 경우 모델은 편집기에서 현재 파일과 열려 있는 파일의 컨텍스트를 기반으로 인라인 제안 및 예측 편집을 모두 생성합니다. 여기에는 변경 내용과 발생 위치를 예측하여 코드 삽입, 수정 또는 삭제가 포함됩니다. 끌어오기 요청 텍스트 완성을 위해 Copilot Copilot API를 통해 언어 모델을 사용합니다.
- 응답 생성: 언어 모델은 입력 프롬프트 및 제공된 컨텍스트의 분석을 기반으로 응답을 생성합니다. 인라인 제안의 경우 코드를 완료하거나, 새 블록을 생성하거나, 편집해야 하는 항목과 코드베이스에서 발생하는 위치를 모두 예측하여 기존 코드에 대한 변경 내용(삭제 포함)을 제안하는 형식을 사용할 수 있습니다. 풀 리퀘스트 텍스트 완성의 경우, 응답은 설명을 자연스러운 문장으로 이어 쓴 형태입니다.
- 출력 서식: 응답은 주변 콘텐츠와 시각적으로 구별되는 제안된 변경 내용으로 편집기에서 인라인으로 표시됩니다. 제안은 커서 또는 그 근처에 표시될 수 있으며, 편집이 제안된 코드베이스의 다른 관련 위치를 강조 표시할 수 있으며, 명시적으로 수락하는 경우에만 파일 또는 텍스트 필드에 적용됩니다.
Copilot 인라인 제안은 기존 작업을 보강하기 위해 가장 관련성이 있고 유용한 제안을 제공하기 위한 것입니다. 그러나 항상 원하는 답변을 제공하는 것은 아닙니다. 사용자는 제안을 수락하기 전에 제안을 검토하고 유효성을 검사하여 정확하고 적절한지 확인해야 합니다. 제품 개발 프로세스의 일부로 생성된 제안은 콘텐츠 필터를 통해 실행됩니다. 콘텐츠 필터링 시스템은 유해하거나 불쾌한 콘텐츠 또는 안전하지 않은 코드를 검색하고 차단합니다. GitHub 설정에 따라 필터는 공용 코드와 일치하는 항목을 포함하는 제안도 차단하거나 주석을 추가합니다.
환경별 차이점
인라인 제안(IDE)
인라인 제안은 작업에 특화된 미세 조정된 언어 모델을 사용합니다. 코드베이스 및 사용자 시스템의 컨텍스트와 함께 현재 작업을 둘러싼 코드를 분석합니다. 이 분석에 따라 시스템은 코드를 완료하거나, 새 블록을 생성하거나, 변경해야 하는 내용과 코드베이스에서 발생하는 위치를 모두 예측하여 기존 코드에 대한 편집(삭제 포함)을 제안할 수 있습니다. 이 시스템은 코딩 작업을 지원하기 위한 것입니다.
끌어오기 요청 텍스트 완성(GitHub.com)
끌어오기 요청 텍스트 완성은 일반 대용량 언어 모델을 사용하여 Copilot API를 활용하는 간단한 프롬프트 흐름을 사용합니다. 풀 리퀘스트 설명을 입력하다가 잠시 멈추면 시스템은 풀 리퀘스트 제목, 기존 설명 텍스트, 커밋 제목, 일부 diff, 그리고 최근에 본 풀 리퀘스트 및 이슈 제목을 결합해 작성 흐름을 이어갈 수 있는 문구를 제안합니다. 지원되는 기본 언어는 영어입니다.
7. 제한 사항
GitHub Copilot 인라인 제안 제한 사항을 이해하는 것은 안전하고 효과적인 경계 내에서 사용되는지 확인하는 데 중요합니다. 고객이 혁신적인 솔루션 또는 애플리케이션에서 Copilot 인라인 제안을 활용하는 것이 좋지만, Copilot 인라인 제안이 가능한 모든 시나리오에 맞게 설계되지 않았다는 점에 유의해야 합니다. 사용 사례를 선택할 때는 다음과 같은 고려 사항뿐만 아니라 GitHub 약관 을 참조하는 것이 좋습니다.
- 제한된 범위: 인라인 제안은 코드의 큰 본문에서 학습되지만 범위가 제한되며 더 복잡한 코드 구조 또는 모호한 프로그래밍 언어를 처리하지 못할 수 있습니다. 각 언어에 대해 제안의 품질은 해당 언어에 대한 학습 데이터의 양과 다양성에 따라 달라집니다. 예를 들어 JavaScript는 공용 리포지토리에서 잘 표현되며 가장 잘 지원되는 언어 중 하나입니다. 공용 리포지토리에서 표현이 적은 언어는 지원하기가 더 어려울 수 있습니다. 또한 인라인 제안은 작성 중인 코드의 컨텍스트를 기반으로 하는 코드만 제안할 수 있으므로 더 큰 디자인 또는 아키텍처 문제를 식별할 수 없습니다. 인라인 제안은 자연어 출력이 아닌 코드 및 코드 관련 출력을 생성하기 위한 것입니다.
- 잠재적 편향: Copilot의 학습 데이터 출처에는 도구를 통해 지속될 수 있는 편향과 오류가 포함될 수 있습니다. 또한 인라인 제안은 특정 프로그래밍 언어 또는 코딩 스타일로 편향될 수 있으며, 이로 인해 최적이 아닐 수도 있고 불완전한 코드 제안도 발생할 수 있습니다.
- 보안 위험: Copilot 작성 중인 코드의 컨텍스트에 따라 코드를 생성하며, 신중하게 사용하지 않으면 중요한 정보 또는 취약성을 노출할 수 있습니다. Copilot 사용하여 보안에 민감한 애플리케이션에 대한 코드를 생성하고 항상 생성된 코드를 철저히 검토하고 테스트할 때는 주의해야 합니다.
- 공용 코드와 일치: 인라인 제안은 확률적인 방식으로 수행되는 새 코드를 생성할 수 있습니다. 확률은 낮지만 Copilot 학습 집합의 코드와 일치하는 코드 제안을 생성할 수 있습니다.
- 부정확한 코드: Copilot은 유효한 것처럼 보이지만 실제로는 의미적으로 또는 구문적으로 올바르지 않거나 개발자의 의도를 정확하게 반영하지 않는 코드를 생성할 수 있습니다. 부정확한 코드의 위험을 줄이려면 특히 중요하거나 민감한 애플리케이션을 다룰 때 생성된 코드를 신중하게 검토하고 테스트해야 합니다. 또한 생성된 코드가 모범 사례 및 디자인 패턴을 준수하고 코드베이스의 전체 아키텍처 및 스타일에 맞는지 확인해야 합니다.
- ** 끌어오기 요청은 제안 품질을 저하시킬 수 있습니다**: 매우 큰 끌어오기 요청의 경우 텍스트 완성을 위해 Copilot 사용하는 끌어오기 요청 콘텐츠 중 일부는 API 호출에 맞지 않을 수 있습니다. 따라서 예상할 수 있는 일부 제안이 표시되지 않거나 컨텍스트가 정확하지 않을 수 있습니다.
- 풀 리퀘스트 텍스트 완성의 환각 위험: 풀 리퀘스트 텍스트 완성은 대규모 언어 모델에 의해 생성되므로, Copilot이 그럴듯해 보이지만 사실과 다른 내용을 생성하는 환각이 발생할 위험이 있습니다. 게시하기 전에 생성된 텍스트를 신중하게 검토해야 합니다.
- 끌어오기 요청 콘텐츠 복제: 끌어오기 요청 텍스트 완성은 끌어오기 요청 자체의 콘텐츠에서 가져옵니다. 끌어오기 요청 콘텐츠(예: 커밋 메시지 또는 diffs)에 유해하거나 불쾌한 용어가 표시되면 제안에 해당 용어도 포함될 수 있습니다.
- 언어 지원: 끌어오기 요청 텍스트 완성을 위해 지원되는 기본 언어는 영어입니다. 인라인 제안은 다양한 프로그래밍 언어를 지원하며, 품질은 각 언어에 사용할 수 있는 학습 데이터의 볼륨 및 다양성에 따라 달라집니다.
8. 평가
성능 및 안전 평가는 유해한 콘텐츠를 생성하는 위험을 식별하면서 근거, 관련성 및 일관성과 같은 요인을 검토하여 AI 애플리케이션이 안정적이고 안전하게 운영되는지 여부를 평가합니다. 다음 평가는 이미 있는 안전 구성 요소를 사용하여 수행되었으며, 9에도 설명되어 있습니다. 안전 구성 요소 및 완화.
성능 및 품질 평가
GitHub Copilot 인라인 제안은 제안 품질, 관련성 및 개발자 가치를 평가하도록 설계된 다중 계층 오프라인 및 온라인 평가 시스템을 통해 평가됩니다. 또한 이 시스템은 고품질 표준을 유지하면서 신속한 모델 반복을 사용하도록 설계되었습니다.
성능 및 품질 평가 방법
오프라인 평가를 위해 여러 프로그래밍 언어의 주요 인라인 제안 시나리오를 다루는 큐레이팅된 테스트 제품군 집합을 사용합니다. 모델은 코드 정확성 및 상황별 관련성과 같은 핵심 동작에서 회귀를 감지하기 위해 예상 출력에 대해 평가됩니다. 또한 개발자 의도와 출력 품질, 일관성 및 맞춤을 평가하여 프로덕션 기준과 후보 모델을 비교합니다.
온라인 평가를 위해 승인률, 표시된 속도, 편집 품질 및 보존을 측정하기 위해 제어된 사용자 세그먼트에 후보 모델을 배포합니다.
평가는 모델에서 운영 제약 조건 내에서 가치를 제공할 수 있도록 대기 시간, 토큰 사용량 및 컴퓨팅 공간을 품질 메트릭과 함께 추적합니다.
또한 Microsoft 및 GitHub 내부 개발자 환경을 활용하여 실제 개발 조건에서 후보 모델을 평가하여 보다 광범위한 출시 전에 에지 사례 동작에 대한 질적 피드백과 초기 신호를 제공합니다.
위험 및 안전 평가
다양한 심각도의 콘텐츠 위험으로부터 보호하기 위해 AI 생성 콘텐츠와 관련된 잠재적 위험을 평가하는 것이 필수적입니다. 여기에는 유해한 콘텐츠를 생성하거나 탈옥 공격에 대한 취약성을 테스트하기 위한 AI 애플리케이션의 소인을 평가하는 것이 포함됩니다. GitHub의 경우, Microsoft Foundry의 평가를 코딩 용도에 맞게 조정한 평가를 포함해 성능 평가를 수행합니다.
- 증오와 불공평
- Sexual
- 폭력
- 자해
- 보호 재질
- 탈 옥
- 코드 취약성
위험 및 안전 평가 방법
적대적 테스트: 기본 모델이 업데이트되거나 학습 데이터 원본(예: 새 형식의 데이터 세트 통합)이 크게 변경되면 모델은 유해하거나 안전하지 않거나 정책 위반 출력을 유도하도록 설계된 입력으로 의도적으로 문제가 발생하는 안전 테스트를 거칩니다. 이 테스트는 유해한 콘텐츠, 지적 재산권 위험 및 안전하지 않은 코드 생성을 비롯한 여러 위험 범주를 다룹니다. 결과는 프로덕션 기준과 비교되며, 회귀가 있는 경우 실제 위험을 평가하기 위해 수동 검토를 거칩니다.
품질 및 안전을 위한 평가 데이터
평가 데이터는 안전 및 품질의 주요 영역에서 AI 애플리케이션 성능을 평가하여 실제 시나리오와 위험을 시뮬레이션하도록 사용자 지정 빌드되었습니다. 우리는 다학제 연구 및 전문가의 의견을 기반으로 우려의 관련 평가 측면을 식별하는 것으로 시작합니다. 이러한 문제는 대상 평가 목표로 변환되고 평가 메트릭의 공식화 가이드로 변환됩니다. safety 경우 바람직하지 않거나 에지 케이스 응답을 유도하는 악의적 프롬프트를 만든 다음, GitHub 표준과의 맞춤을 평가하도록 학습된 AI 지원 주석을 사용하여 점수가 매깁니다. 품질을 위해 RAG(검색 보강 세대) 애플리케이션 및 에이전트 평가를 포함하여 시나리오와 관련된 루브릭 기반 프롬프트를 만듭니다. 데이터 세트는 실제 사용자 시나리오를 시뮬레이션하기 위해 가상 및 공용 데이터 세트를 비롯한 다양한 원본에서 큐레이팅됩니다. 큐레이팅된 데이터 세트를 사용하여 두 평가 모두 반복적인 구체화와 인적 맞춤을 거쳐 메트릭 효능과 안정성을 향상시킵니다. 이 방법론은 고객이 평가를 사용하여 더 나은 AI를 구축하는 방법을 반영하는 반복 가능하고 엄격한 평가의 기초를 형성합니다.
사용자 지정 평가
Copilot 인라인 제안은 잠재적인 안전 위험을 식별하고 해결하기 위해 RAI 레드 팀 검토를 거쳤습니다. 우리는 시간이 지남에 따라 기능의 효능과 안전을 계속 모니터링합니다. 자세한 내용은 Microsoft 보안 블로그에서 Microsoft AI Red Team이 더 안전한 AI의 미래를 구축하는 것을 참조하세요.
9. 안전 구성 요소 및 완화
GitHub Copilot 인라인 제안은 전체 제안 파이프라인에서 여러 보호 계층이 있는 안전 아키텍처를 사용합니다.
- 입력 및 출력 처리: 편집 기록, 주변 코드 및 커서 위치를 포함한 코드 컨텍스트는 언어 모델에 도달하기 전에 구조화되고 범위가 지정됩니다. 모델은 좁은 작업(정의된 창 내에서 다음 코드 편집 예측)으로 제한되며 엄격한 출력 형식을 따라야 하며 자유형 응답이 아닌 코드 편집만 생성합니다. 또한 시스템 프롬프트는 지침을 위반할 수 있는 요청에 대한 위임된 거부 응답과 함께 콘텐츠 정책을 준수하도록 적용합니다.
- 컨트 및 코드 안전 필터: GitHub Copilot 유해하거나 부적절한 출력을 줄이고 오용을 억제하도록 설계된 안전 필터를 포함합니다. 사용자는 제안을 사용하기 전에 계속 검토해야 합니다.
- 공개 코드 일치: GitHub Copilot 제안이 공개적으로 사용 가능한 코드와 일치하는 경우를 식별하도록 설계된 중복 검색 시스템을 사용합니다. 조직 및 개인은 일치 제안을 차단하거나 리포지토리 및 라이선스 정보를 사용하여 참조하는 코드를 제공하도록 구성할 수 있습니다.
- 사용자 감독: 인라인 제안은 휴먼 인 더 루프 원칙을 따릅니다. 제안은 주변 콘텐츠와 시각적으로 구별되며 사용자가 명시적으로 수락할 때만 적용됩니다. 의도적인 사용자 작업 없이는 코드 변경이 발생하지 않습니다. 사용자는 생성된 모든 제안을 검토, 테스트 및 유효성을 검사하는 것이 좋습니다.
10. GitHub Copilot 인라인 제안 배포 및 채택 모범 사례
책임 있는 AI는 GitHub 고객과의 공동 약속입니다. GitHub 보안, 공정성 및 투명성을 핵심으로 AI 애플리케이션을 빌드하지만, 고객은 이러한 기술을 자체 컨텍스트 내에서 책임감 있게 배포하고 사용하는 데 중요한 역할을 합니다. 이 파트너십을 지원하기 위해 고객이 책임 있는 AI를 효과적으로 구현할 수 있도록 배포자와 최종 사용자를 위한 다음과 같은 모범 사례를 제공합니다.
- ** 결과적 결정이나 중요한 도메인에서 Copilot 제안 사용할 때 주의하고 결과를 평가합니다**: 결과적 결정은 교육, 고용, 금융 플랫폼, 정부 혜택, 의료, 주택, 보험, 법적 플랫폼에 대한 개인의 접근에 법적 또는 중대한 영향을 미칠 수 있거나 신체적, 심리적 또는 재정적 피해를 초래할 수 있는 결정입니다. 금융 플랫폼, 의료 및 주택과 같은 중요한 도메인은 다른 그룹의 사람들에게 불균형적으로 영향을 미칠 수 있기 때문에 특별한 주의가 필요합니다. 이러한 영역에서 결정에 AI를 사용하는 경우 영향을 받는 이해 관계자가 의사 결정 방법을 이해하고, 결정에 이의를 제기하고, 관련 입력 데이터를 업데이트할 수 있는지 확인합니다.
- 법률 및 규제 고려 사항을 평가합니다. 고객은 모든 산업 또는 시나리오에서 사용하기에 적합하지 않을 수 있는 AI 플랫폼 및 솔루션을 사용할 때 잠재적인 특정 법률 및 규제 의무를 평가해야 합니다. 또한 AI 플랫폼 또는 솔루션은 해당 서비스 약관 및 관련 행동 강령에서 금지된 방식으로 설계되지 않았으며 사용할 수 없습니다.
- 프롬프트를 주제에 맞게 유지: Copilot 인라인 제안은 오직 코드 또는 코드 관련 제안만 생성하도록 설계되었습니다. 편집기의 콘텐츠를 코드 또는 코딩 관련 정보로 제한하면 제안 품질이 향상될 수 있습니다.
- 끌어오기 요청 텍스트 완성을 위한 적절한 컨텍스트 제공: 끌어오기 요청 텍스트 완성 제안의 품질은 끌어오기 요청 제목, 커밋 메시지 및 설명에 이미 있는 텍스트의 품질에 따라 달라집니다. 명확하고 설명적인 제목 및 커밋 메시지를 제공하면 제안의 관련성이 향상됩니다. 사용자가 만든 끌어오기 요청에서 정보의 정확도를 검토하고 평가하는 것은 사용자의 책임입니다.
- Copilot 인라인 제안을 대체 도구가 아닌 도구로 사용: Copilot 코드를 생성하기 위한 강력한 도구일 수 있지만 사용자 프로그래밍을 대체하는 도구가 아니라 도구로 사용하는 것이 중요합니다. 수락하기 전에 항상 Copilot 제안을 검토하고 요구 사항을 충족하고 오류 또는 보안 문제가 없는지 확인하기 위해 추가 유효성을 검사해야 합니다.
- 적절한 경우 사용자 감독 연습: AI 애플리케이션과 상호 작용할 때 인간의 감독은 중요한 안전 장치입니다. AI 애플리케이션을 지속적으로 개선하는 동안 AI는 여전히 실수를 할 수 있습니다. 생성된 출력은 부정확하거나, 불완전하거나, 편향되거나, 잘못 정렬되거나, 의도한 목표와 무관할 수 있습니다. 이는 입력의 모호성 또는 기본 모델의 제한 사항과 같은 다양한 이유로 인해 발생할 수 있습니다. 따라서 사용자는 Copilot 인라인 제안으로 생성된 응답을 검토하고 예상 및 요구 사항과 일치하는지 확인해야 합니다.
- 지나친 의존의 위험에 유의하세요. AI에 대한 지나친 의존은 AI 출력의 실수가 감지하기 어려울 수 있기 때문에 사용자가 올바르지 않거나 불완전한 AI 출력을 수락할 때 발생합니다. 최종 사용자의 경우, 과잉 의존은 생산성 감소, 신뢰 상실, 신청 포기, 재정적 손실, 심리적 피해, 신체적 피해 등을 초래할 수 있습니다. (예: 의사가 잘못된 AI 출력을 수락합니다).
- 중요한 도메인에서 에이전트 AI를 디자인할 때 주의해야 합니다. 사용자는 에이전트 작업이 돌이킬 수 없거나 매우 중요한 중요한 도메인에 에이전트 AI 애플리케이션을 디자인 및/또는 배포할 때 주의를 기울여야 합니다. GitHub 약관에 자세히 설명된 대로 자율 에이전트 AI를 만들 때도 추가 예방 조치를 취해야 합니다.
- 보안 코딩 및 코드 검토 사례 사용: 인라인 제안은 구문적으로 올바른 코드를 생성할 수 있지만 항상 안전하지는 않을 수 있습니다. 코드에 비밀번호를 하드코딩하거나 SQL 인젝션 취약점이 발생하지 않도록 하는 것과 같은 보안 코딩 모범 사례를 항상 따르고, 코드 검토 모범 사례도 준수해야 합니다.
- 최신 정보를 확인하세요: Copilot 인라인 제안은 아직도 계속 발전하고 있는 기술입니다. 도구에 대한 업데이트나 변경사항은 물론 새로운 보안 위험이나 모범 사례에 대한 최신 정보를 파악해야 합니다. 자동화된 확장 업데이트는 기본적으로 Visual Studio Code, Visual Studio 및 JetBrains IDE 제품군에서 사용하도록 설정됩니다.
중요
사용자는 보안 취약점, 버그, IP 침해 등 생성된 코드와 관련된 모든 위험을 감수해야 합니다.
11. GitHub Copilot 인라인 제안에 대해 자세히 알아보기
Copilot 인라인 제안의 책임 있는 사용에 대한 추가 지침은 다음 설명서를 검토하는 것이 좋습니다.