VS Code에서 프롬프트 엔지니어링
이 문서는 Visual Studio Code에서 AI로부터 더 좋고 관련성 높은 응답을 얻기 위한 프롬프트 작성 팁을 다룹니다. 프롬프트 엔지니어링 또는 프롬프트 작성은 AI에 대해 이야기할 때 자주 듣게 되는 문구로, AI API 엔드포인트에 전달되는 정보의 방식과 내용을 의미합니다.
VS Code 또는 AI가 처음이라면 먼저 VS Code AI 개요 문서를 검토하거나 바로 시작하기 튜토리얼을 살펴보세요.
인라인 제안 활용하기
인라인 제안은 코드, 주석, 테스트 등을 자동으로 완성하는 제안을 제공하여 코드를 더 효율적으로 작성하도록 도와줍니다. AI가 최상의 제안을 제공하도록 돕는("프롬프트") 몇 가지 방법이 있습니다.
컨텍스트 제공
AI는 사용자가 무엇을 하고 있고 어떤 도움을 받고 싶은지 알 수 있도록 충분한 컨텍스트를 제공받을 때 가장 잘 작동합니다. 동료에게 특정 프로그래밍 작업에 대한 도움을 요청할 때 컨텍스트를 제공하는 것처럼 AI에게도 동일하게 할 수 있습니다.
파일 열기
인라인 제안의 경우, VS Code는 현재 열려 있는 파일을 검토하여 컨텍스트를 분석하고 적절한 제안을 생성합니다. 인라인 제안을 사용하는 동안 VS Code에서 관련 파일을 열어두면 이 컨텍스트를 설정하는 데 도움이 되며 AI가 프로젝트의 더 큰 그림을 볼 수 있게 합니다.
최상위 수준 주석
동료에게 간략한 상위 수준 소개를 제공하는 것처럼, 작업 중인 파일의 최상위 수준 주석은 AI가 생성하려는 내용의 전체 컨텍스트를 이해하는 데 도움이 될 수 있습니다.
적절한 포함 및 참조
작업에 필요한 포함 또는 모듈 참조를 수동으로 설정하는 것이 가장 좋습니다. AI가 제안을 할 수는 있지만, 어떤 종속성을 포함해야 하는지는 사용자가 가장 잘 알고 있을 것입니다. 또한 AI에게 어떤 프레임워크, 라이브러리 및 해당 버전을 사용하여 제안을 작성하기를 원하는지 알리는 데 도움이 될 수 있습니다.
다음 TypeScript 예시에서 add 메서드의 출력을 로깅하려고 합니다. 포함이 없는 경우 AI는 console.log를 사용하도록 제안합니다.
반면에 Log4js에 대한 참조를 추가하면 AI는 해당 프레임워크를 사용하여 출력을 로깅하도록 제안합니다.

의미 있는 함수 이름
fetchData()와 같은 메서드는 동료(또는 몇 달 후의 사용자)에게 큰 의미가 없듯이, fetchData()는 AI에게도 도움이 되지 않습니다. 의미 있는 함수 이름을 사용하면 AI가 원하는 대로 작동하는 본문을 제공하는 데 도움이 됩니다.
구체적이고 범위가 잘 지정된 함수 주석
함수 이름만으로는 너무 길지 않으면서도 충분히 설명적일 수 없습니다. 함수 주석은 AI가 알아야 할 세부 정보를 채우는 데 도움이 될 수 있습니다.
샘플 코드로 AI 프라임
AI를 올바른 방향으로 유도하는 한 가지 트릭은 찾고 있는 것과 유사한 샘플 코드를 열려 있는 편집기에 복사하여 붙여넣는 것입니다. 작은 예시를 제공하면 AI가 원하는 언어 및 달성하려는 작업과 일치하는 제안을 생성하는 데 도움이 됩니다. AI가 원하는 코드를 생성하고 실제로 사용할 코드를 제공하기 시작하면 파일에서 샘플 코드를 삭제할 수 있습니다. 이는 AI가 오래된 코드 제안을 기본으로 제공할 때 최신 라이브러리 버전으로 AI를 빠르게 시작하는 데 특히 유용할 수 있습니다.
일관성을 유지하고 품질 기준을 높게 유지
AI는 기존 패턴을 따르는 제안을 생성하기 위해 코드에 의존하므로 "쓰레기 입력, 쓰레기 출력"이라는 격언이 적용됩니다. 항상 높은 품질 기준을 유지하는 데는 규율이 필요할 수 있습니다. 특히 무언가를 작동시키기 위해 빠르게 코딩할 때는 "해킹" 모드일 때 완료를 비활성화하는 것이 좋습니다. 인라인 제안을 일시적으로 건너뛰려면 상태 표시줄의 Copilot 메뉴를 선택한 다음 **건너뛰기** 버튼을 선택하여 건너뛰기 시간을 5분씩 늘립니다. 인라인 제안을 다시 시작하려면 Copilot 메뉴에서 **건너뛰기 취소** 버튼을 선택합니다.

챗 활용하기
채팅을 사용할 때 경험을 최적화하기 위해 몇 가지 작업을 수행할 수 있습니다.
관련 컨텍스트 추가
# 다음에 언급하려는 컨텍스트 항목을 입력하여 프롬프트에 명시적으로 컨텍스트를 추가할 수 있습니다. VS Code는 파일, 폴더, 코드 심볼, 도구, 터미널 출력, 소스 제어 변경 등 다양한 유형의 컨텍스트 항목을 지원합니다.
채팅 입력 필드에 # 기호를 입력하여 사용 가능한 컨텍스트 항목 목록을 보거나, 채팅 보기에서 **컨텍스트 추가**를 선택하여 컨텍스트 선택기를 엽니다.
예를 들어, #<파일 이름> 또는 #<폴더 이름>을 사용하면 채팅 프롬프트에서 작업 공간의 특정 파일이나 폴더를 참조할 수 있습니다. 이를 통해 작업 중인 파일에 대한 컨텍스트를 제공하여 Copilot Chat의 응답을 코드와 더 관련성 있게 만들 수 있습니다. "Can you suggest improvements to #package.json?" 또는 "How do I add an extension in #devcontainer.json?"와 같은 질문을 할 수 있습니다.
개별 파일을 수동으로 추가하는 대신, #codebase를 사용하여 VS Code가 코드베이스에서 올바른 파일을 자동으로 찾도록 할 수 있습니다. 질문과 관련된 파일이 무엇인지 모르는 경우 유용할 수 있습니다.

채팅에서 컨텍스트 사용에 대해 자세히 알아보세요.
구체적이고 간단하게 유지
채팅에 작업을 요청할 때는 요청을 구체적으로 하고 큰 작업을 별도의 작은 작업으로 나누십시오. 예를 들어, TypeScript와 Pug를 사용하고 MongoDB 데이터베이스에서 데이터를 검색하는 제품 페이지가 있는 Express 앱을 만들도록 채팅에 요청하지 마십시오. 대신, 먼저 TypeScript와 Pug로 Express 앱을 만들도록 요청하십시오. 다음으로 제품 페이지를 추가하도록 요청하고, 마지막으로 데이터베이스에서 고객 데이터를 검색하도록 요청하십시오.
채팅에 특정 작업을 요청할 때는 사용할 입력, 출력, API 또는 프레임워크에 대해 구체적으로 지정하십시오. 프롬프트가 구체적일수록 결과가 더 좋습니다. 예를 들어, "데이터베이스에서 제품 데이터 읽기" 대신 "카테고리별 모든 제품 읽기, 데이터를 JSON 형식으로 반환하고 Mongoose 라이브러리 사용"과 같이 사용하십시오.
솔루션 반복
채팅에 도움을 요청할 때 첫 번째 응답에 갇혀 있지 않습니다. 반복하고 채팅에 솔루션을 개선하도록 요청할 수 있습니다. 채팅은 생성된 코드의 컨텍스트와 현재 대화 모두를 가지고 있습니다. 다음은 피보나치 숫자를 계산하는 함수를 만들기 위해 인라인 채팅을 사용하는 예시입니다.

재귀를 사용하지 않는 솔루션을 선호할 수도 있습니다.

AI에게 코딩 규칙을 따르거나 변수 이름을 개선하도록 요청할 수도 있습니다.

결과를 이미 수락했더라도 나중에 AI에게 코드를 반복하도록 요청할 수 있습니다.
Copilot 프롬프트에 대한 추가 리소스
GitHub Copilot을 생산적으로 사용하는 방법에 대해 더 자세히 알고 싶다면 다음 동영상과 블로그 게시물을 참고하세요.