정도현 - 로보코 수석 컨설턴트

서론 - 프롬프트 엔지니어링과 바이브 코딩

나는 새로운 기술을 접하거나 정보를 습득할 때 관련 업체가 제공하는 백서를 가장 먼저 읽는 편이다. 대부분의 기술 관련 백서들은 무료로 제공되는 경우가 많으며, 정보의 밀도가 높아서 시간을 아낄 수 있기 때문이다.

이번에 구글에서 프롬프트 엔지니어링에 대한 백서가 공개되었다.

Google Prompt Engineering Whitepaper

바이브 코딩에 있어서 프롬프트 엔지니어링은 매우 중요한 부분이다. 특히 업무 레벨로 이용하려고 한다면 이 백서가 훌륭한 출발지점이 될 수 있다. 60페이지 정도 밖에 되지 않으므로 가능하면 백서 원문을 읽어 볼 것을 권하지만 영어에 익숙치 않거나 시간이 없는 분들을 위해 바이브 코딩과 관련된 코드 프롬프팅을 중심으로 내용을 요약해 보았다.


코드 프롬프팅 개요

코드 프롬프팅(Code Prompting)이란 AI 언어 모델을 활용하여 코드 작성, 설명, 번역, 디버깅 등의 개발 작업을 수행하도록 프롬프트를 설계하는 방법이다. 이는 바이브 코딩의 핵심 아이디어인 “인간이 문제를 정의하면, AI가 문제 해결의 주체가 되는 개발 방식” 과 정확히 일치한다.


코드 프롬프팅 세부기법

다음과 같은 네 가지 프롬프팅 유형이 있다.

1️. 코드 작성 프롬프팅 (Prompts for writing code)

  • 특정 프로그래밍 언어로 자동으로 코드를 작성할 수 있도록 AI에게 프롬프트를 제공한다.
  • 예시:
    • Bash 스크립트로 특정 폴더의 파일 이름 변경 자동화 코드 생성
    • Python 스크립트로 파일 이름 변경 및 문자열 처리 코드 자동화

2️. 코드 설명 프롬프팅 (Prompts for explaining code)

  • 이미 작성된 코드의 의미와 동작 방식을 AI가 자연어로 설명하도록 한다.
  • 예시:
    • Bash 스크립트의 동작 과정을 명확하게 단계별로 AI가 설명

3️. 코드 번역 프롬프팅 (Prompts for translating code)

  • 한 프로그래밍 언어로 작성된 코드를 다른 프로그래밍 언어로 자동 번역한다.
  • 예시:
    • Bash 스크립트를 Python 코드로 변환하는 작업

4️. 코드 디버깅 및 코드 리뷰 프롬프팅 (Prompts for debugging and reviewing code)

  • AI를 활용해 코드의 오류를 자동으로 식별하고, 개선점을 제안받는다.
  • 예시:
    • 잘못된 Python 코드에서 발생하는 오류를 찾고, 수정하는 과정을 단계별로 설명하고, 개선된 코드 제공

코드 프롬프팅 모범 사례 (Best Practices)

코드 프롬프팅(바이브 코딩)에 특히 중요한 AI 프롬프팅 모범 사례는 다음과 같습니다.

구체적인 출력 요구사항을 제시할 것

  • 원하는 코드의 명확한 결과나 구조를 구체적으로 AI에게 설명하여 혼란을 방지한다.

긍정적 지시 사용

  • “하지 말아야 할 것” 보다는 “해야 할 것"을 중심으로 지시한다. 예를 들어, 코드 작성 시 제한사항보다 목표를 명확히 알려준다.

변수를 활용한 프롬프팅

  • 반복 사용 가능한 프롬프팅을 작성하여 변수를 통해 코드 재활용성과 유지보수성을 높인다.

프롬프팅 형식과 스타일 다양성 실험

  • 다양한 표현법, 문체, 지시 스타일을 실험하여 가장 효과적인 프롬프팅 방식을 찾는다.

프롬프팅 결과를 문서화하여 체계화

  • 다양한 프롬프팅 시도를 기록하여 성공적인 사례를 식별하고 프롬프팅 품질을 지속적으로 개선한다.

바이브 코딩과의 연관성 정리

이 문서에서 제시하는 코드 프롬프팅 기법들은 바이브 코딩의 핵심 개념과 매우 밀접하게 연결된다.

  • 문제 정의 및 지시 (Prompt 작성)인간이 해야 할 작업
  • 코드 작성, 설명, 번역, 디버깅 등 (Prompt 결과)AI가 수행할 작업

이러한 방식을 활용하면 개발자는 반복적인 작업과 오류 해결에 드는 시간을 줄이고, 아이디어 구상 및 문제 정의 같은 창의적 작업에 집중할 수 있게 된다.

즉, 바이브 코딩의 핵심은 코드 프롬프팅 기법을 잘 활용하여 AI가 보다 정확하고 효율적으로 코드를 생성하고 관리할 수 있도록 돕는 것 이다.

프롬프팅 모범 사례

최고의 프롬프팅 성능을 위해 다음을 권장한다.

  • 예시를 제공하여 모델의 정확성을 높인다.
  • 단순하고 명확한 설계로 프롬프트를 구성한다.
  • 출력 요구사항을 구체적으로 명시한다.
  • 제약 조건보다 긍정적인 지시를 사용하여 모델을 혼란시키지 않는다.
  • 최대 토큰 길이를 제어하여 효율성을 높인다.
  • 변수를 사용하여 프롬프트의 재사용성을 높인다.
  • 다양한 입력 형식과 문체를 실험하여 최적의 프롬프팅 스타일을 찾는다.
  • 분류 작업 시 퓨샷 프롬프트의 클래스를 혼합하여 과적합을 방지한다.
  • 모델 업데이트에 따라 프롬프트를 지속적으로 조정한다.
  • JSON 형식 사용 및 스키마를 통한 데이터 구조화를 활용한다.
  • 다른 엔지니어들과 공동 실험하여 효율을 높인다.
  • 다양한 시도한 프롬프트를 문서화하여 지식을 체계화한다.

맺음말

프롬프트 엔지니어링은 LLM의 성능을 극대화하기 위해 반복적이고 체계적인 접근이 필요한 분야이다. 적절한 설정과 다양한 기법을 활용하면 LLM의 잠재력을 최대한 이끌어낼 수 있다. 본 포스트는 항상 일정에 쫒기는 개발자들을 위해 적은 시간과 노력으로 프롬프팅 기법과 모범 사례를 익혀 효율적으로 원하는 결과를 얻을 수 있도록 돕기위해 제작되었다. 하지만 백서 전체에 다양한 인사이트가 가득하므로 가능하면 반나절 정도만 시간을 내여 원문을 읽어 보는것을 추천한다.