시리즈를 시작하며
이 시리즈는 AI를 "매일 쓰지만 원리는 모르는" 개발자가 "원리를 알고 의도대로 부리는" 개발자로 넘어가도록 돕는 11편짜리 강의입니다. 수학 공식 없이 LLM이 어떻게 동작하는지, 토큰이 어떻게 과금되고 소비되는지, 그 원리를 코딩 실무에서 어떻게 써먹는지를 순서대로 다룹니다.
대상 독자는 ChatGPT, Claude, Copilot 같은 도구를 이미 써 본 개발자입니다. 프론트엔드든 백엔드든 상관없고, 예제 코드는 TypeScript와 Python을 섞어 씁니다.
다 읽고 나면 할 수 있는 것
- LLM이 왜 그럴듯하게 틀리는지(할루시네이션)를 구조적으로 설명할 수 있다.
- 요청 하나가 몇 토큰이고 얼마인지 대략 계산하고, 비용을 절반 이하로 줄이는 방법을 안다.
- 컨텍스트를 설계해 AI 코딩 도구의 결과 품질을 눈에 띄게 끌어올린다.
- 에이전트가 내부에서 어떻게 도는지 알고, 규칙 파일·MCP·서브에이전트를 활용한다.
- API로 직접 작은 AI 기능을 만들고, 보안과 검증까지 챙긴다.
커리큘럼
11편은 네 개의 파트로 나뉩니다. 앞 파트가 뒤 파트의 근거가 되도록 짜여 있어서, 처음 읽는다면 순서대로 읽는 것을 권합니다.
| 편 | 제목 | 핵심 질문 |
|---|---|---|
| Part 1. 원리 | ||
| 1 | AI, 머신러닝, LLM — 큰 그림 | LLM은 결국 무엇을 하는 프로그램인가? |
| 2 | 트랜스포머와 어텐션 | 모델은 문장 속 단어 관계를 어떻게 파악하나? |
| 3 | 모델은 어떻게 만들어지나 | 사전학습, 파인튜닝, RLHF, 추론 모델은 무엇이 다른가? |
| Part 2. 토큰과 비용 | ||
| 4 | 토큰의 모든 것 | 토큰은 어떻게 쪼개지고 어떻게 과금되나? |
| 5 | 컨텍스트 윈도우와 생성 파라미터 | 길게 넣으면 왜 성능이 떨어지나? 출력은 무엇으로 조절하나? |
| Part 3. 잘 쓰는 법 | ||
| 6 | 코딩을 위한 프롬프트 엔지니어링 | 같은 모델에서 더 좋은 코드를 뽑는 문장 구조는? |
| 7 | 컨텍스트 엔지니어링 | 무엇을, 얼마나, 어떤 순서로 넣어야 하나? |
| 8 | 에이전트, 도구 사용, MCP | Claude Code 같은 에이전트는 내부에서 어떻게 도나? |
| 9 | AI 코딩 실전 워크플로우 | 계획 → 구현 → 검증을 어떻게 습관으로 만드나? |
| Part 4. 실전과 그 너머 | ||
| 10 | API로 직접 만들기와 비용 최적화 | SDK로 기능을 붙이고 비용을 줄이는 구체적 방법은? |
| 11 | 한계, 보안, 그리고 다음 단계 | 무엇을 조심하고, 앞으로 무엇을 공부해야 하나? |
읽는 법
- 수치는 날짜와 함께 읽기. 가격, 모델 이름, 컨텍스트 크기는 자주 바뀝니다. 본문의 수치는 2026년 10월 기준이니, 실제로 쓰기 전에 공식 문서로 한 번 더 확인하세요.
- 실습은 꼭 손으로. 편마다 10~30분짜리 실습이 있습니다. 읽기만 하면 1주일 뒤 대부분 잊힙니다.
- 용어는 처음 나올 때 영어 병기. 토큰(token), 컨텍스트 윈도우(context window)처럼 처음 한 번만 원어를 붙였습니다.
한 줄 요약: LLM은 "지금까지의 글 다음에 올 토큰 하나"를 확률로 고르는 일을 수천 번 반복하는 프로그램이다. 이 한 문장이 이후 모든 편의 출발점이다.
AI라는 말의 층위
뉴스에서 말하는 "AI"는 사실 서로 포함 관계에 있는 네 개의 개념을 섞어 부릅니다.
- 인공지능(AI): 사람이 지능을 써서 하던 일을 기계가 하게 만드는 모든 시도. 1950년대의 규칙 기반 체스 프로그램도 AI입니다.
- 머신러닝(ML): 규칙을 사람이 직접 짜지 않고 데이터에서 규칙을 학습하게 하는 방법. 스팸 필터가 대표적입니다.
- 딥러닝(Deep Learning): 수많은 층(layer)으로 쌓은 인공신경망으로 학습하는 머신러닝. 이미지 인식, 음성 인식이 이걸로 급성장했습니다.
- 대규모 언어 모델(LLM): 딥러닝 중에서도 엄청난 양의 텍스트로 학습한, 언어를 다루는 거대한 신경망. Claude, GPT, Gemini가 여기에 속합니다.
개발자에게 익숙한 비유로 바꾸면, 전통적인 프로그래밍은 규칙 + 데이터 → 답이고, 머신러닝은 데이터 + 답 → 규칙입니다. 우리가 if 문을 쓰는 대신 모델이 수십억 개의 숫자(파라미터) 안에 규칙을 스스로 새겨 넣는 셈이죠.
LLM이 실제로 하는 일: 다음 토큰 예측
LLM의 본질은 놀랍도록 단순합니다. 입력된 텍스트를 보고, 다음에 올 토큰(token)의 확률 분포를 계산합니다. 토큰은 단어보다 조금 작은 텍스트 조각인데, 4편에서 자세히 다룹니다.
예를 들어 function add(a, b) { return 다음에 올 토큰을 물으면, 모델은 내부적으로 이런 표를 만듭니다.
| 다음 토큰 후보 | 확률(예시) |
|---|---|
a | 0.91 |
( | 0.04 |
Number | 0.02 |
| 기타 | 0.03 |
모델은 이 분포에서 토큰 하나를 고르고(샘플링), 그 토큰을 입력 끝에 붙인 뒤 다시 다음 토큰을 예측합니다. 이것을 끝 토큰이 나오거나 길이 제한에 닿을 때까지 반복합니다. 이 방식을 자기회귀(autoregressive) 생성이라고 부릅니다. 화면에 답이 한 글자씩 흘러나오는 스트리밍이 바로 이 과정을 그대로 보여 주는 것입니다.
그렇다면 왜 "생각하는 것처럼" 보일까
"다음 단어 맞히기"가 어떻게 코드를 짜고 버그를 찾을까요? 핵심은 다음 토큰을 아주 잘 맞히려면 세상을 이해해야 한다는 점입니다. 추리소설의 마지막 문장 "범인은 바로 ___"을 맞히려면 줄거리 전체를 이해해야 하듯, 수조 개의 토큰으로 이 게임을 반복한 모델은 문법, 사실, 코드 패턴, 추론 방식까지 파라미터 안에 압축하게 됩니다.
다만 이 "이해"는 사람의 이해와 같지 않습니다. 모델은 정답을 검증하지 않고, 그럴듯한 다음 토큰을 고를 뿐입니다. 그래서 다음 세 가지 특성이 생깁니다.
- 할루시네이션(hallucination): 존재하지 않는 라이브러리 함수를 자신 있게 쓴다. "이 문맥에서 그럴듯한 함수 이름"이 실제 API보다 확률이 높으면 그렇게 된다.
- 비결정성: 같은 질문에도 매번 조금씩 다른 답이 나온다. 확률 분포에서 샘플링하기 때문이다.
- 맥락 의존성: 입력에 무엇이 들어 있느냐가 출력을 거의 전부 결정한다. 모델은 입력 밖의 내 프로젝트를 모른다.
이 세 가지가 "AI 코딩 결과를 반드시 검증하라", "맥락을 충분히 주라"는 조언의 근본 이유입니다.
학습(training)과 추론(inference)
LLM의 생애는 두 단계로 나뉩니다.
- 학습: 수천 개의 GPU로 몇 주에서 몇 달 동안 파라미터 값을 조정하는 단계. 엄청나게 비싸고, 회사가 한다.
- 추론: 학습이 끝난 고정된 모델에 입력을 넣고 출력을 받는 단계. 우리가 API를 호출하거나 채팅할 때 일어나는 일이다.
여기서 중요한 사실 하나. 추론 중에 모델은 배우지 않습니다. 대화 중에 "우리 회사 코딩 규칙은 이거야"라고 알려 줘도 파라미터는 그대로입니다. 그 정보는 그 요청의 입력(컨텍스트) 안에서만 살아 있고, 다음 대화에는 남지 않습니다. ChatGPT나 Claude의 "메모리" 기능은 모델이 배운 것이 아니라, 저장해 둔 텍스트를 다음 대화의 입력에 다시 넣어 주는 기능입니다.
또 하나, 모델은 학습 데이터 수집이 끝난 시점(knowledge cutoff) 이후를 모릅니다. 최신 라이브러리 버전을 물으면 틀릴 수 있는 이유이고, 이를 보완하려고 웹 검색이나 문서 주입을 씁니다(7편).
코딩 실습 (15분)
- 같은 프롬프트 "JavaScript로 배열 중복 제거 함수를 짜줘"를 새 대화에서 세 번 보내고, 세 답이 어떻게 다른지 비교해 보세요. 비결정성을 눈으로 확인하는 실습입니다.
- 실제로 없는 함수를 물어보세요. 예: "lodash의
deepMergeUnique사용법 알려줘". 모델이 없다고 말하는지, 그럴듯하게 지어내는지 관찰하세요. - 같은 질문에 "공식 문서에 있는 함수만 써. 확실하지 않으면 모른다고 말해"를 붙여 다시 물어보세요. 입력 한 줄이 결과를 어떻게 바꾸는지 기록합니다.
정리
- AI ⊃ 머신러닝 ⊃ 딥러닝 ⊃ LLM.
- LLM은 다음 토큰의 확률을 계산하고 하나를 고르는 일을 반복한다.
- 그럴듯함과 정확함은 다르다 → 검증이 필요하다.
- 모델은 대화 중에 배우지 않는다 → 필요한 정보는 매번 입력에 넣어야 한다.
다음 편: 모델은 입력 속 수천 개의 토큰 사이 관계를 어떻게 한꺼번에 파악할까요? 2편에서 트랜스포머와 어텐션을 봅니다.