Skip to main content

LLM을 활용한 바이브 코딩

LLM(Large Language Model)이란?

  • 거대 언어 모델 (LLM): 방대한 텍스트 데이터로 학습, 인간과 유사한 텍스트 생성 및 이해 능력 보유 모델
  • 기본 개념: 입력된 텍스트(프롬프트)를 바탕으로 다음 단어를 예측하는 방식으로 작동
  • 작동 원리 간략 소개: 트랜스포머(Transformer) 아키텍처 기반, 어텐션(Attention) 메커니즘 활용
  • 예시: ChatGPT (OpenAI), Gemini (Google) 등
  • 발전 과정: 규칙 기반 -> 통계 기반 -> 뉴럴 네트워크 -> 트랜스포머 기반 LLM 순으로 발전
  • 현재 AI 기술 수준: 자연어 이해, 생성, 번역, 요약 등 다양한 영역에서 높은 성능 시현
  • 코딩 분야 활용 가능성:
    • 코드 생성 및 자동 완성
    • 코드 설명 및 문서화
    • 디버깅 보조
    • 프로토타이핑 가속화

ChatGPT의 학습 과정

언어 모형

  • 인터넷 등에서 대량의 텍스트를 수집
  • 문장을 토큰으로 분할 → 토큰 번호로 바꿈
  • 번호들의 열을 입력으로 받아 다음에 나올 토큰의 번호를 예측하는 함수의 파라미터를 추정
    • 파라미터: 함수의 구체적 모양을 결정짓는 값
    • 예: 직선의 방정식 y = ax + b에서 a가 달라지면 직선의 기울기가 달라짐
  • 문장을 생성할 때는 예측된 확률에 따라 토큰을 무작위 추출
  • 의도대로 동작하지 않는 문제가 있음(예: 블로그 글 써줘 → 내일 할게요)

미세 조정

  • 주어진 프롬프트에 대해 사람이 모범답안을 작성
  • 프롬프트와 모범답안으로 언어 모형의 파라미터를 미세 조정
  • 좀 더 의도대로 행동하기는 하지만 완벽하지는 않음

보상 모형

  • 미세조정된 GPT로 동일한 프롬프트에 답변을 여러 번 생성
  • 확률적 디코딩을 하므로 매번 다른 답변이 생성됨
  • 사람이 답변들에 대해 순위를 매김
  • 높은 순위를 받은 답변에 높은 점수를 주는 "보상 모형" AI를 학습

강화 학습

  • 미세조정된 GPT로 동일한 프롬프트에 답변을 생성
  • 보상 모형으로 답변에 점수를 매김
  • 보상 모형의 점수가 높아지는 방향으로 GPT를 강화학습
  • 강화학습: 알파고 등이 사용하는 방식
    • 언어 모형은 정확한 확률을 예측하도록 학습되지만 강화학습은 보상을 최대화하도록 학습
  • 강화학습의 경우 사용자의 의도대로 동작하는 장점은 있으나 사용자에게 '아부'하는 단점이 있음

"바이브 코딩(Vibe Coding)"이란?

  • 정의: LLM(거대 언어 모델)을 코딩 보조 도구로 적극 활용하는 개발 방식
  • 핵심 개념: 개발자의 아이디어나 "느낌(Vibe)"을 LLM에게 전달, 빠르게 프로토타입 코드 생성
  • 목표: 초기 아이디어 구현 속도 향상, 반복적이고 단순한 코드 작성 부담 감소
  • 특징: LLM과의 대화, 프롬프트 엔지니어링 중요

LLM 서비스 사용법 기초

효과적인 프롬프트 작성법

  • 명확하고 구체적인 지시: 모호함 제거, LLM이 이해하기 쉽도록 명확한 작업 지시
    • 예: (나쁨) "코드 짜줘" -> (좋음) "SQL로 ~를 검색하는 쿼리 만들어줘"
  • 원하는 결과물의 형태 명시:
    • 출력 형식, 코드 스타일, 특정 라이브러리 사용 여부 등 구체적 명시
    • 예: "결과는 테이블 형식으로 보여줘"
  • 역할 부여 (페르소나 설정): LLM에게 특정 전문가 역할 부여 (예: "너는 숙련된 SQL 전문가야")
  • 예시 제공 (Few-shot prompting): 원하는 결과물과 유사한 입력과 출력 예시 한두 개 제공
  • 단계별 요청: 복잡한 작업은 여러 단계로 나누어 순차적으로 요청
  • 제약 조건 설정: 피해야 할 내용, 반드시 포함할 내용 등 조건 명시

퀴즈