
안녕하세요~ 저번 포스팅에서는 GitHub Copilot이 AI를 제공하는 방식과 유형과 라이선스별로 어떠한 AI모델을 사용하는지에 대해서 알아보았습니다. 공부는 반복해야 기억이 남는다고하죠. 간단하게 요약해보면

GitHub Copilot를 사용하는 방식
- GitHub.com
- 데스크탑 app
- IDE: IDE에서는 인라인 제안과 Chat을 활용해서 GitHub Copilot을 사용할 수 있었습니다.
또한 GitHub Copilot은 GPT, Cluade, Gemini 등 다양한 모델들을 API를 호출하여 사용할 수 있고, 보통 요즘 자주 사용하는 모델은 GPT-5.5, Claude Sonnet/Opus 4.8, Gemini 3.5 Flash 등이 있습니다. 가장 낮은 Pro 모델같은경우에는 Cluade에 Opus 모델을 사용 불가능했습니다.
이번 포스팅에서는 GitHub Copilot 뿐만 아니라 AI를 사용할 때 프롬프트를 어떻게 작성해야하는지와 GitHub Copilot이 어떤 방식으로 동작하는지에 대해서 알아보겠습니다.
프롬프트 엔지니어링
AI를 잘 활용하는것은 결국에는 잘 명령하는것이라고 생각합니다. 어떻게 프롬프트를 작성하느냐에 따라 결과에 품질이 차이나죠. AI는 그 명령을 그냥 따를 뿐 입니다. 그러기 위해서는 '프롬프트 엔지니어링'이라는 기술을 배워야합니다.
프롬프트 엔지니어링이란?
프롬프트 엔지니어링은 프로젝트의 요구 사항에 맞게 맥락에 맞는 적합한 코드를 생성하기 위해 AI 시스템에게 명확한 지침을 만드는 프로세스입니다. 이를 통해 코드가 구문적, 기능적, 상황적으로 올바르게 되도록 할 수 있습니다.
프롬프트 엔지니어링 원칙(4S)
특정 전략을 살펴보기 전에 먼저 아래에 요약한 프롬프트 엔지니어링 4S 기본 원칙을 살펴보겠습니다.
- 단일성(Single): 프롬프트에서 항상 잘 정의된 하나의 작업에 또는 질문에 집중한다.
- 특정성(Specific): 명시적이고 자세한 지침을 사용한다.
- 간결성(Short): 프롬프트 내용을 구체적이면서도 간결하게 요점을 유지한다.
- 주변 정보(Surround): 설명이 포함된 파일 이름을 활용하고 관련된 파일을 열어 둔다.
프롬프트 엔지니어링 모범 사례
충분한 명확성 제공 - '단일성' 및 '특정성' 원칙을 기반으로 하여 프롬프트에서 항상 명시성을 목표로 합니다. 예를 들어 "지정된 목록에서 짝수 수를 필터링하고 반환하는 Python 함수 작성" 과 같은 프롬프트는 단일하고 특정적입니다.

세부 정보와 함께 충분한 맥락 제공 - "주변 정보" 원칙에 다라 맥락으로 Copilot의 이해를 돕습니다. 제공되는 맥락 정보가 많을수록 더 알맞은 코드 제안이 생성됩니다.

학습 예제 제공 - 예제를 사용하면 Copilot에 추상 개념을 설명하고 프롬프트에 대한 명백한 이해를 돕고 요구 사항과 기대치를 명확히 합니다.

테스트 및 반복 - GitHub Copilot의 잠재력을 최대한 발휘하고 개발 워크플로를 가속화하기 위한 키 중 하나는 전략적 반복의 연습입니다. 첫번째 프롬프트가 항상 원하는 결과가 아니여도 됩니다. 출력을 수동으로 구체화하는 시간을 소비하는 대신, Copilot과 효율적인 대화의 시작으로 처리하면 됩니다.
Copilot이 프롬프트에서 학습하는 방법
Copilot은 방대한 양의 데이터에서 학습한 AI 모델을 기반으로 작동합니다. 기계학습에서 일반적으로 볼 수 있는 이 방법은 다음과 같은 다양한 학습 접근 방식으로 이어졌습니다.
제로샷 학습 - 여기서는 GitHub Copilot이 구체적인 예제 없이 기본 학습에만 의존하여 코드를 생성합니다. 이 방법은 일반적인 표준 기능을 신속하게 구현하는데 적합합니다. 예를 들어 온도 섭씨와 화씨 간에 변환 함수를 만들려고 한다고 가정했을 때 원하는 내용을 간단하게 설명하는 주석만을 통해서 코드를 작성할 수 있습니다.

원샷 학습 - 이 방법을 사용하면 모델이 특정 패턴 및 규칙을 따르는 더 많은 컨텍스트 인식 응답을 생성하는 데 도움이 되는 단일 예제가 제공된다. 이는 코드가 일관적으로 생성되고, 코드 표준을 유지하면서 기능 개발을 가속화하는 데 특히 효과적이다.
예를 들어 앞에 온도 섭씨와 화씨 간에 변환 함수가 생성되었으면 그걸 예시로 다른 비슷한 함수를 요청할 수 있다.

퓨샷 학습 - 이 방법에서는 Copilot에게 여러 가지 예제를 제공하여 제로 샷의 예측 불가능성과 미세 조정의 정밀도 간의 균형을 찾습니다. 이 방법은 수동 테스트 및 구체화에 소요되는 시간을 줄이는데 탁월합니다. 예시) 하루 중 때에 맞추어 인사말을 보내는 코드를 생성한다고 가정합니다.

특수 작업에 대한 역할 프롬프트
역할 프롬프트에 대해서는 많이들 알고 계실거라 생각합니다. 너는 OO 역할이야. 앞으로 이 프로젝트에 대해서 컨설팅해줘 처럼 AI에게 특정 유형의 전문가 역할을 하도록 지시하면 코드의 품질과 관련성이 크게 향상 시킬 수 있습니다.
보안 전문가 역할
보안에 중요한 기능을 작업할 때 Copilot에게 보안 전문가처럼 생각하는 메시지를 표시합니다.
"사이버 보안 전문가 역할을 합니다. 일반적인 취약성을 확인하고 OWASP 지침을 따르는 암호 유효성 검사 함수를 만드세요."
성능 최적화 역할
성능에 중요한 코드의 경우 성능 전문가 역할을 사용합니다. "성능 최적화 전문가 역할을 합니다. 큰 데이터 세트를 효율적으로 처리하도록 이 정렬 알고리즘을 리팩터링합니다."
테스트 전문가 역할
포괄적인 테스트 제품군을 만들 때는 테스트 전문가 관점을 활용합니다. "테스트 전문가 역할을 합니다. 에지 사례 및 오류 시나리오 포함하여 이 결제 처리 모듈에 대한 포괄적인 단위 테스트를 만듭니다."
프롬프트 정리
결국에는 AI는 어떻게 명령을 내리느냐에 따라서 코드의 품질이 달라집니다. 간단하게 정리하자면 프롬프트는 간결하고, 명확하며, 정확한 예시를 주면 좋은 결과를 추출할 수 있습니다. 또한 너는 OO 역할이야 라는 역할을 부여함으로써 해당하는 역할에 따른 지침에 따라 코드의 품질과 관련성이 높아집니다.
GitHub Copilot 사용자 프롬프트 프로세스 흐름
이번에는 GitHub Copilot이 프롬프트를 스마트하고 사용 가능한 코드로 변환하는 방법을 자세히 살펴보겠습니다. 일반적으로 GitHub Copilot은 프롬프트를 수신하고 해당 데이터 흐름에서 코드 제안 또는 응답을 반환합니다. 이 프로세스에는 인바운드 및 아웃바운드 흐름을 제안합니다.
인바운드 흐름

1. 보안 프롬프트 전송 및 컨텍스트 수집
이 프로세스에서는 HPPS를 통한 사용자 프롬프트의 보안 전송으로 시작됩니다. 이를 통해 사용자 프롬프트가 GitHub Copilot 서버에 안전하게 기밀로 전송되어 정보를 보호할 수 있습니다.
동시에 Copilot은 상황 세부 정보를 수집합니다. 프로그래밍 언어 및 프레임워크에 대한 정보, 프로젝트 구조, FIM(Fill-in-the-Middle)기술을 사용하여 앞의 코드 컨텍스트와 뒤에 코드 컨텍스트를 모두 고려하여 Copilot이 보다 광범위한 컨텍스트를 통해 보다 정확하고 관련 있는 코드 제안으로 생성합니다.
2. 프록시 필터
컨텍스트가 수집되고 프롬프트가 빌드되면 GitHub 소유 Microsoft Azure 테넌트에 호스트도니 프록시 서버에 안전하게 전달됩니다. 프록시는 필터링하고, 프롬프트를 해킹하거나 시스템을 조작하여 모델이 코드 제안을 생성하는 방법에 대한 세부 정보를 공개하는 시도를 차단합니다.
3. 독성 필터링
Copilot은 의도 추출 및 코드 생성을 진행하기 전에 콘텐츠 필터링 매커니즘을 통합하여 생성된 코드 및 응답에 다음이 포함되거나 승격되지 않도록 합니다.
- 불쾌한 표현 및 부적절한 콘텐츠: 증오 발언, 모욕적인 언어 또는 유해하거나 불쾌감을 주는 콘텐츠 등
- 개인 데이터: 사용자의 개인 정보 보호 및 데이터 보안을 보호하기 위해 이름, 주소 또는 식별 번호와 같은 모든 개인 데이터를 적극적으로 필터링
4. LLM을 사용하여 코드 생성
마지막으로 필터링 및 분석된 프롬프트가 LLM 모델에 전달되어 적절한 코드 제안을 생성합니다. 이러한 제안은 생성된 코드가 관련성 있고, 기능을 하며, 프로젝트별 요구 사항에 맞게 조종되는 프롬프트 및 주변 컨텍스트에 대한 Copilot의 이해를 기반으로 합니다.
아웃 바운드 흐름

5. 사후 처리 및 응답 유효성 검사
모델이 응답을 생성하면 독성 필터는 유해하거나 불쾌한 생성 콘텐츠를 제거합니다. 그런 다음 프록시 서버는 최종 검사 계층을 적용하여 코드 품질, 보안 및 윤리적 표준을 보장합니다. 이들 검사는 다음과 같습니다.
- 코드 품질: XSS(사이트 간 스크립팅) 또는 SQL 삽입과 같은 일반적인 버그 또는 취약정에 대한 응답을 확인하여 생성된 코드가 강력하고 안전한지 확인한다.
- 공용 코드 일치(선택 사항): 필요에 따라 관리자는 GitHub 의 기존 공용 코드와 매우 유사한 경우 Copilot이 최대 15자 이상의 제안을 반환하지 못하도록 하는 필터를 사용하도록 설정할 수 있습니다.
6. 제안 전달 및 피드백 루프 시작
모든 필터를 전달하는 응답만 사용자에게 전달됩니다. 그런 다음, Copilot 작업을 기반으로 피드백 루프를 시작하여 다음을 수행합니다.
- 수락된 제안을 통해 지식을 키워 갑니다.
- 제안 사항의 수정 및 거부를 통해 학습하고 개선합니다.
7. 후속 프롬프트에 대해 반복
더 많은 프롬프트를 제공하면 Copilot이 지속적으로 사용자 요청을 처리하고 의도를 이해하며 이에 대한 응답으로 코드를 생성하면서 프로세스가 반복됩니다.
네 오늘은 이렇게 GitHun Copilot를 사용할때 AI를 잘 사용하는 방법에 대해 알아보았습니다. 또한 GitHub Copilot이 사용자 프롬프트를 어떻게 처리하는지 프로세스에 대해서 알아보았습니다. 다음 포스팅에는 GitHub Copilot을 VS Code에서 어떻게 사용해야하는지에 대한 기술 부분을 알려드리고자 합니다.
감사합니다.
'GitHub' 카테고리의 다른 글
| AI 보조 프로그래머, GitHub Copilot (3) (0) | 2026.07.15 |
|---|---|
| AI 보조 프로그래머, GitHub Copilot (2) (0) | 2026.07.14 |
| AI 보조 프로그래머, GitHub Copilot (1) (0) | 2026.07.13 |