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 서비스 사용법 기초
-
대상 서비스: ChatGPT, Gemini 등 주요 LLM
-
회 원가입: 구글 계정을 통해 모두 접속할 수 있음
-
ChatGPT: http://chatgpt.com
-
구글 제미나이: https://gemini.google.com
-
구글 AI스튜디오 https://aistudio.google.com (무료)
효과적인 프롬프트 작성법
- 명확하고 구체적인 지시: 모호함 제거, LLM이 이해하기 쉽도록 명확한 작업 지시
- 예: (나쁨) "코드 짜줘" -> (좋음) "SQL로 ~를 검색하는 쿼리 만들어줘"
- 원하는 결과물의 형태 명시:
- 출력 형식, 코드 스타일, 특정 라이브러리 사용 여부 등 구체적 명시
- 예: "결과는 테이블 형식으로 보여줘"
- 역할 부여 (페르소나 설정): LLM에게 특정 전문가 역할 부여 (예: "너는 숙련된 SQL 전문가야")
- 예시 제공 (Few-shot prompting): 원하는 결과물과 유사한 입력과 출력 예시 한두 개 제공
- 단계별 요청: 복잡한 작업은 여러 단계로 나누어 순차적으로 요청
- 제약 조건 설정: 피해야 할 내용, 반드시 포함할 내용 등 조건 명시