카카오 테크 예시로 배우는 코드 프롬프팅 읽어보기

바이브 코딩 바이블: AI 에이전트 시대의 새로운 코딩 패러다임 - tech.kakao.com

 

바이브 코딩 바이블: AI 에이전트 시대의 새로운 코딩 패러다임 - tech.kakao.com

1. 바이브 코딩과 AI 에이전트 안드레이 카파시(Andrej Karpathy)는...

tech.kakao.com

 

 

1. 코드 작성 (Code Generation)

 

원하는 프로그램이나 함수의 동작을 자연어로 설명하면, AI가 해당 기능을 수행하는 코드를 생성해주는 프롬프트입니다.

 

예를 들어 기능 명세나 요구사항을 프롬프트로 제공하면, LLM은 그에 맞는 언어의 코드를 작성합니다.

 

이는 새로운 기능 구현이나 보일러플레이트 코드 생성에 특히 유용하며, 개발자는 AI가 생성한 코드를 기반으로 필요한 수정을 가해 최종 완성도를 높이게 됩니다.

 

잘 작성된 코드 생성 프롬프트는 프로그래밍 언어, 사용할 라이브러리, 제약 조건 등을 구체적으로 명시하여 AI의 출력을 원하는 방향으로 이끌어야 합니다.

 

아래 예에서는 파이썬으로 간단한 함수를 생성하도록 프롬프트를 작성했습니다.

 

함수는 입력 리스트에서 각 문자열의 길이를 출력하는 기능을 가집니다.

 

프롬프트에는 언어(파이썬)와 기능 요구사항(문자열 길이 출력)을 명시했습니다.

 

파이썬으로 문자열들의 리스트를 입력받아, 각 문자열의 길이를 한 줄씩 출력하는 함수 만들어줘.

 

 

 

 

요구사항은 구체적으로 열거하세요.

 

단순히 “웹 크롤러 만들어줘”보다는 “파이썬으로 requests와 BeautifulSoup을 사용해 특정 URL의 HTML을 가져오고 <a> 태그의 링크를 추출하는 함수”처럼 상세히 적으면 더 정확한 결과를 얻습니다.

 

프롬프트에 언어, 목적, 제약조건(예: 시간복잡도, 사용 라이브러리)까지 포함하면 좋습니다.

 

생성된 코드는 바로 실행하여 테스트하고, 의도와 다르면 다시 프롬프트를 수정하거나 추가 지시를 내리는 반복 과정을 거치세요.

 

처음 한 번에 완벽한 코드를 얻기보다 AI와 인터랙티브하게 개선해간다는 생각으로 접근하면 효율적입니다.

 

2. 코드 설명 (Code Explanation)

 

이해하기 어려운 코드나 다른 사람이 작성한 코드를 AI에게 설명받는 프롬프트입니다.

 

코드 조각을 프롬프트에 포함시키고 “이 코드가 무엇을 하는지 알려줘”라고 요청하면, AI는 코드의 동작을 분석하여 자연어로 해설해줍니다.

 

이는 레거시 코드 분석, 오픈소스 코드 학습, 인터뷰 문제 풀이 이해 등에 유용합니다.

 

인간 개발자에겐 복잡해 보이는 알고리즘도 AI는 한 줄 한 줄 읽어 의미를 추론하고 전체적인 요약을 제공합니다.

 

특히 처음 접하는 프로그래밍 언어나 API를 포함한 코드라면, AI의 설명으로 큰 그림을 빠르게 파악할 수 있습니다.

 

다음은 재귀적으로 팩토리얼을 계산하는 파이썬 코드에 대해 AI에게 설명을 요청하는 예시입니다.

 

프롬프트에 코드 블럭을 그대로 포함시키고, 그 아래에 해당 코드의 역할을 물었습니다.

 

다음 파이썬 코드의 역할을 설명해줘

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

 

 

 

 

 

 

 

 

 

코드 블럭 전체를 프롬프트에 넣어야 AI가 정확한 설명을 할 수 있습니다.

 

부분만 주면 문맥이 부족해 잘못된 설명이 나올 수 있으니, 필요한 경우 코드 길이에 맞춰 프롬프트를 나누어 전달하세요.

 

설명이 너무 복잡하거나 전문적이면, 이해하기 쉬운 비유나 단계별 풀이를 요청해보세요.

 

예를 들어 “한글로 차근차근 설명해줘” 또는 “간단한 예를 들어 설명해줘”처럼 프롬프트를 조정하면 더 쉬운 설명을 얻을 수 있습니다.

 

보안이나 민감한 코드라면, 직접 실행하기 전에 AI의 설명이 맞는지 검증이 필요합니다.

 

LLM이 가끔 헷갈려 할 수 있으므로, 중요한 부분은 다시 질문하거나 다른 방법으로 이중 체크하세요.

 

3. 프로그래밍 언어 변환 (Programming Language Translation)

 

한 프로그래밍 언어로 된 코드를 다른 언어로 변환하도록 AI에 요청하는 프롬프트입니다.

 

예를 들어 Python 코드를 JavaScript로, 혹은 그 반대로 변환하거나, 오래된 언어의 코드를 최신 언어로 마이그레이션하는 데 활용할 수 있습니다.

 

AI는 양쪽 언어의 문법과 표준 라이브러리를 알고 있으므로, 동일한 기능을 하는 등가 코드를 생성해줍니다.

 

이는 코드 이식성 확보나 다중 언어 지원에 유용하며, 사람이라면 많은 시간을 들여야 할 작업을 AI가 신속히 처리해줍니다.

 

다만 자동 번역된 코드가 원 코드의 모든 뉘앙스와 최적화를 완벽히 재현하는지는 검토가 필요합니다.

 

아래 프롬프트에서는 간단한 파이썬 함수를 자바스크립트로 변환해달라고 요청합니다. 

 

greet(name) 함수는 입력된 이름을 받아 인사 문자열을 반환하는 역할로, 이를 다른 언어로 구현해보는 시나리오입니다.

 

다음 파이썬 함수를 동등한 기능의 JavaScript 코드로 바꿔줘

def greet(name):
    return f"Hello, {name}!"

 

 

 

 

언어만 바꾸는 것이 아니라 플랫폼이나 프레임워크에 맞게 수정이 필요할 수도 있습니다.

 

AI에게 “가능하면 대상 언어의 관용적인 코드로 바꿔줘” 또는 “동일한 동작을 하는 한편, 해당 언어의 표준 함수/라이브러리를 사용해줘”라고 추가 지시하면 더 자연스러운 결과를 얻습니다.

 

변환 결과는 직접 실행하여 검증하세요.

 

특히 메모리 관리나 비동기 처리처럼 언어마다 다른 부분은 AI도 실수할 수 있으므로, 간단한 테스트 케이스를 돌려보는 것이 좋습니다.

 

긴 코드베이스를 한꺼번에 번역하기보다는 모듈별로 나눠서 번역하고 결과를 적절히 조합하는 방식이 안전합니다.

 

그렇게 하면 문제가 발생한 부분을 쉽게 찾아 수정할 수 있고, AI의 번역 실수로 인한 혼란을 줄일 수 있습니다.

 

4. 디버깅 및 코드 리뷰 (Debugging & Code Review)

 

AI에게 코드의 오류를 찾고 수정하거나, 개선사항을 리뷰하도록 하는 프롬프트입니다.

 

이는 버그 해결, 코드 품질 향상, 리팩토링 제안 등에 활용됩니다.

 

개발자가 겪는 버그의 원인을 빠르게 파악하거나, 놓치기 쉬운 실수를 AI가 집어내줄 수 있습니다.

 

또한 코드 리뷰어처럼 스타일 개선, 최적화, 보안 이슈를 지적하고 수정 예시까지 제시해주기도 합니다.

 

이러한 AI 활용으로 개발자는 더 빠르게 디버깅하고, 전반적인 코드 품질을 높일 수 있습니다.

 

특히 재현이 어려운 버그나 광범위한 코드 변화에 대한 리뷰에 도움이 되며, 사람이 하기 번거로운 반복 검사 작업을 AI가 대신함으로써 시간을 절약할 수 있습니다.

 

다음은 버그가 있는 파이썬 코드의 수정 요청 예시입니다. 

 

find_max 함수가 리스트에서 최댓값을 찾아야 하지만, 의도와 달리 동작하지 않는 상황을 가정했습니다.

 

프롬프트로 코드와 함께 “버그를 찾아 고쳐줘”라고 지시합니다.

 

다음 파이썬 코드에 버그가 있어. 버그를 찾아 수정된 코드를 보여줘:

def find_max(arr):
    max = arr[0]
    for num in arr:
        if num > max:
            max = num
    # 결과를 반환하지 않음

 

 

 

 

 

 

오류 메시지가 있다면 프롬프트에 함께 포함하세요.

 

AI는 스택 트레이스나 에러 메시지를 단서로 문제를 더 정확히 파악할 수 있습니다.

 

예: “이 코드를 실행하니 IndexError가 발생하는데, 원인을 찾아 고쳐줘” 같이 맥락을 주세요.

 

AI의 수정안을 적용하기 전에 반드시 테스트 케이스를 실행해보세요.

 

AI가 논리적으로 그럴듯한 답을 내놔도 실제로 문제를 완벽히 해결하지 못했을 수 있으므로, 다양한 입력으로 검증하는 단계가 필요합니다.

 

단순 버그뿐 아니라 코드 스타일, 성능, 보안 측면도 함께 검토해달라고 요청해보세요.

 

“이 코드의 개선점을 리뷰해줘” 처럼 요구하면 AI가 종합적인 리뷰를 수행하여 더 나은 코드를 제안해줍니다.

 

다만 최종 판단은 개발자가 해야 한다는 점을 잊지 마세요.

 

 

5. 바이브 코딩 관점에서의 프롬프트 설계 모범 사례

 

1) 맥락과 목표 충분 제공 

 

프롬프트에는 필요한 맥락(context)을 최대한 담도록 합니다.

 

예를 들어 기존에 작성된 코드 조각이나 환경 정보, 사용하고자 하는 라이브러리 버전, 목표 플랫폼 등을 알려주면 AI가 그에 맞춰 답변할 확률이 높아집니다.

 

또한 달성하려는 목표를 명확히 기술하세요.

 

모호한 요구보다 "주어진 JSON 문자열을 파싱하여 특정 필드를 추출"처럼 구체적 목표를 제시하면 결과가 더 정확합니다.

 

 

2) 단계별 접근(체인 프롬프팅)

 

복잡한 문제는 한 번의 프롬프트로 모두 해결하려 하지 말고, 여러 단계로 나눠서 해결하세요.

 

이를 체인 프롬프팅(chain prompting) 또는 연쇄 프롬프트 기법이라고 합니다.

 

예를 들어 먼저 “필요한 모듈 설계”를 묻고, 다음 프롬프트에서 “각 모듈의 상세 구현”을 요청하는 식입니다.

 

또는 AI에게 “우선 해결 방안을 계획하고 차례로 실행하자”라고 해서 사고 과정을 문장으로 풀게 한 뒤, 그 계획에 따라 코드를 작성하도록 유도할 수도 있습니다.

 

한꺼번에 안 되는 경우 프롬프트를 재구성하거나 문제를 작은 단위로 쪼개어 제시하면 돌파구를 얻을 수 있으며, 이런 단계별 접근은 복잡한 프로젝트에서 특히 효과적입니다.

 

 

3) 에이전트와 도구 활용

 

최신 AI 모델과 프레임워크들은 프롬프트를 통해 툴 사용이나 자동 실행까지 수행하는 에이전트 기능을 제공합니다.

 

예를 들어 OpenAI의 플러그인을 사용하면 모델이 인터넷 검색이나 코드 실행 같은 액션을 프롬프트의 일부로 수행할 수 있고,

 

GitHub 코파일럿의 에이전트 모드나 Replit의 Ghostwriter 에이전트는 프롬프트만으로 전체 애플리케이션을 만들어 배포하는 것을 목표로 하고 있습니다.

 

가능하다면 이러한 도구 연계형 프롬프트를 활용해보세요.

 

예를 들어 "테스트를 실행하고 실패하면 출력 오류 내용을 알려줘"라고 하면, 에이전트가 코드를 실행해보고 결과를 해석한 뒤 후속 조치를 취해줄 수도 있습니다.

 

다만 현재 시점의 에이전트 기술은 완전하지 않으므로, 자동화된 결과도 사람이 모니터링하면서 조정하는 human-in-the-loop 절차가 필요합니다.

 

 

4) 프롬프트 템플릿과 예시 활용 

 

자주 쓰는 프롬프트 패턴이 있다면 템플릿으로 저장해 두세요.

 

예를 들어 “버그 찾기”나 “리팩토링 제안” 등은 일정한 형식이 효과적일 수 있으므로, 잘 된 프롬프트와 그 출력 예시를 모아서 필요할 때 참고하면 편리합니다.

 

또한 Few-shot 학습 방식으로, 프롬프트에 원하는 출력의 예시를 간단히 포함시키는 것도 유용합니다.

 

예를 들어 JSON 출력이 필요하면 프롬프트 끝에 작은 예시 JSON을 보여주어 AI가 그 형식을 따르게 하는 것이죠.

 

이런 기법들은 모델이 사용자 의도를 더 정확히 파악하도록 도와줍니다.

 

 

5) 반복적 실험과 개선

 

프롬프트 설계는 한 번에 완벽해지지 않습니다.

 

AI가 의도대로 답하지 않으면 프롬프트를 수정하고 재시도하세요.

 

때로는 같은 질문을 약간 다른 표현으로 여러 번 시도해보고 최적의 대답을 선택하는 실험적 접근도 필요합니다.

 

예를 들어 첫 응답이 부족하면, 요구사항을 다시 강조하거나 문제를 다른 각도에서 묻는 등 프롬프트를 조절해 볼 수 있습니다.

 

중요한 것은 AI를 협력자로 여기고 대화하듯이 계속 방향을 잡아나가는 것입니다.

 

이러한 iterative한 프롬프트 개선 과정 자체가 바이브 코딩의 일부이며, 개발자의 의도에 AI를 맞춰가는 훈련이 되어 장기적으로 프롬프트 실력을 향상시켜줍니다.

728x90