OkayStudy
KO English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

알림을 켜는 방법

이 브라우저 또는 주소에서는 알림을 사용할 수 없습니다. 지원되는 브라우저로 보안 연결된 SONUB 사이트에 접속해 주세요.

알림이 차단되어 있으면 브라우저 설정에서 허용해 주세요.

  1. 주소 표시줄 옆의 사이트 설정 또는 브라우저의 사이트 설정을 열고, 이 사이트의 알림을 허용으로 바꾸세요.
  2. 기기 설정에서 브라우저 알림을 허용하고 방해 금지 또는 집중 모드를 확인하세요.
  3. SONUB으로 돌아와 페이지를 새로고침한 뒤 벨을 눌러 알림을 켜세요.

iPhone 또는 iPad에서는 SONUB을 홈 화면에 추가하고 거기에서 연 뒤 알림을 허용하세요.

교재

AI 과정

도구를 잘 쓰는 법부터 을 만들어 내 휴대폰에서 돌리는 법까지 네 단계 챕터로 배웁니다. 목차에서 챕터를 골라 시작하세요.

칸이 세 개인 열린 공구 상자에 말풍선, 작은 로봇 팔이 달린 노트북, 서류를 나르는 로봇과 점검표가 들어 있다. 상자는 터미널 창·가지 뻗은 나무·다정한 뱀 모양 블록 세 개 위에 놓여 있고, 옆의 작은 금고에 열쇠와 자물쇠가 들어 있다.
챕터 1 · 초급 · 시작하기

시작하기 전에: 나의 AI 도구 상자

목표

이 강좌에서 쓰는 도구가 무엇이고 각각 어디에 쓰는지, 어떤 계정이 필요한지, 키와 개인 정보를 어떻게 안전하게 지키는지 알아요.

이 강좌는 AI 를 이해하는 것에서 시작해 AI 도구를 쓰고, 마지막에는 을 직접 만들어 봐요. 도구는 세 종류를 만나게 돼요.

  • 채팅 도우미 — 처럼 대화로 답해요.
  • — 와 처럼 의 파일을 읽고 고쳐요.
  • 도구 — 처럼 여러 단계의 일을 대신 해 줘요.

, , 은 이 모든 도구의 바탕이라서 함께 배워요. 어떤 챕터는 무료 계정이, 어떤 챕터는 유료 요금제가 필요해요. 어느 쪽인지는 수업 진행 안내에 적혀 있고, 언제든 SONUB 의 실습으로 대신 따라올 수 있어요.

쉽게 이해하기

이렇게 생각해 보세요
이 강좌를 공구 상자 채우기라고 생각해 보세요. 채팅 도우미는 묻고 글 쓰는 공구, 코딩 에이전트는 내 컴퓨터의 파일을 고치는 공구, 에이전트 도구는 여러 단계의 일을 해내는 공구예요. 쉘·Git·Python은 공구들이 올라선 작업대예요. 그리고 모든 공구 상자에는 작은 금고가 필요해요. 비밀번호와 키는 금고에 두고 채팅에 절대 붙여 넣지 않아요.
예시

동아리 홈페이지를 만들고 싶다고 해 봐요. 채팅 도우미에게 아이디어와 글을 묻고, 코딩 에이전트에게 프로젝트 폴더에서 페이지를 만들게 하고, 잘 되는 마다 Git으로 저장한 뒤 공개해요. 뒤의 챕터에서 이 단계를 공구 하나씩 다시 배워요.

자주 하는 실수
“이번 한 번만” 하며 나 비밀번호를 채팅에 붙여 넣는 것. 키는 환경 변수나 하지 않는 에 두고, 새어 나간 키는 바로 바꿔야 해요.
칸이 세 개인 열린 공구 상자에 말풍선, 작은 로봇 팔이 달린 노트북, 서류를 나르는 로봇과 점검표가 들어 있다. 상자는 터미널 창·가지 뻗은 나무·다정한 뱀 모양 블록 세 개 위에 놓여 있고, 옆의 작은 금고에 열쇠와 자물쇠가 들어 있다.
세 종류의 AI 도구가 세 가지 기본(쉘·Git·Python) 위에 서 있어요. 키와 비밀번호는 금고에 — 채팅에는 절대 넣지 않아요.
조금 더 알아보기

어떤 도구보다 중요한 습관이 두 가지 있어요. 첫째, 결과를 확인하세요. AI 의 답, 그림, 변경은 내가 읽어 보고, 시험해 보고, 출처와 비교하기 전까지는 초안일 뿐이에요. 둘째, 비밀을 지키세요. 비밀번호, API 키, 다른 사람의 개인 정보를 채팅이나 , 남과 나누는 파일에 절대 붙여 넣지 마세요. API 키(이 AI 서비스를 쓸 때 내미는 비밀 열쇠)는 환경 변수나 .env 파일(내 컴퓨터에만 두는 )에 두고, Git 에 저장(커밋)하지 마세요. Git 은 13장에서 배워요.

내 말로 설명해 보기

이 강좌에 나오는 AI 도구 세 종류를 내 말로 설명하고, 각각 예시를 하나씩 들어 보세요.

설명과 비교하기

채팅 도우미는 대화로 답해요(ChatGPT). 코딩 에이전트는 프로젝트에서 파일을 읽고 고치고 명령을 실행해요(Codex, 클로드 코드). 에이전트 도구는 여러 파일과 앱에 걸친 여러 단계의 일을 해내요(Claude Cowork). 세 가지 모두 내가 확인해야 하는 초안을 만들어요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

강좌 지도 소개하기(5분) → 도구 종류마다 예시 하나씩 보여 주기(10분) → 학생이 계정과 강좌 폴더 준비하기(15분) → 안전 규칙과 질문(10분). 수업 시간에 맞춰 각 부분을 늘리거나 줄이세요.

화면으로 보여 주기

  1. 이 강좌를 열고 챕터 목록을 함께 살펴보세요. 시작하기 → AI 는 어떻게 작동할까 → AI 도구 쓰기 → 개발 기초 → 만들고 공개하기 → AI 에이전트 → 계속 일하는 에이전트 → 나만의 만들기 → 내 을 어디서나 실행하기 → 마무리 프로젝트 순서예요.
  2. 채팅 도우미에게 짧은 질문을 하나 한 다음, 코딩 에이전트가 파일의 한 줄을 고치는 모습을 보여 주세요. 학생들이 "말하기"와 "행동하기"의 차이를 볼 수 있어요.
  3. API 키를 어디에 두어야 하는지(환경 변수나 .env 파일), 그리고 한 줄이 그 키를 Git 에 들어가지 않게 막는 방법을 보여 주세요.

학생 활동

  1. 이미 쓸 수 있는 도구(ChatGPT, Codex, , )와 아직 가입해야 하는 도구를 적어 보세요.
  2. 내 컴퓨터에 ai-course 라는 빈 폴더를 만드세요. 뒤의 챕터에서 계속 써요.

완료 기준

AI 도구 세 종류를 예시와 함께 하나씩 말하고, 두 가지 안전 습관을 말할 수 있으면 돼요.

학생이 막힐 때

  • 유료 요금제가 없을 때: 시연을 보며 따라가고 SONUB 의 브라우저 실습을 쓰세요. 개념 챕터는 모두 계정 없이 할 수 있어요.
  • 학교나 회사 컴퓨터에서 설치가 막혀 있을 때: 도구의 웹 버전과 SONUB 의 쉘, Python 실습을 쓰세요.

함께 생각할 질문

  • 채팅 도우미에게 묻는 것과 코딩 에이전트가 내 파일을 고치게 하는 것은 어떻게 다를까요?
  • API 키는 어디에 두어야 하고, 어디에는 절대 나오면 안 될까요?

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 2 · 초급 · AI 는 어떻게 작동할까

AI 용어: 매일 듣게 될 낱말 10개

목표

, , , , , , , , , 같은 일상의 용어를 각각 쉬운 한 문장으로 설명할 수 있어요.

모델은 에서 패턴을 배운 이에요. 대규모 ()은 엄청난 양의 글에서 패턴을 배워서 다음에 올 글 조각을 예측해요. 이 챕터에서 쓰는 낱말은 이래요.

  • 프롬프트 — 내가 입력하는 글
  • 토큰 — 모델이 글을 읽는 단위, 단어의 작은 조각
  • 컨텍스트 창 — 모델이 한 번에 볼 수 있는 토큰의 양. 지금까지 나눈 대화도 여기에 들어가요.
  • 파라미터(라고도 해요) — 모델 안에 있는 숫자들. 학습이 이 숫자들을 조정해요.
  • 학습 — 오래 걸리고 비용이 많이 드는 배우는 단계
  • 추론 — 다 만든 모델을 써서 나에게 답하는 것

쉽게 이해하기

이렇게 생각해 보세요
식당을 떠올려 보세요. 모델은 요리사, 프롬프트는 주문서, 토큰은 재료를 잘게 썬 조각이에요. 컨텍스트 창은 요리사의 작업대 크기, 파라미터는 요리사가 몸에 익힌 솜씨예요. 학습은 요리 학교에 다니는 시간, 추론은 지금 내 음식을 만드는 시간이에요. 환각은 보기엔 그럴듯하지만 주문과 다른 요리, API는 배달 창구, 에이전트는 장보기까지 직접 다녀오는 요리사예요.
예시

“내일 서울 날씨 알려 줘”라고 입력하면 모델은 이 글을 토큰으로 읽어요. 검색 도구가 없는 은 내일 날씨를 알 수 없어서 그럴듯한 예보를 지어낼 수 있어요(환각). 검색 도구를 쓰는 에이전트는 먼저 날씨 사이트를 찾아본 뒤 답해요.

자주 하는 실수
“파라미터가 많을수록 언제나 더 정확하다.” 크기는 모델 능력의 한 부분일 뿐이에요. 와 확인 과정이 결과의 질을 함께 결정해요.
조금 더 알아보기

더 알아 둘 낱말이에요.

  • 환각 — 자신 있게 말하지만 틀렸거나 지어낸 답. 그래서 늘 확인해야 해요.
  • API — 내 프로그램이 프롬프트를 보내고 답을 돌려받게 해 주는 문. 보통 비밀 가 필요해요.
  • 챗봇과 에이전트 — 챗봇은 답만 하지만, 에이전트는 행동도 해요. 목표를 향해 한 단계씩 파일을 읽고, 명령을 실행하고, 도구를 써요.
  • 과 — 모델이나 가중치를 공개한 모델(오픈 웨이트)은 내려받아 에서 실행할 수 있어요. 닫힌 모델은 그 회사의 앱이나 API 로만 써요.

내 말로 설명해 보기

친구에게 컨텍스트 창이 무엇이고 왜 중요한지 설명해 보세요.

설명과 비교하기

컨텍스트 창은 모델이 한 번에 볼 수 있는 글의 양(토큰 수)이에요. 내 프롬프트, 파일, 지금까지의 대화가 여기에 들어가요. 이 범위 밖으로 밀려난 것은 모델이 더는 볼 수 없어서, 긴 대화에서는 앞부분의 내용을 놓칠 수 있어요. 중요한 사실을 프롬프트에 다시 넣으면 해결돼요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

학생들이 들어 본 AI 용어 묻기(5분) → 짝지어 설명하기: 프롬프트/토큰, 학습/추론, 챗봇/에이전트(15분) → 낱말 짝 맞추기 게임(10분) → 스스로 확인하기(10분).

화면으로 보여 주기

  1. 페이지나 SONUB 의 토큰 챕터에 문장 하나를 입력하고 토큰 수를 함께 세어 보세요.
  2. 챗봇에게 알 수 없는 것(지어낸 사람)을 물어서 환각을 보여 준 다음, 그것을 확인하는 방법을 보여 주세요.
  3. "이 파일 이름을 어떻게 바꾸지?"에 답만 하는 챗봇과, 실제로 이름을 바꿔 버리는 에이전트를 비교해 보세요.

학생 활동

  1. 나만의 낱말 카드를 만드세요. 낱말 열 개마다 한 문장짜리 뜻과 예를 하나씩 적어요.
  2. 아주 지역적이거나 아주 새로운 것을 챗봇에게 물어서 환각을 하나 찾고, 어떻게 확인했는지 적어 보세요.

완료 기준

낱말 열 개를 내 말로 설명하고, 학습과 추론의 차이, 챗봇과 에이전트의 차이를 말할 수 있으면 돼요.

학생이 막힐 때

  • 학습과 추론을 헷갈릴 때: 학습은 시험공부, 추론은 시험 문제 풀기라고 비유해 주세요.
  • 토큰이 헷갈릴 때: 길거나 드문 단어는 토큰 여러 개가 되고, 흔한 단어는 토큰 하나라는 것을 보여 주세요.

함께 생각할 질문

  • 아주 긴 대화에서 모델은 왜 처음에 한 말을 "잊어버릴" 수 있을까요?
  • 챗봇에게 묻는 것과 에이전트에게 일을 맡기는 것은 어떻게 다를까요?
출처와 더 읽을거리
챕터 3 · 초급 · AI 는 어떻게 작동할까

AI·머신러닝·언어모델

목표

라는 분야와 특정 의 종류를 구분해요.

인공지능은 예측·인식·계획·생성 같은 일을 하는 시스템을 만드는 분야예요. 사람이 적은 규칙을 쓰는 시스템도 있어요. 은 에서 패턴을 맞추고, 은 여러 층의 을 이용해요.

쉽게 이해하기

이렇게 생각해 보세요
‘탈것’을 떠올려 보세요. 탈것은 가장 큰 묶음(인공지능)이에요. 자동차는 탈것의 한 종류(머신러닝), 전기차는 자동차의 한 종류(딥러닝), 그리고 어느 한 전기차 모델이 과 비슷해요. 이름이 뒤로 갈수록 범위가 좁아져요.
예시

사람이 쓴 규칙으로 판단하는 (예: ‘무료’·‘당첨’이 들어간 메일을 스팸으로 거르는 규칙)은 하지 않는 인공지능이에요. 예시 메일로 배우는 스팸 거르기는 머신러닝이에요. 사진 속 고양이 찾기는 보통 딥러닝이고, 질문에 답하는 은 LLM 위에 만들어져요.

자주 하는 실수
“인공지능 = .” ChatGPT는 로 만든 제품 하나예요. , , 길 찾기도 모두 인공지능이에요.
네 개의 원이 겹겹이 들어 있다. 가장 바깥 원에는 로봇 아이콘, 그다음 원에는 점이 찍힌 차트, 그다음 원에는 여러 층의 신경망, 가장 안쪽 원에는 말풍선 두 개가 있다.
인공지능이 가장 큰 원이에요. 머신러닝·딥러닝·언어모델이 차례로 앞의 원 안에 들어 있어요.
조금 더 알아보기

대규모 언어모델(LLM)은 AI의 한 종류예요. 글을 만드는 많은 LLM은 주어진 에서 다음 을 예측해요. ··은 다른 방식으로 작동할 수 있어요. 유창한 말이 생명체라는 증거나 내용이 참이라는 증거는 아니에요.

내 말로 설명해 보기

모든 AI가 다음 단어를 만들까요? 반대 예를 들어보세요.

설명과 비교하기

아니요. 스팸 거르기는 ‘스팸/정상’을 고르고, 규칙 기반 프로그램은 정해진 조건을 따를 뿐 다음 단어를 만들지 않아요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

학생들이 생각하는 AI 가 무엇인지 묻기(5분) → 예시를 규칙, 머신러닝, 언어 모델로 나누기(10분) → 챕터를 읽고 이야기 나누기(15분) → 스스로 확인하기(10분).

화면으로 보여 주기

  1. 세 가지 예를 나란히 보여 주세요. 규칙으로 만든 스팸 필터, 얼굴을 알아보도록 학습한 사진 앱, 글을 만들어 내는 채팅 도우미예요.
  2. 원 세 개를 겹쳐 그려 보세요. 인공지능 안에 머신러닝, 그 안에 딥러닝이 있고, 언어 모델은 가장 안쪽 원에 들어가요.

학생 활동

  1. 내가 쓰는 앱 다섯 개를 적고, 각각 규칙인지 머신러닝인지 언어 모델인지 이유와 함께 표시해 보세요.

완료 기준

글을 만들어 내지 않는 AI 시스템을 올바른 반례로 들 수 있으면 돼요.

학생이 막힐 때

  • 모든 AI 가 ChatGPT 라고 생각할 때: 규칙으로 만든 스팸 필터와 추천 시스템을 다른 종류의 AI 로 보여 주세요.

함께 생각할 질문

  • "20 °C 아래로 내려가면 난방을 켠다"는 규칙을 따르는 조절기는 인공지능일까요? 왜 그렇게 생각하나요?
출처와 더 읽을거리
챕터 4 · 초급 · AI 는 어떻게 작동할까

프롬프트를 쓰고 검증하기

목표

할 일·필요한 ·조건·검증 방법을 정해요.

는 의 출력을 이끄는 입력이에요. ‘분수를 설명해줘’와 ‘초보자에게 피자로 2분의 1을 설명한 다음, 정답을 말하지 말고 문제 하나를 내줘’를 비교해 보세요. 두 번째는 대상·예시· 활동을 정했어요.

쉽게 이해하기

이렇게 생각해 보세요
프롬프트는 택시 기사에게 목적지를 말하는 것과 같아요. “시내로 가 주세요”라고 하면 근처 어딘가에 내려 주지만, “시청역 3번 출구 앞, 10시까지요”라고 하면 정확히 원하는 곳에 데려다줘요. 목적지가 분명할수록 기사가 짐작할 일이 줄어요.
예시
  • 모호한 요청: “분수에 대해 알려 줘.”
  • 분명한 요청: “아홉 살 아이에게 피자로 2분의 1을 세 문장으로 설명하고, 정답 없이 연습 문제 하나를 내 줘.”

두 번째 요청은 읽을 사람·예시·길이·활동을 정해 줘요.

자주 하는 실수
“‘너는 전문가야’라고 쓰면 전문가 수준의 답이 나온다.” 역할은 말투를 바꿀 수 있지만 지식을 더해 주지는 않아요. 사실은 여전히 확인해야 해요.
조금 더 알아보기

역할을 주면 말투를 유도할 수 있지만 전문성이나 가 보장되지는 않아요. 필요하면 출처를 요청하고 실제로 주장을 뒷받침하는지 확인하세요. 같은 예제로 두 프롬프트를 비교해 보세요. 필요한 정보만 제공하고, 질문을 잘 써도 모델의 모든 한계가 없어지지는 않는다는 점을 기억해요.

내 말로 설명해 보기

‘너는 전문가야’라고 쓰면 답을 믿어도 될까요?

설명과 비교하기

아니요. 표현 방식은 유도하지만, 근거 확인과 는 여전히 필요해요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

막연한 요청과 정확한 요청 비교하기(10분) → 프롬프트 하나를 함께 고치기(10분) → 학생이 프롬프트를 쓰고 시험해 보기(20분) → 답을 확인하는 방법 이야기하기(10분).

화면으로 보여 주기

  1. "분수를 설명해 줘"라고 물은 다음 챕터에 나온 정확한 요청으로 다시 물어보고, 두 답의 대상, 예시, 활동을 비교해 보세요.
  2. 프롬프트에 "너는 전문가야"를 더해도 답에 여전히 틀린 내용이 있을 수 있다는 것을 보여 주세요.

학생 활동

  1. 지금 배우고 있는 주제로 프롬프트를 써 보세요. 대상, 예시 하나, 답을 확인하는 방법을 넣어야 해요.

완료 기준

학생의 프롬프트에 할 일, 문맥, 조건, 확인 방법이 모두 들어 있으면 돼요.

학생이 막힐 때

  • 답이 여전히 막연할 때: 원하는 결과의 예시와 길이 제한을 더해 보세요.

함께 생각할 질문

  • 프롬프트의 어느 부분이 답을 가장 크게 바꿨나요?
출처와 더 읽을거리
챕터 5 · 초급 · AI 는 어떻게 작동할까

프롬프트 엔지니어링: 잘 통하는 프롬프트의 여섯 부분

목표

역할, 목표, , 예시, 조건, 이 들어간 를 쓰고, 처음부터 다시 쓰는 대신 한 단계씩 고쳐 나갈 수 있어요.

은 이 내가 필요한 결과를 내도록 지시를 쓰는 거예요. 좋은 프롬프트에는 보통 여섯 부분이 있어요.

  • 역할 — 모델이 누구처럼 행동할지
  • 목표 — 내가 원하는 것
  • 맥락 — 모델에게 필요한 사실, 파일, 읽을 사람
  • 예시 — 좋은 답의 샘플 한두 개
  • 조건 — 길이, 수준, 피해야 할 것
  • 출력 형식 — 목록, 표, , 파일

이것들을 많이 줄수록 모델이 짐작해야 할 것이 줄어들어요.

쉽게 이해하기

이렇게 생각해 보세요
좋은 프롬프트는 요리사에게 건네는 레시피 카드처럼 작동해요. 누가 요리하는지(역할), 어떤 음식을 원하는지(목표), 냉장고에 무엇이 있는지(맥락), 완성된 음식 사진(예시), 피해야 할 것(조건), 어떻게 담아낼지(출력 형식)를 적어요. 여섯 가지가 다 있으면 요리사가 짐작할 일이 거의 없어요.
예시
  • 역할: “너는 초등학교 과학 선생님이야.”
  • 목표: “물의 순환을 설명해 줘.”
  • 맥락: “읽을 사람은 여덟 살 아이들이야.”
  • 예시: “이런 식으로: ‘햇볕이 바닷물을 데우면…’”
  • 조건: “다섯 문장, 어려운 낱말 없이.”
  • 출력 형식: “번호를 붙인 목록으로.”
자주 하는 실수
처음부터 완벽한 프롬프트를 한 번에 쓰려는 것. 먼저 한 번 써 보고, 답을 읽은 뒤 빠진 것만 더해 가요.
가면·과녁·폴더·별 모양 견본·멈춤 표시가 달린 자·표 아이콘이 그려진 퍼즐 조각 여섯 개가 레시피 카드에 끼워진다. 로봇 요리사가 완성된 카드를 받아 깔끔한 접시를 내놓고, 옆에는 물음표만 있는 구겨진 쪽지가 놓여 있다.
역할·목표·맥락·예시·조건·출력 형식이 레시피 카드처럼 맞물려요. 모호한 쪽지만 주면 요리사는 짐작할 수밖에 없어요.
조금 더 알아보기

프롬프트를 초안처럼 다루세요. 답을 읽고, 빠졌거나 틀린 것을 찾아서, 바로 그것을 프롬프트에 더하세요. "더 쉬운 말로 써 줘", "선택지 세 개를 줘", "출처를 밝혀 줘"처럼요.

  • 어려운 일은 모델에게 먼저 계획을 세우고 그다음에 답하라고 하세요.
  • 또는 일을 더 작은 프롬프트 여러 개로 나누세요.
  • 라면 오래 쓰는 부분(규칙, 명령, 스타일)을 CLAUDE.md 나 AGENTS.md 같은 프로젝트 파일에 넣어, 매번 되풀이하지 않게 하세요.

내 말로 설명해 보기

"홈페이지 만들어 줘"를 여섯 부분이 들어간 프롬프트로 다시 써 보세요.

설명과 비교하기

예를 들면 이래요. "너는 웹 디자이너야(역할). 우리 빵집의 한 페이지짜리 홈페이지를 만들어 줘(목표). 서울에서 빵과 케이크를 팔고, 손님은 가족들이야(맥락). 이 샘플처럼 꾸며 줘: …(예시). 과 만 쓰고, 모바일을 먼저 생각하고, 구역은 네 개 이하로 해 줘(조건). 파일 하나로 줘(형식)." 여섯 부분이 모두 있는 프롬프트라면 다 맞아요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

약한 프롬프트와 그 답 보여 주기(5분) → 여섯 부분으로 다시 만들기(15분) → 학생이 프롬프트를 세 번에 걸쳐 고치기(15분) → 결과 비교하기(5분).

화면으로 보여 주기

  1. "기후에 대해 써 줘"라고 물은 다음, 같은 요청에 역할, 읽을 사람, 길이, 형식을 더해 다시 물어보고 두 답을 비교해 보세요.
  2. 프롬프트에 예시 답 하나를 더하고, 결과의 문체가 그 예시를 따라가는 것을 보여 주세요.
  3. 같은 프롬프트로 결과를 표로, 그다음에는 JSON 으로 달라고 해 보세요.

학생 활동

  1. 내가 실제로 할 일(공부 계획, 요약, 이메일)에 대해 여섯 부분이 모두 들어간 프롬프트를 써 보세요.
  2. 두 번 고쳐 보세요. 매번 답에서 틀린 점을 바탕으로 고칠 점 하나를 더하고, 세 가지 을 모두 남겨 두세요.

완료 기준

마지막 프롬프트에 여섯 부분이 있고, 각 문제를 해결한 변경을 짚어 낼 수 있으면 돼요.

학생이 막힐 때

  • 답이 너무 길거나 너무 일반적일 때: 읽을 사람, 길이 제한, 형식을 더하세요.
  • 모델이 규칙을 무시할 때: 규칙을 끝으로 옮기고, 한 번만 분명하게 말하고, 답하기 전에 그 규칙을 확인하라고 하세요.

함께 생각할 질문

  • 답의 문체가 틀렸을 때는 여섯 부분 중 어느 것이 가장 도움이 될까요?
  • 오래 쓰는 규칙은 왜 매번 프롬프트에 넣지 않고 CLAUDE.md 나 AGENTS.md 에 넣을까요?
출처와 더 읽을거리
챕터 6 · 초급 · AI 는 어떻게 작동할까

텍스트·토큰·ID

목표

글 조각()과, 그 조각에 붙인 번호()를 구분해요.

는 텍스트를 토큰이라는 조각으로 나누고, 의 ID에 대응시켜요. 토큰은 단어·단어 일부·글자·일 수 있으며 공백과 문장부호도 중요해요. 같은 글도 토크나이저에 따라 토큰 수가 달라져요.

쉽게 이해하기

이렇게 생각해 보세요
토크나이저는 긴 종이띠 같은 글을 크기가 제각각인 조각으로 자르고, 조각마다 번호표를 거는 기계와 같아요. 은 글자를 보지 않고 번호표가 줄지어 선 것만 봐요.
예시

영어 낱말 “unbelievable”은 “un”, “believ”, “able”처럼 잘릴 수 있어요. 띄어쓰기나 마침표가 따로 토큰 하나가 되기도 해요. 같은 문장도 토크나이저가 다르면 토큰 수가 달라지고, 같은 뜻이라도 한국어는 영어보다 토큰이 더 많이 드는 경우가 많아요.

자주 하는 실수
“토큰 수 = 낱말 수(또는 글자 수).” 둘 다 아니에요. 그래서 같은 내용도 언어에 따라 비용이 달라지거나 이 더 빨리 찰 수 있어요.
종이띠가 자르는 기계에 들어가 길이가 서로 다른 조각으로 나오고, 조각마다 색깔 있는 동그란 번호표가 달려 한 줄로 선다.
글은 크기가 다른 토큰으로 잘리고, 토큰마다 ID 번호가 붙어요. 모델은 이 번호로 일해요.
조금 더 알아보기

실습실은 실제 토크나이저가 아닌 간단한 단어 분할기를 써요. ID는 이름표이므로 ID 8이 ID 4보다 뜻이 두 배인 것은 아니에요. 컨텍스트 창에는 사용할 수 있는 토큰 수의 한계가 있어 앱이 자료를 선택·요약·제외할 수 있어요.

내 말로 설명해 보기

두 토큰의 ID가 연속된 숫자이면 뜻도 비슷할까요?

설명과 비교하기

아니요. ID는 어휘를 식별할 뿐, 숫자의 거리가 의미의 거리는 아니에요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

토큰이 무엇인지 알기(10분) → 같은 문장의 토큰을 여러 방법으로 세기(10분) → 학생이 자기 문장을 토큰으로 나누기(20분) → 스스로 확인하기(10분).

화면으로 보여 주기

  1. "unbelievable!"을 글자 단위, 단어 단위, 그리고 un + believ + able + ! 같은 단어 조각으로 나누고 각각 몇 개인지 세어 보세요.
  2. ID 는 이름표일 뿐이라는 것을 보여 주세요. ID 가 바로 옆 번호인 두 토큰도 뜻은 완전히 다를 수 있어요.

학생 활동

  1. 문장 하나를 써서 글자 단위와 단어 단위로 나누고, 조각마다 지어낸 ID 를 옆에 적어 보세요.

완료 기준

같은 글이라도 토큰 수가 달라질 수 있는 이유를 설명할 수 있으면 돼요.

학생이 막힐 때

  • 토큰과 단어를 헷갈릴 때: 긴 단어 하나가 토큰 여러 개로 나뉘고, 문장 부호는 따로 토큰이 되기도 하며, 띄어쓰기는 보통 뒤 낱말에 붙어 한 토큰이 되는 것을 보여 주세요.

함께 생각할 질문

  • 서비스는 왜 사용량을 단어가 아니라 토큰으로 셀 때가 많을까요?
출처와 더 읽을거리
챕터 7 · 초급 · AI 는 어떻게 작동할까

벡터와 임베딩

목표

··된 을 구분해요.

ID는 이름표이고 는 숫자의 목록이에요. 원-핫 벡터는 의 한 자리만 1, 나머지는 0으로 표시하므로 의미의 유사성을 담지 않아요. 임베딩은 학습된 벡터예요. 와 학습 목표에 따라 관련된 쓰임이 가까운 위치에 놓일 수 있어요.

쉽게 이해하기

이렇게 생각해 보세요
임베딩은 낱말마다 거대한 지도 위의 자리를 정해 주는 거예요. 비슷하게 쓰이는 낱말은 가까이, 다르게 쓰이는 낱말은 멀리 놓여요. 종이 지도는 좌표가 두 개지만, 은 수백에서 수천 개의 숫자를 써요.
예시

“고양이”와 “강아지”는 가까이, “고양이”와 “자동차”는 멀리 있어요. 그래서 “강아지 사료”를 검색해도 낱말이 다른 “반려견 먹이” 문서를 찾을 수 있어요.

자주 하는 실수
“가까우면 뜻이 같거나 그 문장이 사실이다.” 가깝다는 것은 에서 비슷하게 쓰였다는 뜻일 뿐이에요. “덥다”와 “춥다”는 같은 종류의 문장에 자주 나와서 가까울 수 있어요.
부드러운 격자 지도 위에 동물끼리, 과일끼리, 탈것끼리 모인 핀 묶음 세 개가 있고, 묶음 사이에는 긴 점선이, 동물 묶음 위에는 돋보기가 있다.
비슷하게 쓰이는 것끼리 지도에서 가까이 놓여요. 거리는 쓰임이 비슷하다는 뜻이지, 사실이라는 뜻이 아니에요.
조금 더 알아보기

요즘 ()은 으로 문장의 다른 정보를 함께 섞어서(33장에서 배워요), 같은 토큰도 문장에 따라 표현이 달라져요. 는 진실이나 같은 뜻을 보장하지 않아요. 유명한 왕 − 남자 + 여자 비유는 일부 단어 임베딩에서 관찰된 예이지 보편적인 등식이 아니에요. 검색에서는 질문과 문서 벡터를 호환되는 에서 비교해요.

내 말로 설명해 보기

가까운 임베딩이면 두 문장이 같은 참말이라는 증거일까요?

설명과 비교하기

아니요. 같은 주제로 정반대 주장을 할 수도 있어요. 실제 내용을 읽고 검증해야 해요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

ID 에서 벡터로(10분) → 원-핫 벡터와 학습된 임베딩 비교하기(10분) → 학생이 단어를 2 지도에 놓기(20분) → 스스로 확인하기(10분).

화면으로 보여 주기

  1. 단어 다섯 개짜리 어휘에서 "cat(고양이)"의 원-핫 벡터를 써 보고, 이 벡터로는 비슷한 정도를 전혀 알 수 없다는 것을 보여 주세요.
  2. 고양이와 개는 가깝고 자동차는 먼 2차원 지도를 그리고, 학습이 단어를 그 자리에 놓는다고 설명해 주세요.

학생 활동

  1. 원하는 단어 여덟 개를 뜻에 따라 2차원 지도에 놓고, 그중 두 단어의 자리를 설명해 보세요.

완료 기준

ID, 원-핫 벡터, 임베딩을 구별할 수 있으면 돼요.

학생이 막힐 때

  • 임베딩이 가까우면 "사실"이라고 생각할 때: 같은 주제에 대한 정반대의 두 문장이 가까이 놓이는 예를 보여 주세요.

함께 생각할 질문

  • 두 문장의 임베딩이 가깝다면 무엇을 알 수 있고, 무엇은 알 수 없을까요?
출처와 더 읽을거리
챕터 8 · 초급 · AI 는 어떻게 작동할까

학습·추론·검색

목표

에서 바뀌는 것과 에서 사용하는 것을 설명해요.

은 바로 앞 단어 다음에 무엇이 나왔는지 세어요. sky 다음에 red가 세 번, blue가 한 번이면 은 3/4와 1/4예요. 현대 은 예측 (예측이 얼마나 틀렸는지 나타내는 숫자)을 줄이도록 많은 를 해요. 추론에서는 그 가중치와 주어진 으로 다음 의 점수를 계산해요. 이 실습은 을 보여주며 전체 은 아니에요.

쉽게 이해하기

이렇게 생각해 보세요
학습은 몇 달 동안 하는 시험공부와 같아요. 시간과 에너지가 많이 들고, 머릿속(가중치)이 바뀌어요. 추론은 시험장에서 문제에 답하는 시간이에요. 빠르고, 머릿속은 바뀌지 않아요. 는 오픈북 시험이에요. 답하는 동안 책을 펼쳐 찾아봐도 돼요.
예시

회사가 자기 회사 규정에 답하는 을 원한다고 해 봐요. 은 규정을 다시 공부시켜 가중치를 바꾸는 방법이에요. RAG는 규정집을 펼쳐 두고 질문마다 알맞은 쪽을 모델에게 건네는 방법이라, 규정이 바뀌어도 다시 학습하지 않고 고칠 수 있어요.

자주 하는 실수
“채팅할 때마다 모델이 바로 배운다.” 보통의 채팅은 추론이에요. 회사가 나중에 그 로 다시 학습하지 않는 한, 내 채팅이 가중치를 바꾸지는 않아요.
왼쪽: 책 더미에 둘러싸인 로봇이 작은 손잡이를 여러 개 돌리고, 시계와 에너지 아이콘이 있다. 오른쪽: 손잡이가 자물쇠로 고정된 같은 로봇이 번개 표시와 함께 아이의 질문에 빠르게 답한다.
학습은 손잡이(가중치)를 천천히 맞추는 일이고, 추론은 고정된 손잡이로 빠르게 답하는 일이에요.
조금 더 알아보기

파인튜닝은 모델 가중치를 바꿔요. 는 기본 가중치를 고정하고 작은 을 학습할 수 있어요. RAG(검색 증강 생성)는 가중치 변경 없이도 자료를 찾아 문맥으로 제공해요. 는 단어 일치··문서 길이 보정을, 은 학습된 비교를 사용해요. 어느 방법도 증거 누락이나 잘못된 자료 검색을 완전히 막지 못해요. 채팅 한 번이 자동으로 모델 학습이 되는 것은 아니에요.

내 말로 설명해 보기

새 설명서를 찾아 에 넣으면 반드시 파인튜닝일까요?

설명과 비교하기

아니요. 검색은 문맥을 더해요. 파인튜닝은 가중치를 갱신하는 학습 과정이 필요해요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

학습과 추론 비교하기(10분) → 앞 낱말 다음 낱말 세기(바이그램) 예제(10분) → 검색과 파인튜닝 비교하기(10분) → 학생이 상황 나누기(10분) → 스스로 확인하기(10분).

화면으로 보여 주기

  1. 챕터에 나온 sky → red/blue 세기 예제를 칠판에서 함께 풀고 확률을 계산해 보세요.
  2. 설명서를 프롬프트에 붙여 넣는 앱(검색)을 보여 주고, 이때 모델의 가중치는 바뀌지 않았다고 설명해 주세요.

학생 활동

  1. 상황 다섯 개를 학습, 추론, 검색으로 나눠 보세요. 예를 들어 "챗봇이 답하기 전에 오늘의 메뉴를 읽는다" 같은 상황이에요.

완료 기준

학습할 때 무엇이 바뀌고, 추론할 때 모델이 무엇을 쓰는지 설명할 수 있으면 돼요.

학생이 막힐 때

  • 챗봇이 대화할 때마다 배운다고 생각할 때: 다시 학습하지 않는 한 가중치는 그대로라고 설명해 주세요.

함께 생각할 질문

  • 모델은 왜 한 번도 학습한 적 없는 문서에 대해서도 답할 수 있을까요?
출처와 더 읽을거리
챕터 9 · 초급 · AI 는 어떻게 작동할까

지시·샘플링·검증

목표

늘 같은 답(일관성)과 맞는 답(사실 정확성)이 다르다는 것을 알고, 생성 설정을 바꿔 가며 비교해요.

는 응답을 유도하지만 나 도구 접근 을 보장하지 않아요. 은 앱이 강제해야 해요. 는 (점수를 로 바꾸는 계산) 전에 점수를 조절해요. 작은 양수는 확률을 집중시키고 큰 값은 평평하게 만들어요. 는 후보 수, top-p는 을 기준으로 제한해요. 둘 다 사실 확인 장치는 아니에요. 은 추첨하지 않고 최고 점수 토큰을 골라요.

쉽게 이해하기

이렇게 생각해 보세요
온도는 모험심 손잡이와 같아요. 낮추면 이 거의 언제나 가장 그럴듯한 낱말을 고르고, 올리면 뜻밖의 낱말을 더 자주 시도해요. top-k는 항아리에 가장 그럴듯한 후보 k개만 남기고, top-p는 확률을 큰 것부터 더해 p 이상이 되는 가장 작은 후보 묶음만 남겨요.
예시

수학 답이나 원문에 충실해야 하는 요약에는 낮은 온도를 써요. 이야기 아이디어나 이름 짓기처럼 다양함이 필요하면 온도를 조금 올려요. 어느 쪽이든 사실은 직접 확인해요.

자주 하는 실수
“온도를 낮추면 답이 사실이 된다.” 선택이 더 한결같아질 뿐이에요. 그럴듯하지만 틀린 문장은 여전히 틀려요.
왼쪽: 손이 늘 가장 높은 막대만 가리켜 같은 블록이 매번 나온다. 오른쪽: 보라 공이 많고 연보라 공은 적고 살구색 공은 몇 개뿐인 항아리에서 손이 공을 뽑아, 결과가 대부분 보라색이고 가끔 다른 색이 섞인다.
탐욕 선택은 언제나 가장 높은 막대를 고르고, 은 항아리에서 뽑기 때문에 결과가 조금씩 달라져요.
조금 더 알아보기

직접 만들기에서 탐욕 선택과 샘플링을 여러 번 비교해 보세요. 샘플링도 같은 결과가 나올 수 있어요. 실제 시스템은 모델 ··도구·수치 연산도 영향을 주므로 온도 0이 완전히 같은 출력을 보장하지 않아요. 이어서 모호한 질문과 목표·배경·검증 방법을 담은 질문을 비교하세요. 사실 주장은 원출처로 확인하고, 힌트를 활용해 결과를 자기 말로 설명해 보세요.

내 말로 설명해 보기

온도가 낮은 모델도 틀린 답을 확신하는 말투로 반복할 수 있을까요?

설명과 비교하기

네. 확률이 집중됐다고 참인 것은 아니에요. 내용을 별도로 검증해야 해요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

지시와 권한 비교하기(10분) → 숫자로 보는 temperature, top-k, top-p(15분) → 학생이 결과 예측하기(15분) → 스스로 확인하기(10분).

화면으로 보여 주기

  1. 토큰 세 개의 점수에 낮은 temperature 와 높은 temperature 를 적용해서 확률이 뾰족해지거나 평평해지는 모습을 보여 주세요.
  2. 높은 temperature 에서 같은 질문을 두 번 해서 답이 달라지는 것을 보여 주고, 어느 쪽도 사실인지 확인된 답은 아니라고 설명해 주세요.

학생 활동

  1. 확률이 0.6, 0.3, 0.1 일 때 top-k = 2 와 top-p = 0.8 이 각각 어떤 토큰을 남기는지 말해 보세요.

완료 기준

temperature 가 낮으면 답이 한결같아지지만 꼭 맞는 답이 되는 것은 아니라고 설명할 수 있으면 돼요.

학생이 막힐 때

  • 시스템 프롬프트가 보안 벽이라고 생각할 때: 권한은 가 아니라 애플리케이션이 지켜야 한다고 설명해 주세요.

함께 생각할 질문

  • temperature 를 높이고 싶을 때는 언제이고, 낮추고 싶을 때는 언제일까요?
출처와 더 읽을거리
챕터 10 · 초급 · AI 도구 쓰기

ChatGPT: 잘 묻고 답을 확인하기

목표

목표, , 조건, 결과 형식을 갖춘 요청을 쓰고, 한 단계씩 고쳐 나가며, 답을 쓰기 전에 확인할 수 있어요.

는 대형 로 만든 채팅 도우미예요. 글을 쓰고, 요약하고, 번역하고, 설명하고, 계획을 세워 줘요. 첨부한 파일과 그림을 읽을 수 있고, 기능이 켜져 있으면 웹에서 검색도 해요.

좋은 요청에는 네 부분이 있어요.

  • 목표 — 무엇을 원하는지
  • 문맥 — 누구를 위한 것이고 이미 무엇이 있는지
  • 조건 — 길이, 말투, 피할 것
  • 형식 — 목록, 표, 이메일

첫 답이 빗나가면 처음부터 다시 하지 말고 무엇을 바꿀지 정확히 말하세요. 대화 하나에는 주제 하나만 두어야 앞의 메시지가 헷갈리게 하지 않고 도움이 돼요.

쉽게 이해하기

이렇게 생각해 보세요
ChatGPT를 첫 출근한 유능한 도우미처럼 대하세요. 일은 빠르지만 내가 말해 주지 않으면 내 사정을 모르고, 틀렸을 때도 자신 있게 말할 때가 있어요. 할 일을 분명히 설명하고, 첫 초안을 보고, 구체적으로 고쳐 달라고 해요.
예시
  • 첫 요청: “파티 초대장 써 줘.”
  • 더 나은 요청: “열 살 아이 반 친구들에게 보낼 생일 파티 초대장을 써 줘. 토요일 오후 2시, 우리 집, 수영복 챙기기, 80단어 이내, 다정한 말투.”
  • 이어서: “두 번째 문장을 짧게 하고, 부모님께 목요일까지 답해 달라는 줄을 더해 줘.”
자주 하는 실수
한 대화에 여러 주제를 섞는 것. 앞의 메시지가 계속 뒤의 답에 영향을 주니, 새 주제는 새 대화에서 시작해요.
징검다리 돌 세 개 위에 채팅 창이 하나씩 있다. 엉망인 결과, 연필 고침 표시가 있는 조금 나은 결과, 초록 체크가 있는 깔끔한 결과. 아이가 단계마다 피드백 쪽지를 붙이고, 마지막 답을 책과 다른 문서로 확인한다.
구체적인 피드백으로 답을 한 단계씩 고치고, 쓰기 전에 다른 자료로 확인해요.
조금 더 알아보기

언어 모델은 그럴듯한 글을 예측하기 때문에, 술술 읽히는 답도 틀릴 수 있어요. 출처를 물어보고 직접 열어 보세요. 숫자는 원래 자료와 비교하고, 에게 어떤 가정을 했는지 적어 달라고 하세요. 중요한 사실은 따로 떨어진 두 번째 출처로 확인하세요. 과 프로젝트 기능으로 ChatGPT 가 내 취향을 기억하게 할 수 있지만, 그것도 지시일 뿐 보장이 아니니 계속 확인하세요.

내 말로 설명해 보기

"발표 좀 도와줘"라는 요청을 목표, 문맥, 조건, 형식이 들어가게 다시 써 보세요.

설명과 비교하기

예를 들면 "목표: 슬라이드 다섯 장짜리 개요. 문맥: 13살 학생들 앞에서 하는 재활용에 대한 3분 발표. 조건: 쉬운 말, 슬라이드마다 출처가 있는 통계 하나. 형식: 슬라이드마다 제목 하나와 두 개." 네 부분을 모두 분명히 밝힌 답이면 맞아요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

약한 요청과 강한 요청 비교하기(10분) → 세 번에 걸쳐 실시간으로 고치기(10분) → 학생이 자기 요청을 쓰고 다듬기(20분) → 답을 비교하고 확인하기(10분).

화면으로 보여 주기

  1. "한국에 대해 알려 줘."라고 물어보세요. 그다음 "목표: 10살 아이에게 한국을 다섯 줄로 소개하기. 문맥: 브라질에 사는 아이. 조건: 역사 연도는 넣지 않기. 형식: 글머리 기호 목록."이라고 물어보고 두 답을 비교하세요.
  2. 처음부터 다시 묻지 말고 "3번째 줄을 더 짧게 하고 음식 예시를 하나 넣어 줘"처럼 정확히 무엇을 바꿀지 이어서 말해 보세요.
  3. 답에 숫자가 들어가는 질문을 하고, 출처를 물어 직접 열어 본 뒤 숫자가 맞는지 확인해 보세요.

학생 활동

  1. 실제로 할 일(이메일, 공부 계획, 요약) 하나를 골라 목표, 문맥, 조건, 형식을 갖춘 요청을 써 보세요.
  2. 적어도 두 번 이어서 요청해 답을 고치고, 내가 확인한 주장 하나와 확인한 방법을 적어 보세요.

완료 기준

마지막 요청에 네 부분이 모두 들어 있고, 출처와 비교해 확인한 사실 하나를 보여 줄 수 있으면 돼요.

학생이 막힐 때

  • 답이 너무 길거나 너무 일반적일 때: 길이 제한과 대상을 더하고, 원하는 결과의 예시를 하나 주세요.
  • 답이 출처나 숫자를 지어낼 때: 그렇다고 말하고 링크를 달라고 하세요. 확인할 수 없는 내용은 확인되지 않은 것으로 다루세요.

함께 생각할 질문

  • 내 예시에서 네 부분 중 어느 것이 답을 가장 크게 바꿨나요?
  • 자신 있고 술술 읽히는 답도 왜 틀릴 수 있을까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 11 · 초급 · AI 도구 쓰기

이미지 생성: 설명하고, 다듬고, 확인하기

목표

그림을 정확하게 설명하고, 한 번에 한 가지만 바꾸고, 쓰기 전에 실수, 권리, 정직함을 확인할 수 있어요.

은 글로 쓴 설명을 그림으로 바꿔 주고, 많은 이 내가 준 그림을 고치기도 해요. 와 는 그림을 만들고 고칠 수 있고, Google 은 이미지 모델을 제공해요( 의 예전 모델은 서비스가 끝났어요). 좋은 이미지 에는 이런 것이 들어가요.

  • 주제와 배경
  • 화풍
  • 구도 — 가까이인지 넓게인지, 무엇이 어디에 있는지
  • 색
  • 크기나

고칠 때는 바꿀 것과 그대로 둘 것을 함께 말하세요. 예를 들어 "소녀와 배경은 그대로 두고 우산만 노란색으로 바꿔 줘"처럼요.

쉽게 이해하기

이렇게 생각해 보세요
그림을 부탁하는 것은 전화로 화가에게 장면을 설명하는 것과 같아요. 화가는 내 머릿속을 볼 수 없으니, 누가 나오는지, 어디인지, 화풍, 얼마나 가까이서 본 모습인지, 색, 그림의 모양을 말해요. 고쳐 달라고 할 때는 그대로 둘 것도 함께 말해요.
예시

“해 질 녘 비 오는 거리를 노란 우산을 쓰고 걷는 소녀, 따뜻한 수채화 풍, 조금 떨어져서 본 모습, 부드러운 파랑과 주황, 가로 3:2 그림.” 이어서: “소녀와 거리는 그대로 두고 우산만 빨간색으로 바꿔 줘.”

자주 하는 실수
확대해 보지 않고 그림을 쓰는 것. 남는 손가락, 틀린 글자, 말이 안 되는 그림자를 찾아보고, 만든 그림을 진짜 사진인 것처럼 내놓지 않아요.
아이가 태블릿에서 노란 우산을 쓴 소녀 그림을 본다. 돋보기로 보니 소녀의 손가락이 여섯 개이고 빨간 동그라미가 쳐져 있다. 태블릿 옆에는 체크 상자가 있는 점검표와 방패 아이콘이 있다.
만든 그림은 쓰기 전에 확대해서 손·글자·그림자를 확인하고, 로 만들었다고 솔직히 밝혀요.
조금 더 알아보기

만든 그림에는 작은 실수가 숨어 있을 때가 많아요. 틀린 글자, 남는 손가락, 말이 안 되는 그림자 같은 것들이에요. 꼭 확대해서 확인하세요. 만든 그림으로 실제로 일어난 일인 척하지 말고, 살아 있는 작가나 실제 사람을 허락 없이 흉내 내지 말고, 필요할 때는 AI 로 만든 그림이라고 밝히세요. 그림을 상업적으로 쓰기 전에는 도구의 이용 약관을 읽어 보세요.

내 말로 설명해 보기

인물 사진에서 배경만 해변으로 바꾸고 사람은 똑같이 두는 수정 요청을 써 보세요.

설명과 비교하기

예를 들면 "사람의 얼굴, 옷, 자세, 조명은 지금 그대로 두세요. 배경만 사람 뒤로 바다가 보이는 햇살 좋은 해변으로 바꿔 주세요." 바뀔 것과 그대로 둘 것을 모두 말해야 해요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

약한 프롬프트와 강한 프롬프트 비교하기(10분) → 나머지는 그대로 두고 한 가지만 고치기(10분) → 학생이 자기 그림을 만들고 고치기(20분) → 실수와 권리 살펴보기(10분).

화면으로 보여 주기

  1. "고양이"로 그림을 만든 다음, "햇살 드는 창가의 파란 의자에서 잠든 주황색 고양이 수채화, 넓은 구도, 4:3"으로 만들어 비교해 보세요.
  2. 두 번째 그림을 "나머지는 모두 그대로 두고 의자만 초록색으로 바꿔 줘"라고 고쳐 보세요. 실수로 바뀐 부분이 있으면 짚어 주세요.
  3. 결과를 확대해서 글자, 손, 그림자, 원근에서 실수 하나를 찾아보세요.

학생 활동

  1. 주제, 배경, 화풍, 구도, 색, 크기가 들어간 이미지 프롬프트를 쓰고 그림을 만들어 보세요.
  2. 딱 한 가지만 바꾸는 수정을 하고, 다른 부분도 바뀌었는지 적어 보세요.

완료 기준

프롬프트, 수정 요청, 그리고 결과에서 찾은 실수 하나를 보여 줄 수 있으면 돼요.

학생이 막힐 때

  • 그림이 프롬프트의 일부를 무시할 때: 가장 중요한 내용을 맨 앞에 쓰고 서로 부딪히는 말은 지우세요.
  • 그림 속 글자 철자가 틀릴 때: 글자 수를 줄여 달라고 하거나, 나중에 일반 편집 으로 글자를 넣으세요.

함께 생각할 질문

  • 수정 요청에는 왜 그대로 둘 것도 말해야 할까요?
  • 만든 그림을 쓰면 안 되는 때는 언제일까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 12 · 초급 · AI 도구 쓰기

쉘과 기본 명령: AI 도구가 실행되는 곳

목표

기본 열 개(, , , , , , , , clear, exit)를 쓸 수 있어요. 프로젝트 폴더에서 도구를 시작하고 끝내며, 어떤 명령이 위험한지 알 수 있어요.

, , 와 대부분의 개발 도구는 터미널에서 실행돼요. 터미널은 이라는 에 명령을 입력하는 창이에요. 기본 낱말은 이래요.

  • pwd — 지금 어디에 있지
  • ls — 여기에 뭐가 있지
  • cd — 저기로 가기(cd .. 는 한 단계 위로)
  • mkdir — 폴더 만들기
  • cat — 파일 보기
  • cp — 복사하기
  • mv — 옮기거나 이름 바꾸기
  • rm — 지우기(휴지통을 거치지 않아요)
  • clear — 화면 깨끗하게 하기
  • exit — 닫기

AI 도구도 같은 방법으로 프로젝트 폴더 안에서 시작해요. (클로드 코드), codex(Codex), (Antigravity CLI) 라고 입력하면 돼요. SONUB 에는 연습 터미널이 있는 쉘 강좌가 따로 있고, 이 챕터는 그 강좌의 첫 단원들로 안내해요.

조금 더 알아보기

AI 도구 안에서 슬래시로 시작하는 명령은 도구 자체를 다뤄요.

  • — 프로젝트 지시 파일을 써요.
  • /help — 명령 목록을 보여 줘요.
  • — 새 대화를 시작해요.
  • /exit — 도구에서 나가요.

쉘 강좌 11단원에서는 AI 도구를 설치하고 으로 확인하는 방법을 보여 줘요. 설치 명령은 바뀌니 공식 페이지와 비교하세요. 아직 실행 중인 명령을 멈추려면 를 누르세요. AI 가 명령을 제안하면 허락하기 전에 읽어 보세요. rm 은 휴지통 없이 바로 지워요. 특히 는 폴더 안의 모든 것을 묻지도 않고 지워요.

쉘 명령어 강좌에서 연습하기

이 챕터의 진도는 그 강좌에 기록돼요.

터미널에 입력할 명령
pwd                 # where am I?
ls                  # what is here?
mkdir ai-course     # make a folder
cd ai-course        # go into it (cd .. goes back up)
cat notes.txt       # show a file
cp notes.txt copy.txt
mv copy.txt old.txt # move or rename
rm old.txt          # delete for good (no recycle bin)
clear               # clean the screen

claude              # start an AI agent in this folder (or: codex, agy)
/init               # inside the agent: write the project instruction file
/help               # list the agent's commands
/exit               # leave the agent

이 명령은 이 페이지가 아니라 나 의 터미널에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

ai-course 라는 폴더에 들어가서, 안에 무엇이 있는지 보고, 지금 위치를 확인하려면 어떤 명령 세 개를 쓰나요?

설명과 비교하기

들어갈 때는 cd ai-course, 안에 있는 것을 볼 때는 ls, 지금 위치를 출력할 때는 pwd 를 써요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

AI 도구에 터미널이 왜 중요한지(5분) → pwd, ls, cd, mkdir 를 실시간으로 둘러보기(10분) → 학생이 SONUB 쉘에서 1, 2단원 하기(25분) → 11단원의 설치 확인(10분).

화면으로 보여 주기

  1. SONUB 쉘 강좌를 열고 연습 터미널에서 pwd, ls, mkdir ai-course, cd ai-course 를 실행해 보세요.
  2. 일부러 틀린 명령을 입력하고, 를 함께 소리 내어 읽어 보세요.
  3. 11단원을 보여 주세요. 클로드 코드와 Codex 의 설치 명령, 그리고 --version 으로 설치를 확인하는 방법이에요.

학생 활동

  1. 쉘 1단원(터미널 만나기)과 2단원(파일과 폴더)을 끝내세요.
  2. 내 컴퓨터에서 터미널을 열고 로 ai-course 폴더를 만드세요.

완료 기준

1, 2단원을 끝내고 도움 없이 ai-course 폴더로 들어갈 수 있으면 돼요.

학생이 막힐 때

  • 는 화면이 달라요: 쉘 강좌의 설명대로 이나 을 쓰거나, SONUB 터미널에서 계속 연습하세요.
  • 설치 직후 ""가 나올 때: 터미널을 닫았다가 다시 열고, 11단원의 부분을 확인하세요.

함께 생각할 질문

  • pwd, ls, cd 는 각각 무엇을 알려 주거나 바꾸나요?
  • AI 에이전트가 명령을 실행하게 하기 전에 왜 그 명령을 읽어야 할까요?
출처와 더 읽을거리
챕터 13 · 중급 · 개발 기초

Git 과 GitHub: 버전을 저장하고 함께 일하기

목표

으로 모든 변경을 저장해서 가 고친 내용을 검토하고 되돌릴 수 있고, 로 프로젝트를 공유하고 를 열어 검토할 수 있어요.

Git 은 이라는 프로젝트 을 기록해서, 무엇이 바뀌었는지 보고 예전으로 돌아갈 수 있게 해 줘요. 그래서 AI 의 안전망이 돼요. 에게 일을 맡기기 전에 커밋하고, 끝나면 git 로 바뀐 내용을 검토해서 남기거나 되돌리세요.

GitHub 는 Git 프로젝트를 온라인에 보관하는 웹사이트예요. 그곳에서 이런 일을 해요.

  • 를 만들어요.
  • 커밋을 해요.
  • 풀 리퀘스트를 열어요. 변경 묶음을 합치자고 제안하는 것으로, 다른 사람이 읽고, 의견을 달고, 승인할 수 있어요.

SONUB 의 Git 강좌는 을 한 단계씩 가르쳐 주고, 이 챕터는 GitHub 쪽을 더해요.

쉽게 이해하기

이렇게 생각해 보세요
Git은 게임의 저장 지점과 같아요. 커밋 하나하나가 프로젝트 전체를 찍어 둔 저장 지점이라, 일이 잘못되면 마지막으로 잘 되던 곳으로 돌아갈 수 있어요. GitHub는 그 저장 지점의 사본을 온라인에 두는 구름 위 선반 같아서, 친구들이 보고 변경을 제안할 수 있어요.
예시

에이전트에게 “를 넣어 줘”라고 하기 전에 커밋해요. 에이전트가 끝나면 git diff로 바뀐 줄을 모두 봐요. 좋으면 다시 커밋하고, 페이지가 망가졌으면 로 저장 지점에 돌아가요.

자주 하는 실수
커밋 한 번 없이 에이전트에게 오래 일을 맡기는 것. 돌아갈 저장 지점이 없고, 큰 실수 하나가 좋은 변경들과 뒤섞여 버려요.
구불구불한 길에 빛나는 깃발이 여러 개 있고, 깃발마다 작은 스냅숏 카드가 떠 있다. 점선 화살표가 앞의 깃발로 되돌아간다. 위의 구름에는 카드 사본이 있고, 옆 갈래 길의 다른 인물이 합치자며 악수를 내민다.
커밋은 돌아갈 수 있는 저장 지점이에요. GitHub는 사본을 온라인에 두고, 풀 리퀘스트는 옆 갈래 길을 큰길에 합치자고 요청해요.
조금 더 알아보기

GitHub 에서는 로 할 일을 설명하고, 에서 메인 를 건드리지 않고 작업하고, 풀 리퀘스트로 검토해요. 개인적인 작업이 담긴 저장소는 비공개로 두고, 이나 키는 절대 커밋하지 마세요. 한 번 푸시했다면 이미 새어 나갔다고 보고 키를 바꾸세요. 와 도 풀 리퀘스트를 열 수 있지만, 합치기 전에 사람이 diff 를 읽어야 해요.

내 말로 설명해 보기

AI 에이전트가 파일 다섯 개를 고쳤는데 무언가 고장 났어요. 바뀐 내용을 보고 되돌리는 데 어떤 Git 명령이 도움이 될까요?

설명과 비교하기

와 git diff 로 무엇이 바뀌었는지 봐요. 아직 커밋하지 않은 변경은 git restore <file> 로 되돌리고, 이미 커밋했다면 로 그 커밋을 되돌려요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

AI 와 함께할 때 가 왜 중요한지(5분) → 화면에서 커밋, diff, 되돌리기(10분) → GitHub: 저장소 만들기, 푸시, 풀 리퀘스트 열고 검토하기(15분) → 학생 연습(20분).

화면으로 보여 주기

  1. 프로젝트 폴더에서 , , git commit -m "start" 를 실행하고, 한 줄을 바꾼 뒤 git diff 로 정확히 무엇이 바뀌었는지 보여 주세요.
  2. GitHub 에 저장소를 만들고, 프로젝트를 푸시한 다음 브랜치에서 풀 리퀘스트를 열어 보세요.
  3. 바뀐 줄 하나에 검토 의견을 남기고, 승인하거나 수정을 요청해 보세요.

학생 활동

  1. Git 강좌의 1–5단계를 듣고(또는 이미 안다는 것을 보여 주고), ai-course 폴더에서 커밋을 세 번 하세요.
  2. 폴더를 새 GitHub 저장소에 푸시하고, 파일 하나만 바꾸는 풀 리퀘스트를 하나 여세요.

완료 기준

학생의 GitHub 저장소에 커밋이 세 개 이상 있고, 설명이 달린 풀 리퀘스트가 하나 있으면 돼요.

학생이 막힐 때

  • 문제로 푸시가 거절될 때: (gh auth login)나 으로 인하세요. 은 절대 채팅에 입력하지 마세요.
  • 실수로 비밀 값을 커밋했을 때: 바로 그 키를 폐기하고 새 키로 바꾼 뒤 코드에서 지우세요. 파일만 지우는 것으로는 부족해요.

함께 생각할 질문

  • AI 에이전트가 프로젝트를 고치게 하기 전에 왜 커밋해야 할까요?
  • 풀 리퀘스트로 다른 사람은 무엇을 할 수 있나요?
출처와 더 읽을거리
챕터 14 · 중급 · 개발 기초

Python 과 NumPy: 모델을 만드는 도구

목표

작은 을 쓰고 실행하며, 이 강좌의 모든 을 이루는 을 쓸 수 있어요.

Python 은 짧게 쓸 수 있고 좋은 가 많아서 에서 가장 많이 쓰는 언어예요. SONUB 의 Python 강좌는 출력, , , , , 를 에서 자동 채점과 함께 가르쳐요. 먼저 그 강좌를 끝내거나, 그 개념들을 알고 있는지 확인하세요.

하지만 모델은 많은 숫자를 한꺼번에 다루기 때문에 를 써요. NumPy 배열에는 숫자가 격자 모양으로 담기고, a @ b 같은 한 줄로 전체를 곱할 수 있어요. 이것이 바로 이 하는 일이에요.

쉽게 이해하기

이렇게 생각해 보세요
그냥 Python은 계산기처럼 숫자를 하나씩 다뤄요. NumPy는 숫자 격자 전체를 한 번에 다뤄서, 표 두 개를 한 단계에 곱하는 스프레드시트와 비슷해요. 모델은 거대한 숫자 격자로 되어 있어서 이 도구가 있어야 충분히 빨라요.
예시

숫자 백만 개에 1씩 더하는 일을 Python 반복문으로 하면 작은 단계가 백만 번이에요. NumPy 배열 a가 있으면 a + 1 한 줄로 전부 하고, a @ b로 행렬 전체를 곱해요.

자주 하는 실수
기본 Python 강좌를 건너뛰고 NumPy부터 시작하는 것. 리스트·반복·함수를 모르면 NumPy의 를 읽기가 아주 어려워요.
왼쪽: 지친 인물이 계산기를 누르고 낱개 블록이 길게 줄 서 있다. 오른쪽: 기계가 큰 색깔 격자 두 개를 한 번에 곱하고 반짝이며 결과 격자가 나온다.
반복문은 숫자를 하나씩, NumPy는 격자 전체를 한 번에 — 그래서 모델은 NumPy를 써요.
조금 더 알아보기

이 강좌의 나머지를 떠받치는 NumPy 개념은 세 가지예요.

  • — 행과 열이 몇 개인지
  • — 연산이 배열 전체로 자동으로 늘어나 적용되는 것
  • — Python 반복문 없이 배열 전체를 한 번에 계산하는 것

이 챕터의 예제는 브라우저에서 실행돼요. 에서 하려면 Python 3 를 설치하고, -m .venv 로 가상 환경을 만들고, source .venv/bin/activate( 는 .venv\\activate)로 켠 뒤 install numpy 로 NumPy 를 설치하세요.

예제 코드 브라우저에서 Python 과 NumPy 로 실행돼요. 를 바꾸고 다시 실행해 보세요.

내 말로 설명해 보기

한 배열의 shape 는 (4, 3)이고 다른 배열은 (3, 2)예요. 두 배열을 곱한 결과의 shape 는 무엇이고, 왜 그럴까요?

설명과 비교하기

(4, 2)예요. 은 안쪽 크기(3 과 3)가 같아야 하고, 결과는 바깥쪽 크기인 4 와 2 를 가져요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

Python 기초 확인하기(10분) → 화면에서 NumPy 배열, shape, @ 보기(10분) → 학생이 예제를 실행하고 바꿔 보기(20분) → 함께 설명하기(10분).

화면으로 보여 주기

  1. 예제를 실행하고 shape, 브로드캐스팅 결과, 행렬 곱을 짚어 주세요.
  2. softmax 줄의 점수를 바꿔도 의 합은 여전히 1 이라는 것을 보여 주세요.
  3. 같은 덧셈을 Python 반복문과 NumPy 한 줄로 써서 비교해 보세요.

학생 활동

  1. SONUB Python 강좌를 함수 단원까지 끝내거나, 작은 함수를 쓸 수 있다는 것을 강사에게 보여 주세요.
  2. 예제를 바꿔 보세요. 3×3 배열을 만들어 3×1 배열과 곱하고, 실행하기 전에 결과의 shape 를 예측하세요.

완료 기준

행렬 곱의 shape 를 맞게 예측하고, softmax 가 무엇을 돌려주는지 설명할 수 있으면 돼요.

학생이 막힐 때

  • shape 에 관한 가 날 때: 두 배열의 .shape 를 출력해 보세요. a @ b 에서는 안쪽 크기가 같아야 해요.
  • 내 컴퓨터에서 " numpy"가 나올 때: 가상 환경을 켜고 pip install numpy 를 실행하세요.

함께 생각할 질문

  • Python 반복문 대신 왜 NumPy 를 쓸까요?
  • softmax 가 돌려주는 숫자들을 모두 더하면 항상 얼마가 될까요?
출처와 더 읽을거리
챕터 15 · 중급 · 개발 기초

파이썬: 실행·관찰·수정

목표

에서 ··를 사용해요.

은 ·처럼 수치 계산과 도구가 풍부해서 개발에 널리 쓰여요. SONUB은 로 브라우저에서 파이썬을 실행해요. 과 패키지를 불러오는 데 시간이 걸려요. 인사말 출력은 실행을 확인하는 것이며 AI 은 아니에요.

쉽게 이해하기

이렇게 생각해 보세요
코드 실행은 과학 실험과 같아요. 무슨 일이 일어날지 예상하고, 실행하고, 결과를 보고, 한 번에 하나만 바꿔요. 나타난 메시지는 실험 결과이지 내가 잘못했다는 표시가 아니에요.
예시

[실행]을 누르기 전에 (2 + 3 * 4)가 무엇을 보여 줄지 맞혀 보세요. 그다음 실행해서 비교해요. 20이라고 생각했다면 (2 + 3) * 4로 바꿔 다시 실행해 보고, 처음 답이 왜 14였는지 알아봐요.

자주 하는 실수
오류가 났을 때 여러 줄을 한꺼번에 고치는 것. 하나만 바꾸고 다시 실행하고, 는 마지막 줄부터 읽어요 — 보통 문제의 이름이 거기 있어요.
조금 더 알아보기

아래 예제는 사람이 쓴 규칙을 적용해요. 점수나 기준을 바꾸고 실행 전에 출력을 예상해 보세요. 함수의 은 값을 돌려주고 print는 화면에 표시해요. 기준과 정확히 같은 점수처럼 도 시험하세요. 이 규칙 에는 를 통한 학습 단계가 없어요.

예제 코드 브라우저에서 Python 과 NumPy 로 실행돼요. 코드를 바꾸고 다시 실행해 보세요.

내 말로 설명해 보기

개발자가 if 조건을 바꾸면 프로그램이 데이터로 학습한 걸까요?

설명과 비교하기

아니요. 규칙 수정은 프로그래밍이에요. 학습에는 데이터에서 모델 동작을 얻는 과정이 필요해요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

예제 실행하기(10분) → 조건 하나를 바꾸고 결과 예측하기(10분) → 학생이 작은 함수 쓰기(20분) → 스스로 확인하기(10분).

화면으로 보여 주기

  1. 챕터의 예제 코드를 실행하고, 부분이 실행되도록 질문을 바꿔 보세요.
  2. if 조건을 바꾸는 것은 프로그래밍이지, 데이터로 배우는 것이 아니라는 점을 짚어 주세요.

학생 활동

  1. if//else 로 서로 다른 질문 세 개에 답하는 함수를 쓰고, 질문마다 시험해 보세요.

완료 기준

코드를 실행하기 전에 어느 부분이 실행될지 예측할 수 있으면 돼요.

학생이 막힐 때

  • : if 와 else 안의 줄을 스페이스 네 칸으로 맞춰 주세요.

함께 생각할 질문

  • 사람이 고치는 프로그램과 스스로 배우는 모델은 무엇이 다를까요?
출처와 더 읽을거리
챕터 16 · 중급 · 만들고 공개하기

바이브 코딩: AI 와 이야기하며 홈페이지 만들기

목표

에게 설명하고, 변경을 하나하나 검토하고, 프로젝트를 에 보관하면서 한 페이지짜리 홈페이지를 만들 수 있어요.

은 원하는 것을 주로 쉬운 말로 설명하고 는 AI 가 쓰게 하면서 를 만드는 방법이에요. 나는 방향을 잡고, 시험하고, 결정해요.

작게 시작하세요. 폴더 하나, Git 하나, 그리고 짧은 설명서가 있으면 돼요. 설명서에는 이것을 적어요.

  • 사이트를 누가 볼지
  • 어떤 구역이 있을지
  • 스타일
  • 규칙 — 순수 과 , 휴대폰에서도 작동, 외부 없음

에게 첫 을 부탁하고, 에서 을 연 다음, 한 번에 하나씩 고쳐 나가세요. "머리글을 더 작게 해 줘", "연락처 구역을 더해 줘", "휴대폰에서 을 고쳐 줘"처럼요.

쉽게 이해하기

이렇게 생각해 보세요
바이브 코딩은 내가 건축가가 되어 시공자와 일하는 것과 같아요. 원하는 집을 쉬운 말로 설명하면 시공자(AI)가 지어 주고, 나는 집을 둘러보며 잘못된 곳을 짚어 고쳐 달라고 해요. 무엇을 지을지 정하고 안전한지 확인하는 사람은 여전히 나예요.
예시

“우리 독서 모임 한 쪽짜리 사이트를 만들어 줘. 제목, 사진 자리, 다음 모임 날짜, 가입 버튼. 순수 HTML과 CSS, 휴대폰에서도 잘 보여야 해.” 그다음 index.html을 열어 좁은 창에서도 보고, “버튼을 크게 하고 날짜를 사진 위로 옮겨 줘”라고 해요.

자주 하는 실수
페이지를 열어 보지 않고 모든 변경을 받아들이는 것. 할 때마다 브라우저에서 확인하고, 잘 되는 버전은 해요.
편안히 앉은 사람이 말풍선 속 집·팔레트·휴대폰 아이콘으로 원하는 것을 설명한다. 로봇이 노트북에서 색깔 블록으로 된 페이지를 만든다. 사람은 휴대폰과 노트북에서 돋보기로 확인하고 쪽지를 건네며, 원형 화살표가 단계를 잇는다.
설명하기 → AI가 만들기 → 브라우저에서 확인 → 피드백. 작은 바퀴로 되풀이하고 잘 되는 버전마다 저장해요.
조금 더 알아보기

개발자는 여전히 나예요. 변경을 받아들이기 전에 하나하나 읽고, 작동하는 단계마다 Git 에 커밋해서 되돌아갈 수 있게 하고, 실제 휴대폰 너비에서 시험해 보세요. 에이전트가 페이지에 비밀번호나 를 넣지 않게 하세요. 홈페이지는 공개되어 있어서 그 안의 모든 것을 누구나 읽을 수 있어요. 페이지가 잘 작동하면 공개할 준비가 된 거예요. 다음 챕터에서 로 인터넷에 올려요.

터미널에 입력할 명령
mkdir homepage && cd homepage
git init                       # save points from the first minute
claude                         # or: codex, agy

# then, inside the agent:
# "Make a one-page homepage in index.html for <who it is for>.
#  Sections: <...>. Style: <...>. Plain HTML and CSS, works on a phone,
#  no outside libraries. Show me the plan before you write."

git add index.html
git commit -m "first working homepage"
git restore index.html         # throw away a change you do not like

이 명령은 이 페이지가 아니라 나 의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

바이브 코딩에서 변경마다 되풀이하는 네 단계를 적어 보세요.

설명과 비교하기

변경 하나를 설명하기 → 에이전트가 만들게 하기 → 브라우저에서 확인하기(휴대폰 너비에서도) → 잘 되면 Git 에 커밋하고, 안 되면 되돌아가기. 부탁하기, 확인하기, 저장하기가 들어 있으면 다 맞아요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

함께 설명서 쓰기(10분) → 에이전트가 첫 버전 만들기(10분) → "보고, 부탁하고, 확인하고, 커밋하기"를 세 번(25분) → 페이지 보여 주기(5분).

화면으로 보여 주기

  1. 빈 homepage 폴더에서 을 실행하고, 에이전트를 시작한 다음, 한 페이지 사이트를 위한 여섯 부분 를 붙여 넣으세요.
  2. index.html 을 열고, 브라우저를 휴대폰 너비로 줄인 다음, 깨지는 부분을 고쳐 달라고 에이전트에게 부탁하세요.
  3. 커밋한 다음 일부러 나쁜 변경을 부탁하고, 로 마지막 커밋으로 되돌아가세요.

학생 활동

  1. 구역이 세 개 이상 있는 나만의 한 페이지 홈페이지(동아리, 취미, 포트폴리오)를 만드세요.
  2. 작동하는 변경 하나마다 커밋 하나씩, 분명한 메시지로 세 번 이상 커밋하세요.

완료 기준

페이지가 브라우저에서 열리고, 휴대폰 너비에서도 잘 읽히고, 비밀 정보가 없고, 작은 단계들로 된 Git 기록이 있으면 돼요.

학생이 막힐 때

  • 에이전트가 매번 전부 다시 쓸 때: 작은 변경 하나만 부탁하고, 파일과 구역의 이름을 말해 주세요.
  • 휴대폰에서 페이지가 깨져 보일 때: 레이아웃을 부탁하고 390 너비에서 확인하세요.

함께 생각할 질문

  • AI 가 코드를 쓰는데도 왜 작동하는 단계마다 커밋해야 할까요?
  • 공개 홈페이지에는 왜 절대 API 키가 들어가면 안 될까요?
출처와 더 읽을거리
챕터 17 · 중급 · 만들고 공개하기

웹에 공개하기: 내 홈페이지를 Cloudflare 에 배포하기

목표

나 로 를 에 공개하고, 업데이트하고, 공개한 뒤에 무엇이 공개되는지 알 수 있어요.

Cloudflare Pages 는 , , , 이미지로 된 정적 사이트를 의 전 세계 에 올려 줘요. 무료 요금제가 있고, your-project.pages.dev 같은 주소가 생겨요. 방법은 두 가지예요.

  • — 를 설치하고 wrangler login 을 실행해요(Wrangler 는 Cloudflare 의 도구이고, npx 가 설치 없이 실행해 줘요). npx wrangler pages project create my-homepage 로 프로젝트를 만든 뒤, 이 있는 폴더에서 npx wrangler pages ./ --project-name=my-homepage 를 실행해요.
  • — 프로젝트를 GitHub 에 푸시하고, Cloudflare 에서 그 를 연결해요. 그러면 푸시할 때마다 새 이 자동으로 공개돼요.

처음에 하나를 고르세요. Direct Upload 프로젝트는 나중에 Git 연동으로 바꿀 수 없어요.

쉽게 이해하기

이렇게 생각해 보세요
배포는 거실에 차린 가게를 사람 많은 큰길로 옮기는 것과 같아요. 내 노트북에서는 나만 페이지를 볼 수 있어요. 배포하면 파일이 전 세계의 에 놓여, 주소를 아는 누구나 열 수 있어요.
예시

홈페이지 폴더에 index.html, style.css, 사진 한 장이 있어요. 폴더를 올리면 your-project.pages.dev 같은 주소가 생기고, 휴대폰으로 열어 봐요. 다음에 페이지를 고쳐 다시 배포하면 모두가 새 버전을 봐요.

자주 하는 실수
이나 키가 든 프로젝트 폴더를 통째로 올리는 것. 정적 사이트에 올린 파일은 누구나 내려받을 수 있으니 먼저 폴더를 확인해요.
페이지 파일이 든 폴더가 노트북에서 구름으로 올라간다. 빛나는 지구 네트워크에서 같은 화려한 페이지가 전 세계 사람들의 휴대폰·태블릿·노트북으로 퍼진다.
배포하면 파일이 전 세계 서버에 복사되어, 주소 하나로 모두에게 같은 페이지가 열려요.
조금 더 알아보기

공개하는 것은 모두 누구나 볼 수 있으니, 폴더에 키, 개인 메모, .env 파일이 없는지 확인하세요.

배포할 때마다 그 배포만의 가 생기고, 실제 주소는 가장 최근 배포를 보여 줘요. 그래서 공유하기 전에 시험해 볼 수 있어요. myname.com 같은 나만의 은 나중에 대시보드에서 더할 수 있어요.

에게 배포 을 실행하게 해도 되지만, 먼저 명령을 읽고, Cloudflare 은 절대 채팅에 붙여 넣지 마세요.

터미널에 입력할 명령
# Direct Upload — run in the folder that has index.html
npx wrangler login
npx wrangler pages project create my-homepage
npx wrangler pages deploy ./ --project-name=my-homepage

# -> https://my-homepage.pages.dev
# Choose at the start: a Direct Upload project cannot switch to Git integration later.

이 명령은 이 페이지가 아니라 나 서버의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

내 홈페이지가 내 컴퓨터에서 인터넷으로 가는 과정을 세 단계로 설명해 보세요.

설명과 비교하기

1. Wrangler 로 Cloudflare 에 인해요(또는 GitHub 를 연결해요). 2. index.html 이 있는 폴더를 Pages 프로젝트로 올려요. 3. Cloudflare 가 자기 네트워크에서 pages.dev 주소로 보여 주고, 새로 올릴 때마다 실제 버전이 바뀌어요. 로그인, 올리기, 공개 주소가 들어 있으면 다 맞아요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

이란 무엇이고 정적 사이트는 왜 간단한지(5분) → 함께 Wrangler 로 배포하기(15분) → 페이지를 바꾸고 다시 배포하기(10분) → 두 번째 방법으로 GitHub 연결하기(10분).

화면으로 보여 주기

  1. npx wrangler login 과 npx wrangler pages deploy ./ --project-name=demo-homepage 를 실행한 다음, pages.dev 주소를 열어 보세요.
  2. 한 줄을 바꾸고 다시 배포한 다음, 대시보드에서 새 배포와 그 미리보기 주소를 보여 주세요.
  3. .env 를 빼 주는 를 보여 주고, 정적 사이트에는 왜 비밀이 들어가면 안 되는지 설명해 주세요.

학생 활동

  1. 으로 만든 홈페이지를 공개하고 pages.dev 주소를 공유하세요.
  2. 하나를 고친 다음 다시 공개하고, 바뀐 내용이 실제로 반영됐는지 확인하세요.

완료 기준

홈페이지가 pages.dev 주소에서 열리고, 업데이트를 한 번 공개했고, 무엇이 공개되는지 설명할 수 있으면 돼요.

학생이 막힐 때

  • "npx: "가 나올 때: 먼저 Node.js()를 설치하고, 새 터미널을 여세요.
  • 페이지에 가 나올 때: 가 아니라 index.html 이 들어 있는 폴더를 배포하세요.

함께 생각할 질문

  • Direct Upload 와 Git 연동은 어떻게 다를까요?
  • 정적 사이트는 왜 무료로 올려도 안전하지만 비밀을 두기에는 안전하지 않을까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 18 · 중급 · 만들고 공개하기

Google Play: 내 앱을 Android 휴대폰에 올리기

목표

앱을 에 출시하는 단계를 알 수 있어요. 개발자 계정, , , , , 그리고 새 개인 계정의 테스트 규칙까지요.

Google Play 에 출시하려면 세 가지가 필요해요.

  • 개발자 계정 — 한 번 내는 등록비와 본인 확인
  • 로 한 Android App Bundle(.aab)로 만든 앱
  • 스토어 등록 정보 — 이름, 설명, 스크린숏, 아이콘, 주소, 콘텐츠와 에 관한 답변

로 앱을 만든다면(예: ) 를 만들어 달라고 하세요. 서명 키 파일과 그 비밀번호는 과 모든 채팅에서 빼 두세요.

쉽게 이해하기

이렇게 생각해 보세요
에 앱을 올리는 것은 큰 가게 진열대에 내 상품을 올리는 것과 같아요. 가게는 세 가지를 확인해요. 정말 내 상품인지(서명), 상자에 내용물이 잘 보이는지(스크린숏·설명·아이콘), 에 대해 솔직한지(개인정보처리방침)예요. 마지막으로 심사원이 살펴봐요.
예시

에이전트에게 업로드 키로 서명한 출시용 빌드를 만들어 달라고 한 뒤, Play Console에서 스토어 등록 정보를 채우고 데이터 보안 질문에 답하고, 먼저 로 보내 확인해요. 새 개인 계정이면 테스터 12명이 14일 동안 참여하는 비공개 테스트를 거친 뒤에야 을 신청할 수 있어요.

자주 하는 실수
서명 키를 잃어버리거나 Git에 하는 것. 키 파일과 비밀번호는 프로젝트 밖에 두고 안전한 곳에 해요.
앱 상자가 열쇠와 봉인, 카메라와 액자, 방패와 문서, 돋보기와 초록 체크를 든 심사원이 있는 다정한 문 네 개를 지나 밝은 가게 진열대와 휴대폰에 도착한다.
서명·스토어 등록 정보·개인정보·심사 — 앱이 사람들의 휴대폰에 닿기 전에 지나는 네 개의 문이에요.
조금 더 알아보기

출시는 트랙을 거쳐요. 내부 테스트, 비공개 테스트, 공개 테스트, 프로덕션이에요. 새 개인 개발자 계정은 프로덕션 출시를 신청하기 전에, 먼저 테스터 12명 이상이 14일 연속으로 참여를 유지하는 비공개 테스트를 해야 해요. 그러니 테스터를 일찍 계획하세요. 모든 출시는 Google 이 심사하고, 업데이트할 때마다 를 더 높여야 해요. 규칙과 화면은 바뀌니, 이 챕터와 함께 공식 Play Console 도움말을 따라가세요.

터미널에 입력할 명령
# Flutter: build a signed Android App Bundle for Google Play
flutter build appbundle
# -> build/app/outputs/bundle/release/app-release.aab

# Keep the upload key and its passwords out of Git:
#   android/key.properties
#   *.jks

이 명령은 이 페이지가 아니라 나 의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

이것들을 순서대로 놓아 보세요: 프로덕션, 비공개 테스트, 출시용 번들, 스토어 등록 정보.

설명과 비교하기

출시용 번들 → 스토어 등록 정보 → 비공개 테스트(새 개인 계정은 테스터 12명이 14일 동안) → 프로덕션. 번들과 등록 정보는 어느 쪽을 먼저 준비해도 되지만, 테스트는 언제나 프로덕션보다 먼저예요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

앱에서 스토어까지 큰 그림(10분) → 함께 출시용 번들 만들기(15분) → Play Console 등록 정보 둘러보기(15분) → 테스터 12명 비공개 테스트 계획하기(10분).

화면으로 보여 주기

  1. 출시용 빌드 명령(Flutter 라면 appbundle)과 .aab 파일이 생기는 곳을 보여 주세요.
  2. Play Console 을 둘러보세요. 앱 만들기, 스토어 등록 정보, 데이터 보안 양식, 테스트 트랙이에요.
  3. 업로드 키를 어디에 보관하는지, 그리고 왜 절대 커밋하거나 공유하면 안 되는지 보여 주세요.

학생 활동

  1. 내 앱의 스토어 등록 정보를 써 보세요. 이름, 짧은 설명과 자세한 설명, 찍을 스크린숏 목록이에요.
  2. 테스터 계획을 세우세요. 12명, 어떻게 초대할지, 14일 동안 어떻게 테스트에 남아 있게 할지 적어요.

완료 기준

출시용 번들부터 프로덕션까지의 단계를 말하고, 트랙과 비공개 테스트 규칙을 설명할 수 있으며, 등록 정보 초안과 테스터 계획이 있으면 돼요.

학생이 막힐 때

  • 개발자 계정이 없거나 나이가 안 될 때: 등록 정보와 테스터 계획으로 연습하세요. 계정은 부모님이나 학교가 가질 수 있어요.
  • 때문에 업로드가 거절될 때: 버전 코드를 올리세요(Flutter 는 에서 + 뒤의 숫자).

함께 생각할 질문

  • 새 개인 계정은 왜 프로덕션 전에 비공개 테스트를 해야 할까요?
  • 업로드 키를 잃어버리면 어떻게 되고, 어떻게 지켜야 할까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 19 · 중급 · 만들고 공개하기

App Store: 내 앱을 iPhone 에 올리기

목표

iPhone 앱을 출시하는 단계를 알 수 있어요. , , , , , 그리고 가장 흔한 거절 이유까지요.

에 출시하려면 세 가지가 필요해요.

  • 가 있는
  • Apple Developer Program 회원 자격(해마다 내는 회비)
  • App Store Connect 에 있는 내 앱의 기록 — , 이름, 스크린숏, 주소, 앱이 모으는 에 대한 개인정보 내용

Xcode 에서(또는 ipa 같은 도구로) 앱을 하고 업로드해요. 자동 서명을 켜 두면 서명 와 은 Xcode 가 알아서 처리해 줘요.

쉽게 이해하기

이렇게 생각해 보세요
App Store도 와 같은 생각이고, 문만 Apple의 것이에요. Xcode가 있는 Mac, 해마다 내는 개발자 회원 자격, 앱의 이름표인 번들 ID, App Store Connect의 앱 기록이 필요해요. 점검표가 다른 두 번째 가게라고 생각하세요.
예시

Xcode(또는 빌드 도구)로 앱을 아카이브해 올리고, TestFlight로 친구 몇 명을 초대해요. 피드백을 고친 뒤 개인정보 내용과 스크린숏을 채워 심사를 신청해요.

자주 하는 실수
임시 스크린숏, 망가진 인, 빠진 개인정보처리방침으로 제출하는 것. 설명과 다른 앱은 거절되니, 보내는 바로 그 빌드를 시험해요.
앱 상자가 열쇠와 봉인, 카메라와 액자, 방패와 문서, 돋보기와 초록 체크를 든 심사원이 있는 다정한 문 네 개를 지나 밝은 가게 진열대와 휴대폰에 도착한다.
Google Play와 같은 네 개의 문을 Apple의 도구로 지나요 — Xcode 서명, App Store Connect 등록 정보, 개인정보 내용, App Review.
조금 더 알아보기

업로드한 빌드는 모두 먼저 TestFlight 로 보낼 수 있어서, 일반 사용자보다 테스터가 먼저 설치해 볼 수 있어요. 출시를 위해 제출하면 Apple 의 앱 심사가 앱을 가이드라인에 비추어 확인해요. 흔한 거절 이유는 이래요.

  • 앱이 멈추거나 임시 내용이 들어 있어요.
  • 개인정보 내용이 빠졌어요.
  • 로그인이 있는데 심사자용 계정이 없어요.
  • 다른 회사 로그인이 있는데, 처럼 그에 맞먹는 개인정보 보호형 선택지가 없어요.
  • 웹사이트를 앱으로 감싸기만 해서 할 수 있는 일이 거의 없어요(최소 기능 규칙, 가이드라인 4.2).

거절 메시지를 읽고, 바로 그것을 고쳐서 다시 제출하세요.

터미널에 입력할 명령
# Flutter on a Mac with Xcode: build the iOS archive for App Store Connect
flutter build ipa
# -> build/ios/archive/Runner.xcarchive  (open it in Xcode)
# -> Xcode: Distribute App -> App Store Connect -> TestFlight first
# A website only wrapped in an app can be rejected (App Review Guidelines 4.2 — minimum functionality)

이 명령은 이 페이지가 아니라 나 의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

"앱이 시작할 때 멈췄다"는 이유로 앱이 거절됐어요. 어떻게 하나요?

설명과 비교하기

순서는 이래요.

  • 같은 의 실제 iPhone 이나 TestFlight 에서 똑같이 일어나게 해 봐요.
  • 멈추는 문제를 고치고 를 올려요.
  • 새 빌드를 업로드해요.
  • App Store Connect 에서 무엇을 고쳤는지 답장해요.

고치기, 다시 업로드하기, 답장하기가 핵심 단계예요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

Apple 의 길: 계정 → 빌드 → TestFlight → 심사(10분) → 함께 아카이브하고 업로드하기(15분) → App Store Connect 등록 정보(15분) → 거절 이유와 답하는 법(10분).

화면으로 보여 주기

  1. Xcode 에서 Product → Archive 를 고른 다음, Distribute App → App Store Connect 를 고르세요.
  2. App Store Connect 에서 TestFlight 탭을 보여 주고, 내부 테스터를 더한 다음, 휴대폰에 빌드를 설치하세요.
  3. 실제 같은 거절 메시지를 함께 읽고, 고칠 점과 답장을 써 보세요.

학생 활동

  1. 등록 정보 초안을 채워 보세요. 이름, 부제, 설명, 키워드, 개인정보처리방침 주소, 심사자용 데모 계정이에요.
  2. 흔한 거절 이유 다섯 가지에 비추어 내 앱을 확인하고, 고칠 점을 적어 보세요.

완료 기준

아카이브, 업로드, TestFlight, 심사를 순서대로 설명할 수 있고, 체크리스트에 흔한 거절 이유가 들어 있으면 돼요.

학생이 막힐 때

  • Mac 이나 회원 자격이 없을 때: 등록 정보와 체크리스트로 연습하고, 앱은 나 웹에서 시험하세요.
  • 서명 오류로 업로드가 실패할 때: Xcode 에서 자동 서명을 켜고 내 팀을 고르세요.

함께 생각할 질문

  • 심사를 위해 제출하기 전에 왜 TestFlight 로 시험해야 할까요?
  • 앱에 로그인이 있으면 Apple 은 왜 데모 계정을 달라고 할까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 20 · 고급 · AI 에이전트

에이전트와 서브 에이전트: AI 가 한 단계씩 일하는 방법

목표

의 반복(살펴보기, 생각하기, 행동하기, 되풀이하기)과 에이전트를 이루는 네 가지를 설명할 수 있어요. 를 에 따라 , , , 에이전트라고 부르는 까닭도 설명할 수 있어요. 에이전트가 가진 도구와 , 그리고 가 언제 에게 일을 넘기는지도 설명할 수 있어요.

에이전트(Agent)는 목표를 받으면 스스로 판단하고, 도구를 써서 행동하고, 그 결과를 보고 다음 행동을 정하는 시스템이에요. 은 질문 하나에 답 하나를 내고 끝나요. 에이전트는 일이 끝나거나 내 도움이 필요할 때까지 이 반복을 스스로 되풀이해요.

  • 살펴보기 — 파일 내용, 검색 결과, 를 읽어 지금 상황을 알아요.
  • 생각하기 — 이 다음에 무엇을 할지 정해요.
  • 행동하기 — 도구를 써요(파일 고치기, 실행, 부르기, 조작).
  • 되풀이하기 — 결과를 보고, 목표를 이룰 때까지 다시 해요.

에이전트는 네 가지로 이루어져요. 생각하는 두뇌인 언어 모델(), 바깥 세상에 손을 뻗는 도구(요즘은 로 많이 이어요), 지금까지 한 일을 , 언제 일이 끝났는지 판단하는 목표와 이에요. 에이전트의 힘은 도구에서 나오고, 한계는 권한에서 나와요. 권한은 묻지 않고 무엇을 읽고, 바꾸고, 실행해도 되는지예요. 클로드 코드, , 는 모두 이 반복으로 일해요. , 설정, 명령은 다르지만 기본 반복은 같아요.

Agent(에이전트)와 (에이전틱)은 뜻이 달라요.

  • Agent — 명사예요. 그 자체로 일을 끝까지 완전히 마무리하는 것을 말해요.
  • Agentic — 형용사예요. 인공지능으로 생각하고 결정하는 과정을 가지지만, 인공지능만으로는 완전한 결말을 짓지 못하는 도구를 꾸며요. Agentic Tool, Agentic , Agentic Music Generator 처럼 붙여 써요.

그러면 클로드 코드는 도구일까요, 에이전트일까요? 답은 하나가 아니에요. 무엇을 가리키는지, 어떻게 쓰는지, 어떤 대화인지에 따라 네 이름이 모두 맞아요.

  • 도구(tool) — 제품을 부를 때예요. 만든 은 "Claude Code is an agentic tool"(클로드 코드는 도구)이라고 소개해요. 한 단계씩 묻고 승인하며 쓰면 똑똑한 코딩 도구처럼 느껴져요.
  • 하네스(harness) — 자체를 가리킬 때예요. 클로드 코드 공식 용어집은 "클로드 코드는 하네스이고, 는 그 안의 모델"이라고 해요. 하네스는 모델에게 파일 읽기·쓰기, 실행, 권한 확인, 메모리 불러오기, 행동을 잇는 반복을 줘요.
  • 에이전틱 시스템(agentic system) — 설계를 이야기할 때예요. Anthropic 은 언어 모델과 도구를 이은 시스템을 모두 이렇게 묶어 불러요. 정해진 순서대로 도는 와, 모델이 스스로 순서를 정하는 에이전트가 모두 여기에 들어가요.
  • 에이전트(agent) — 하네스와 모델이 함께 돌아가는 모습을 가리킬 때예요. 큰 목표를 맡기고 승인을 자동으로 두면 스스로 파일을 찾고, 고치고, 하는 에이전트로 일해요. 클로드 코드를 움직이는 하네스를 떼어 낸 것이 (옛 이름 Claude Code SDK)이고, 같은 하네스로 코딩이 아닌 에이전트도 만들어요.

쉽게 이해하기

이렇게 생각해 보세요
에이전트는 일을 처리해 가는 성실한 인턴과 같아요. 목표를 읽고, 다음 단계를 정하고, 도구를 쓰고, 결과를 보고 다시 정해요. 권한은 집의 이에요 — 인턴이 나에게 묻지 않고 열어 보고, 바꾸고, 실행해도 되는 범위예요.
예시

“테스트가 왜 실패하는지 찾아서 고쳐 줘.” 에이전트는 테스트 파일을 읽고, 테스트를 실행하고, 오류를 보고, 코드를 열어 고친 뒤 다시 테스트해요. 한 단계가 바퀴 한 바퀴예요. 서브 에이전트는 첫 인턴이 일하는 동안 두 번째 인턴을 보내 문서를 찾게 하는 것과 같아요.

자주 하는 실수
첫날부터 모든 권한을 주는 것. 처음에는 읽고 제안만 하게 하고, 명령은 하나씩 허락하고, 내가 이해하는 일에만 권한을 넓혀요.
원형 화살표 가운데 로봇이 있고, 목표 깃발·계획이 든 생각 구름·공구 벨트·결과를 보는 눈, 네 정거장이 있다. 바퀴를 울타리와 문이 둘러싸고, 문 앞의 사람이 초록 표지와 빨간 표지를 들고 있다.
목표 → 다음 단계 계획 → 도구 사용 → 결과 보기 → 다시. 에이전트가 무엇을 해도 되는지는 문 앞의 내가 정해요.
조금 더 알아보기

기술 용어로 도구(tool)는 모델이 부르는 것이에요. 파일 읽기(Read), 명령 실행(Bash), 파일 고치기(Edit) 같은 것이죠. 하네스(harness)는 거꾸로 모델을 불러요 — 모델이 "이 파일을 읽어 줘"라고 요청하면 하네스가 실행하고 결과를 돌려줘요. 그래서 엄밀하게 말할 때 클로드 코드 프로그램은 도구가 아니라 하네스예요. 일상 대화에서 "AI 도구"라고 부르는 것과 섞지 마세요.

서브 에이전트는 메인 에이전트가 일의 한 부분을 맡기려고 시작하는 도우미예요. 서브 에이전트는 자기만의 새 을 가져요. 그래서 파일을 많이 읽거나 넓게 검색한 뒤 결론만 보고하고, 메인 대화는 짧게 유지돼요. 서로 관계없는 부분이라면 여러 개가 동시에 일할 수도 있어요.

  • 어디에 있나 — 클로드 코드에서는 이름, 설명, 허용된 도구, 지시가 담긴 파일이에요. (프로젝트용)나 ~/.claude/agents/(나 전용)에 둬요.
  • 어떻게 쓰나 — 좁은 일과 꼭 필요한 도구만 주세요. 그 보고도 내가 확인해야 할 초안이에요.

내 말로 설명해 보기

내 프로젝트에 파일이 300개 있고, 인 코드가 어디 있는지 알고 싶어요. 왜 서브 에이전트를 쓰는 게 좋을까요?

설명과 비교하기

파일을 많이 읽으면 컨텍스트 창이 가득 차요. 서브 에이전트는 자기만의 새 컨텍스트에서 검색하고 "로그인 코드는 이 세 파일에 있어요"만 돌려줄 수 있어서, 메인 대화가 짧고 집중된 채로 유지돼요. 서브 에이전트는 아무것도 바꿀 수 없어서 안전하기도 해요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

학생 한 명이 "에이전트"가 되어 에이전트 반복을 연기해 보기(10분) → 실제 에이전트의 지켜보기(10분) → 서브 에이전트 파일 쓰기(20분) → 언제 쓰지 말아야 할지 이야기하기(10분).

화면으로 보여 주기

  1. 에게 작은 일을 주고, 계획, 도구 호출, 결과, 다음 결정의 각 단계를 짚어 주세요.
  2. 에이전트에게 프로젝트 전체에서 무언가 하나를 찾아 달라고 하고, 에이전트가 그 검색을 읽기 전용 서브 에이전트에게 넘기는 모습을 보여 주세요.
  3. .claude/agents/ 에 있는 서브 에이전트 파일을 열고 이름, 설명, 도구, 지시를 읽어 보세요.

학생 활동

  1. 내 일(예를 들어 "내 홈페이지의 깨진 링크 고치기")에 대한 에이전트 반복을, 쓰게 될 도구를 모두 넣어 그려 보세요.
  2. 읽기 전용 검토 서브 에이전트를 써 보세요. 언제 쓰는지에 대한 설명, 읽기로만 제한한 도구, 세 줄짜리 체크리스트가 들어가요.

완료 기준

반복, 도구와 권한의 역할, 서브 에이전트가 왜 자기만의 컨텍스트를 가지는지 설명할 수 있고, 작동하는 서브 에이전트 파일이 있으면 돼요.

학생이 막힐 때

  • 서브 에이전트가 한 번도 쓰이지 않을 때: 언제 써야 하는지를 요청에 나오는 말로 설명에 정확하게 적으세요.
  • 에이전트가 한꺼번에 너무 많이 할 때: 먼저 계획을 달라고 하고, 한 번에 한 단계씩 승인하세요.

함께 생각할 질문

  • 챗봇의 답과 에이전트의 반복은 어떻게 다를까요?
  • 서브 에이전트에게는 왜 메인 에이전트보다 적은 도구를 줄까요?
출처와 더 읽을거리

제품 정보는 2026-10-19 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 21 · 고급 · AI 에이전트

Codex: OpenAI 의 코딩 에이전트

목표

에게 파일, 기대하는 동작, 확인 방법이 분명한 일을 맡기고, 변경을 남기기 전에 검토할 수 있어요.

Codex 는 의 코딩 에이전트예요. (Codex CLI), , 앱에서 작동하고, 내 프로젝트를 읽고, 파일을 고치고, 을 실행해서 자기 작업을 시험해요.

프로젝트 맨 위 폴더에 있는 파일의 지시를 따르기 때문에, 예를 들어 를 실행하는 명령 같은 규칙을 한 번만 적어 두면 돼요. Codex 는 위험한 동작을 하기 전에 허락을 구해요. 스스로 어디까지 해도 되는지는 읽기만 하기부터 작업 폴더 고치기까지 내가 정해요.

쉽게 이해하기

이렇게 생각해 보세요
Codex는 터미널, 코드 편집기, ChatGPT 앱 여러 곳에서 쓰는 코딩 에이전트예요. AGENTS.md는 새로 오는 도우미 모두가 보는 냉장고 메모와 같아요. 집의 규칙과 실행할 명령을 한 번 적어 두면 매번 읽어요.
예시

AGENTS.md에 “테스트는 test로 실행. 의 파일은 고치지 않기.”라고 적어요. 그다음 Codex에게 “에 를 넣고 테스트가 통과하게 해 줘”라고 해요. 메모를 읽고 고친 뒤, 다 됐다고 말하기 전에 npm test를 실행해요.

자주 하는 실수
질문이 귀찮아서 전체 으로 바꾸는 것. 그 질문이 잘못된 명령을 실행 전에 잡을 기회예요.
조금 더 알아보기

좋은 코딩 요청은 구체적이에요. 무엇을, 어느 파일에서 바꾸는지, 바꾼 뒤 어떻게 동작해야 하는지, 어떻게 확인하는지(테스트, 명령, 의 예)를 말해요. 큰 일이라면 먼저 계획을 달라고 하세요. Codex 가 일을 끝내면 를 읽고, 테스트를 직접 실행하고, 내가 이해한 것만 하세요. 는 대화 화면 없이 일을 실행해서 안에서 쓰기 좋아요. Codex CLI 는 이고 은 그 안의 모델이에요. 하네스는 다음 챕터 "하네스"에서 더 자세히 배워요.

내 말로 설명해 보기

"내 코드 좀 좋게 만들어 줘"를 Codex 가 실행하고 확인할 수 있는 요청으로 다시 써 보세요.

설명과 비교하기

예를 들면 "word_count.py 에서 count_words 가 문장 부호와 대문자를 무시하게 해 줘. 함수 이름은 그대로 둬. 'Hello, hello!' 를 고유한 단어 하나로 세는 테스트를 더해 줘. -m 를 실행하고 결과를 보여 줘." 파일, 동작, 확인 방법을 모두 밝히고 있어요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

가 하는 일(5분) → 분명한 요청으로 실시간 작업하기(15분) → 학생이 Codex 에게 작은 일 맡기기(20분) → diff 함께 검토하기(10분).

화면으로 보여 주기

  1. ai-course 폴더에 규칙 하나를 담은 AGENTS.md 를 써 보세요. 예를 들어 "변경할 때마다 python -m pytest 를 실행할 것." 같은 규칙이에요.
  2. Codex 에게 테스트가 딸린 작은 스크립트를 부탁하고, 단계마다 승인하며 테스트가 실행되는 모습을 보여 주세요.
  3. diff 를 열고 커밋하기 전에 바뀐 줄을 하나하나 함께 살펴보세요.

학생 활동

  1. 파일, 동작, 확인 방법을 밝힌 일을 Codex 에게 맡기세요. 예를 들어 글의 단어 수를 세는 함수와 그 테스트예요.
  2. diff 를 검토하고 테스트를 직접 실행한 다음, 변경 내용을 설명하는 메시지로 커밋하세요.

완료 기준

학생의 커밋에 작동하는 코드와 테스트가 들어 있고, 바뀐 줄을 하나하나 설명할 수 있으면 돼요.

학생이 막힐 때

  • Codex 가 부탁한 것보다 많이 바꿀 때: 멈추게 하고 로 되돌린 뒤, 정확한 파일 이름을 밝혀 다시 요청하세요.
  • 인이나 요금제 문제가 있을 때: ChatGPT 계정으로 로그인하세요. 내 요금제에 Codex 가 없다면 시연을 보며 따라가고, 강사의 diff 를 검토하는 연습을 하세요.

함께 생각할 질문

  • 좋은 코딩 요청에는 항상 무엇이 들어가야 할까요?
  • 테스트를 통과했는데도 왜 diff 를 읽어야 할까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 22 · 고급 · AI 에이전트

하네스: 모든 프롬프트는 하네스를 사용해요

목표

··의 세 관점으로 간단한 도 를 사용하는 이유를 설명할 수 있어요.

하네스의 모든 설명 — 세 관점(Codex·클로드 코드·LangChain)의 원문, 그림, "hello" 한 단어가 도는 길, 기본 내장·와 — 은 하네스 화면에 모았어요. 아래 링크로 그 화면을 열어 함께 읽고, 이 챕터의 스스로 설명으로 수업을 마무리하세요.

하네스 화면에서 배우기

이 챕터의 설명은 그 화면 한 곳에 모았어요. 수업에서는 그 화면을 함께 열고, 진도는 아래 단추로 여기에 남겨요.

내 말로 설명해 보기

Codex에 인사 한 번만 보내도 하네스를 사용할까요? 그림과 출처 하나로 설명해 보세요.

설명과 비교하기

네. 인사가 Codex 하네스가 제공하는 에이전트 루프를 시작해요. 뒤 바로 답해도 되며, 은 선택 사항이에요. 인사는 입력이고 하네스는 그 입력을 처리하는 시스템이에요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

세 원문 읽기 → 그림의 흐름 따라가기 → 바로 답변과 사용 비교 → 내 말로 핵심 설명하기.

화면으로 보여 주기

  1. Codex에 짧은 인사를 보내고, 그림에서 사용자 입력·모델 추론·답변을 차례로 짚어 주세요.
  2. 클로드 코드에 파일 설명을 요청하고, 모델의 판단과 하네스가 제공하는 파일 접근을 구분해 주세요.
  3. LangChain 원문에서 ·도구·실행 기반·작업 조정·을 찾아 주세요.

학생 활동

  1. 짧은 인사와 파일 읽기 요청이 각각 어떻게 하네스를 사용하는지 설명하세요.
  2. 모델·시스템 프롬프트· 도구· 확인을 세 출처의 관점으로 분류하세요.

완료 기준

짧은 프롬프트도 하네스를 사용한다고 설명하고, 모델·프롬프트·실행 시스템을 구분하며 출처로 근거를 댈 수 있으면 돼요.

학생이 막힐 때

  • 이름이 헷갈리면 답을 생성하는 모델과 루프·도구를 실행하는 시스템으로 나눠 보세요.
  • 제품 계정이 없으면 그림·공식 원문·강사의 시연으로 같은 흐름을 확인하세요.

함께 생각할 질문

  • 도구 호출 없이 바로 답해도 하네스를 사용하는 까닭은 무엇인가요?
  • 하네스와 함께 한 모델은 왜 도구 이 바뀌면 성능이 달라질 수 있나요?
출처와 더 읽을거리

제품 정보는 2026-10-21 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 23 · 고급 · AI 에이전트

클로드 코드 1: 프로젝트를 준비하고 오래 가는 지시 주기

목표

프로젝트에서 를 시작하고, 에 오래 가는 지시를 적고, 으로 무엇을 해도 되는지 정할 수 있어요.

클로드 코드는 의 ( tool)예요. 에 따라 도구, , , 라고 모두 불러요(언제 무엇이라 부르는지는 에이전트와 챕터에 있어요). 에서 실행되고, , , 웹에서도 쓸 수 있어요. 프로젝트 폴더에서 라고 입력하면 시작돼요. 코드를 읽고, 코드에 대한 질문에 답하고, 파일을 고치고, 을 실행해요.

프로젝트 맨 위 폴더의 CLAUDE.md 파일은 을 시작할 때마다 읽혀요. 여기에 이것을 적으세요.

  • 프로젝트의 목적
  • 와 명령
  • 내

명령을 쓰면 프로젝트를 읽고 CLAUDE.md 초안을 대신 써 줘요.

쉽게 이해하기

이렇게 생각해 보세요
클로드 코드는 세션을 시작할 때마다 CLAUDE.md를 읽어요. 새 팀원이 첫날 아침 프로젝트 안내서를 읽는 것과 같아요. 프로젝트가 무엇인지, 빌드·테스트 방법, 내 규칙을 짧고 분명하게 적으면 같은 말을 되풀이하지 않아도 돼요.
예시

프로젝트에서 /init을 실행하면 클로드 코드가 둘러보고 첫 CLAUDE.md를 써요. 읽어 보고 틀린 것은 지우고 “메시지는 한국어로”, “일이 끝났다고 하기 전에 테스트 실행” 같은 내 규칙 두 줄을 더해요.

자주 하는 실수
책 한 권만큼 긴 CLAUDE.md를 쓰는 것. 긴 지시는 대충 읽혀요. 매일 중요한 규칙만 두고 나머지는 ( 챕터에서 배워요)이나 따로 된 문서로 옮겨요.
조금 더 알아보기

클로드 코드는 파일을 고치거나 명령을 실행하기 전에 물어보고, 나는 그 동작을 한 번만, 이번 세션 동안, 또는 항상 허락할지 정해요. 은 에 있고, 에서는 클로드 코드가 아무것도 바꾸지 않고 읽고 계획만 제안해요. 처음에는 엄격하게 시작해서 믿을 수 있는 것만 풀어 주고, 이해하지 못한 명령은 절대 허락하지 마세요.

내 말로 설명해 보기

작은 숙제 프로젝트의 CLAUDE.md 에 넣을 세 줄을 써 보세요.

설명과 비교하기

예를 들면 "목적: Python 수업 숙제 문제. 테스트: 변경할 때마다 python -m 를 실행할 것. 규칙: 함수는 짧게 쓰고 함수마다 주석으로 설명할 것." 목적, 테스트 명령, 규칙이 있으면 맞아요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

설치 확인과 첫 실행(10분) → /init 으로 CLAUDE.md 만들기(10분) → 권한과 계획 모드(10분) → 학생이 자기 프로젝트 준비하기(20분).

화면으로 보여 주기

  1. ai-course 폴더에서 claude 를 시작하고 "이 프로젝트에는 무엇이 있어?"라고 물어보세요.
  2. /init 을 실행한 다음, 만들어진 CLAUDE.md 를 고쳐서 테스트에 관한 규칙 하나를 더하세요.
  3. 을 눌러 계획 모드로 바꾸고 변경을 부탁한 뒤, 계획을 승인하기 전까지는 아무것도 고쳐지지 않는다는 것을 보여 주세요.

학생 활동

  1. ai-course 폴더에서 클로드 코드를 시작하고, 목적, 테스트 명령, 규칙 두 개를 담은 CLAUDE.md 를 쓰세요.
  2. 계획 모드에서 클로드 코드에게 변경을 부탁하고, 승인하지 말고 계획만 읽어 보세요.

완료 기준

학생의 프로젝트에 테스트 명령과 규칙이 담긴 CLAUDE.md 가 있고, 계획 모드가 무엇을 하는지 설명할 수 있으면 돼요.

학생이 막힐 때

  • "claude: "가 나올 때: 11단원의 설치 확인을 다시 하고 터미널을 다시 여세요.
  • 권한을 너무 자주 물을 때: 테스트 실행처럼 안전한 명령만 "항상" 허락하고, 파일 삭제는 절대 허락하지 마세요.

함께 생각할 질문

  • CLAUDE.md 에는 무엇을 적어야 하고, 왜 세션마다 읽힐까요?
  • 계획 모드는 언제 쓰면 좋을까요?
출처와 더 읽을거리

제품 정보는 2026-10-19 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 24 · 고급 · AI 에이전트

클로드 코드 2: 계획하고, 바꾸고, 테스트하고, 검토하기

목표

로 일 한 바퀴를 끝까지 돌릴 수 있어요. 목표를 설명하고, 계획을 검토하고, 를 바꾸고 하게 한 뒤, 결과를 검토해서 남기거나 되돌려요.

와 잘 일하는 방법은 한 바퀴를 도는 순서를 따르는 거예요. 목표와 확인 방법을 설명하세요. 파일이 바뀌기 전에 계획을 읽고 고치세요. 가 코드를 고치고 테스트를 실행하게 하세요. 를 직접 읽으세요. 해서 변경을 남기거나 되돌리세요. 거대한 요청 하나보다 작은 바퀴 여러 번이 나아요. 한 바퀴씩 확인하기 쉽기 때문이에요.

쉽게 이해하기

이렇게 생각해 보세요
코딩 에이전트와 일하는 것은 맛을 보며 요리하는 것과 같아요. 요리를 정하고, 계획을 읽고, 한 단계만 익히고, 맛을 본(테스트) 뒤에야 다음으로 가요. 작은 바퀴는 확인하기도 되돌리기도 쉬워요.
예시

1바퀴: “검색 상자를 넣는 계획을 세워 줘. 아직 파일은 고치지 마.” 계획을 고쳐요. 2바퀴: “1단계를 하고 테스트를 실행해 줘.” diff를 읽고 커밋해요. 3바퀴: 다음 단계. 짧은 세 바퀴가 거대한 요청 하나보다 나아요.

자주 하는 실수
diff를 읽지 않고 “좋아 보여”라고 하는 것. diff에는 바뀐 것이 정확히 보여요 — 건드릴 줄 몰랐던 파일까지요.
왼쪽: 걱정스러운 인물이 거대한 배낭을 메고 협곡을 한 번에 뛰어넘으려 한다. 오른쪽: 같은 인물이 작은 징검돌을 차분히 건너고, 돌마다 계획·고치기·테스트·검토의 작은 바퀴와 저장 깃발이 있다.
계획 → 고치기 → 테스트 → 검토 → 커밋을 작은 바퀴로. 한 바퀴씩 확인하고 되돌리기 쉬워요.
조금 더 알아보기

에이전트가 스스로 확인할 방법을 주세요. 테스트, 꼭 성공해야 하는 , 올바른 출력의 예 같은 것이에요. 이 엉뚱한 방향으로 가면 를 눌러 멈추고 무엇이 틀렸는지 말하거나, 으로 되돌리고 새로 요청하세요. 세션이 길어지면 헷갈리는 이 쌓이니 로 깨끗하게 다시 시작하세요. 자주 반복하는 일은 단계를 로 저장하세요( 챕터를 보세요). 확인할 수 있는 이 있는 긴 일은 로 맡기면 기준을 채울 때까지 계속 일해요(Goal 과 챕터를 보세요).

내 말로 설명해 보기

다음을 순서대로 놓아 보세요. diff 읽기, 목표와 확인 방법 설명하기, 커밋하기, 계획 승인하기, 테스트 실행하기.

설명과 비교하기

목표와 확인 방법 설명하기 → 계획 승인하기 → (에이전트가 코드를 바꾸고) 테스트 실행하기 → diff 읽기 → 커밋하기.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

칠판에서 다섯 단계 한 바퀴 보기(5분) → 작은 기능으로 실시간 한 바퀴 돌기(15분) → 학생이 자기 프로젝트에서 두 바퀴 돌기(20분) → 에이전트가 틀린 것 하나씩 나누기(10분).

화면으로 보여 주기

  1. "글에서 가장 많이 나온 단어를 돌려주는 함수를 테스트와 함께 더해 줘. 먼저 계획을 보여 줘."라고 부탁하고, 계획에서 한 가지를 고쳐 보세요.
  2. 코드를 고치고 테스트를 실행하게 두세요. 테스트가 실패하면 에이전트가 오류를 읽고 코드를 고치는 모습을 보여 주세요.
  3. git diff 를 검토하고 커밋하세요. 그다음 일부러 잘못된 변경을 하고 로 되돌려 보세요.

학생 활동

  1. 내 프로젝트에서 한 바퀴를 끝까지 돌아 보세요. 확인 방법이 있는 목표, 계획, 변경, 테스트, diff, 커밋이에요.
  2. 첫 바퀴의 결과를 개선하는 두 번째 바퀴를 돌고, 계획에서 무엇을 고쳤는지 한 문장으로 적어 보세요.

완료 기준

학생의 Git 기록에 한 바퀴씩 돌아 만든 커밋이 두 개 있고, 각각 테스트를 통과했으면 돼요.

학생이 막힐 때

  • 에이전트는 테스트를 통과했다는데 실제로는 실패할 때: 테스트 명령을 직접 실행하고, 요약이 아니라 출력을 믿으세요.
  • 대화가 엉킬 때: 지금까지의 작업을 커밋하거나 되돌리고, /clear 를 쓴 뒤 짧고 정확한 요청으로 다시 시작하세요.

함께 생각할 질문

  • 큰 요청 하나보다 작은 바퀴 여러 번이 왜 나을까요?
  • 에이전트가 엉뚱한 방향으로 가면 어떻게 하나요?
출처와 더 읽을거리

제품 정보는 2026-10-26 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 25 · 고급 · AI 에이전트

Antigravity CLI(agy): 내 터미널 속 Google 의 에이전트

목표

로 Google 의 를 시작하고 일을 맡길 수 있어요. · 와 비교하고, 여러 가 서로를 확인하게 할 수 있어요.

Antigravity CLI 는 에서 쓰는 Google 의 에이전트예요. 공식 페이지의 를 실행한 다음 agy 으로 시작해요. Google 은 예전 사용자를 위한 이전 안내서도 내놓았어요.

Google 의 을 쓰고, 다른 에이전트와 똑같이 작동해요.

  • 프로젝트 폴더에서 실행해요.
  • 일을 설명해요.
  • 계획과 명령을 승인하면, 에이전트가 파일을 읽고 고쳐요.

처음 실행하면 가 열려서 Google 계정으로 인할 수 있어요. 일의 여러 부분을 도우미 에이전트 여러 개에게 한꺼번에 보낼 수도 있어요.

쉽게 이해하기

이렇게 생각해 보세요
Antigravity CLI는 터미널에 사는 또 하나의 , Google의 에이전트예요. 에이전트 하나를 익히면 다른 것도 낯설지 않아요. 다른 차를 운전하는 것처럼 페달 자리는 같고 버튼과 설정만 조금 달라요.
예시

프로젝트 폴더에서 agy를 시작하고, 처음 한 번 Google 계정으로 로그인한 뒤, Codex나 클로드 코드에 맡겼던 것과 같은 종류의 일을 맡겨 봐요. 같은 일에 대해 에이전트들이 세운 계획을 비교해 봐요.

자주 하는 실수
예전 Gemini CLI 안내서를 그대로 따라 하는 것. 도구와 명령은 바뀌니, 설치와 로그인 방법은 공식 페이지에서 지금 것을 확인해요.
조금 더 알아보기

모델마다 잘하는 것과 놓치는 것이 달라서, 에이전트 세 가지를 알아 두면 쓸모가 있어요. 좋은 습관은 이에요. 한 에이전트에게 변경을 맡기고 다른 에이전트에게 검토를 맡기거나, 여러 에이전트에게 같은 문제를 따로 분석하게 해서 비교하세요. 의견이 갈리는 곳은 내가 직접 파일을 열어 보고 결정하세요. 모든 에이전트가 같은 지시를 따르도록, 많은 에이전트가 읽는 AGENTS.md 에 같은 프로젝트 규칙을 두세요.

내 말로 설명해 보기

두 에이전트가 의 원인에 대해 의견이 달라요. 누가 맞는지 어떻게 정하나요?

설명과 비교하기

각자 내놓은 증거, 즉 파일과 줄, 를 보고 직접 확인해요. 코드를 실행하고, 그 줄을 읽고, 작은 를 써 봐요. 에이전트 하나만 말했더라도 실제 동작과 맞는 답이 이겨요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

세 에이전트 나란히 보기: 클로드 코드, Codex, agy(10분) → agy 설치하고 로그인하기(10분) → 같은 작은 일을 두 에이전트에게 맡기기(20분) → 비교하고 결정하기(10분).

화면으로 보여 주기

  1. 연습 프로젝트에서 agy 를 실행하고 프로젝트 구조를 설명해 달라고 해 보세요.
  2. 같은 버그를 agy 와 클로드 코드 또는 Codex 에게 주고, 두 계획을 비교해 보세요.
  3. 한 에이전트에게 다른 에이전트의 변경을 검토해 달라고 하고, 둘 중 어떻게 결정하는지 보여 주세요.

학생 활동

  1. 내 프로젝트 규칙을 담은 AGENTS.md 를 쓰고, 두 에이전트가 그것을 따르는지 확인하세요.
  2. 두 에이전트에게 같은 일을 하나 맡기고 짧은 표를 쓰세요. 각자 무엇을 했는지, 무엇이 더 나았는지, 무엇이 틀렸는지 적어요.

완료 기준

프로젝트에서 agy 를 실행해 봤고, 같은 일로 두 에이전트를 비교했고, 교차 검증이 왜 실수를 잡아내는지 설명할 수 있으면 돼요.

학생이 막힐 때

  • agy 가 시작되지 않거나 로그인이 안 될 때: 공식 설치 페이지를 확인하고, 브라우저에서 Google 계정으로 로그인하세요.
  • 에이전트들이 다른 답을 낼 때: 그게 바로 핵심이에요. 에이전트들이 가리키는 파일을 열고, 다수결이 아니라 증거로 결정하세요.

함께 생각할 질문

  • 서로 다른 에이전트 둘은 왜 하나보다 실수를 더 많이 찾을 수 있을까요?
  • 여러 에이전트를 쓸 때는 왜 규칙을 AGENTS.md 에 둘까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 26 · 고급 · AI 에이전트

Agent Skills: AI 에이전트에게 반복하는 일 가르치기

목표

가 반복하는 일을 매번 같은 방법으로 하도록 파일을 읽고 쓰며, 언제 쓰이는지 시험할 수 있어요.

의 모든 설명 — 무엇인가, 어떻게 동작하나, SKILL.md , 첫 만들기, 잘 만드는 요령, SONUB 스킬 설치 — 은 에이전트 스킬 화면에 모았어요. 아래 링크로 그 화면을 열어 함께 읽고, 이 챕터의 스스로 설명으로 수업을 마무리하세요.

에이전트 스킬 화면에서 배우기

이 챕터의 설명은 그 화면 한 곳에 모았어요. 수업에서는 그 화면을 함께 열고, 진도는 아래 단추로 여기에 남겨요.

내 말로 설명해 보기

회의 메모를 할 일 목록으로 바꾸는 스킬의 설명을 써 보세요.

설명과 비교하기

예를 들면 "회의 메모를 담당자와 마감일이 있는 번호 붙은 할 일 목록으로 바꿔요. 사용자가 회의에서 나온 할 일이나 할 일 목록을 달라고 할 때 써요. 회의록 전체를 쓰는 데는 쓰지 않아요." 무엇을 하는지, 언제 쓰는지, 무엇에는 쓰지 않는지를 말하고 있어요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

스킬이 무엇이고 어디에 있는지(10분) → 실제 스킬을 함께 읽기(10분) → 학생이 작은 스킬 쓰기(20분) → 언제 쓰이는지 시험하기(10분).

화면으로 보여 주기

  1. 예제 SKILL.md 를 열고 이름, 설명, 단계를 짚어 주세요.
  2. 스킬을 weekly-report/ 에 넣고 "주간 보고서 써 줘"라고 부탁해 보세요. 그다음 관계없는 것을 물어서 스킬이 쓰이지 않는 것을 보여 주세요.
  3. 설명을 막연하게 바꾸고, 스킬이 믿을 수 없게 되는 모습을 보여 주세요.

학생 활동

  1. 내가 반복하는 일(요약, 체크리스트, 보고서)을 위한 SKILL.md 를 분명한 설명과 세 단계에서 다섯 단계로 써 보세요.
  2. 스킬을 써야 하는 요청 두 개와 쓰지 말아야 하는 요청 하나로 시험하고 결과를 적어 보세요.

완료 기준

스킬에 이름, 언제 쓰는지 밝힌 설명, 번호 붙은 단계, 확인 방법이 있고, 시험에서 올바르게 쓰이면 돼요.

학생이 막힐 때

  • 스킬이 전혀 쓰이지 않을 때: 사람들이 실제로 하는 말을 설명에 넣으세요.
  • 엉뚱한 요청에 쓰일 때: 무엇에는 쓰지 않는지를 설명에 더하세요.

함께 생각할 질문

  • 에이전트는 왜 처음에 이름과 설명만 읽을까요?
  • 인터넷에서 스킬을 설치하기 전에 왜 먼저 읽어야 할까요?
출처와 더 읽을거리

제품 정보는 2026-10-16 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 27 · 고급 · AI 에이전트

MCP: AI 를 내 도구에 잇는 서버와 클라이언트 만들기

목표

의 ··가 하는 일을 설명하고, 없이 만든 작은 를 읽고, 클라이언트로 시험하고, 에 연결한 뒤 그 설정이 어디에 저장되는지 알 수 있어요.

MCP(Model Context Protocol)는 앱을 바깥의 와 에 연결하는 이에요. MCP 가 없던 때는 AI 앱마다, 도구마다 연결을 따로 만들어야 했어요. MCP 로는 서버를 한 번 만들면 MCP 를 아는 앱 — 클로드 코드, , , 내가 만든 — 어디서나 쓸 수 있어요.

MCP 는 를 만드는 회사 이 만들었어요. 공식 문서: https://claude.com/docs/connectors/building/mcp

세 가지 역할이 있어요.

  • 호스트(Host): 사람이 쓰는 AI 앱이에요(클로드 코드, , 채팅 앱).
  • 클라이언트(Client): 호스트 안의 연결 담당이에요. 클라이언트 하나가 서버 하나와 이야기해요.
  • 서버(Server): AI 에게 할 수 있는 일을 내놓는 작은 프로그램이에요.

서버가 내놓는 것은 세 가지예요.

  • 도구(Tools): AI 이 부를 수 있는 함수예요. "메모 찾기", "줄 하나 더하기" 같은 것이에요.
  • : 앱이 읽을 수 있는 데이터예요. 파일이나 기록 같은 것이고, 저마다 주소()가 있어요.
  • (Prompts): 사용자가 골라 쓰는, 미리 만든 메시지 틀이에요.

메시지는 2.0 이에요. ("무엇을 할 수 있어?"), ("이 값으로 이 일을 해 줘") 같은 작은 이에요. 메시지는 두 가지 표준 중 하나로 오가요. 는 클라이언트가 같은 컴퓨터에서 서버 프로그램을 직접 켜고 표준 입력·출력으로 이야기하는 방식이고, 는 서버가 에서 돌아서 여러 사용자가 접속하는 방식이에요.

쉽게 이해하기

이렇게 생각해 보세요
MCP 는 AI 앱의 USB 단자와 같아요. USB 가 없던 때는 프린터와 키보드마다 플러그가 달랐지만, 이제는 USB 플러그만 있으면 어느 컴퓨터에나 꽂혀요. MCP 서버는 기기, AI 앱은 컴퓨터이고, 플러그 모양이 같으니까 서버를 한 번 만들면 MCP 를 아는 모든 앱이 쓸 수 있어요.
예시
  • strange-add 서버는 도구 하나를 내놓아요. 두 수를 더하고 0~100 사이의 무작위 수를 더 얹어요.
  • 한 줄로 클로드 코드에 연결해요.
  • "strange-add 로 2 와 3 을 더해 줘"라고 하면 AI 가 도구 설명을 읽고, 내 허락을 묻고, 클라이언트가 서버의 strange-add 를 불러요. 답이 5 가 아니에요 — 도구가 정말 돌았다는 증거예요.
자주 하는 실수
찾은 MCP 서버를 아무거나 설치하는 것. 서버는 에서 내 으로 를 돌려요. 직접 읽어 보거나 믿을 수 있는 것을 고르고, 꼭 필요한 폴더나 키만 주세요.
노트북 앞의 로봇 옆에서 사람이 허락·거절 단추판을 들고 있어요. 노트북에서 나온 케이블 하나가 똑같은 콘센트가 달린 멀티탭으로 이어지고, 서로 다른 도구 상자 세 개 — 파일 폴더, 데이터베이스, 날씨·달력 서비스 — 가 같은 모양의 플러그로 꽂혀 있어요. 화살표가 요청이 나가고 결과가 돌아오는 모습을 보여 줘요.
플러그 모양은 하나: AI 앱은 MCP 서버를 거쳐 여러 도구에 연결되고, 도구가 돌기 전에 사람이 허락해요.
조금 더 알아보기

서버(mcp-server.py)는 만 써서 자체가 그대로 보여요. 표준 입력에서 JSON-RPC 메시지를 한 줄에 하나씩 읽고, 표준 출력에 답을 한 줄에 하나씩 써요.

  • : 클라이언트가 프로토콜 을 들고 인사해요. 서버는 같은 버전으로 답하고, 도구가 있다고 알리고, 자기 이름을 밝혀요.
  • tools/list: 서버가 하나뿐인 도구 strange-add 를 설명과 입력 (a 와 b 는 숫자)와 함께 돌려줘요.
  • tools/call: 서버가 strange-add 를 실행하고 결과를 글자로 돌려줘요.
  • id 가 없는 메시지는 (notifications/initialized 같은 것)이라 서버가 답하지 않아요. 그 밖의 요청( 같은 것)에는 빈 결과로 답해요.

strange-add 는 a + b 에 0~100 사이의 무작위 수를 더해요. 모델은 이 값을 스스로 알아낼 수 없으니, 2 + 3 의 답이 5 가 아니면 도구가 정말 실행됐다는 증거예요. stdout 으로는 프로토콜 메시지만 오가요 — () 한 줄만 잘못 들어가도 대화가 깨지니 기록은 stderr 에 쓰세요. print(..., =True) 는 답을 바로 내보내요.

클라이언트(mcp-client.sh)는 AI 없이 호스트 역할을 대신하는 셸 스크립트예요. 서버를 켜고 전체(initialize, initialized 알림, tools/list, tools/call, ping)를 보낸 뒤 답을 하나씩 검사해 PASS 나 FAIL 을 찍어요. 0 은 모두 통과했다는 뜻이에요. 에 연결하기 전에 서버를 이렇게 시험하세요. 실제 클라이언트에서는 모델이 이렇게 함께 돌아요.

  • 사용자의 질문과 도구 목록을 모델에 보내요.
  • 모델이 도구를 부르겠다고 하면 클라이언트가 tools/call 로 서버에서 그 도구를 불러요.
  • 결과를 모델에 돌려주면 모델이 마지막 답을 써요.

이 손으로 만든 서버는 initialize 로 시작하는 방식(프로토콜 버전 2025-06-18)으로 말하고, 클로드 코드 같은 클라이언트는 이 방식도 받아들여요. 최신 (2026-07-28)은 initialize 대신 요청마다 버전을 실어 보내요. 실제 서비스를 만들 때는 규격을 알아서 맞춰 주는 공식 SDK(Python 의 MCPServer, )를 쓰세요.

안전: 도구는 내 권한으로 돌아가는 코드이고, 믿을 수 있는 서버가 아니면 도구 설명도 믿으면 안 돼요. 규격은 호스트가 도구를 부르기 전에 사용자의 허락을 받으라고 해요. 직접 읽어 봤거나 믿을 수 있는 서버만 설치하고, 서버에는 꼭 필요한 만큼만 접근을 주고, 키는 코드가 아니라 에 두고, 을 조심하세요 — 도구가 읽은 웹 페이지나 파일에 AI 를 노린 지시가 숨어 있을 수 있어요.

mcp-server.py
"""
mcp-server.py: the smallest MCP server.
One tool, plain Python (standard library only), no SDK.

Who is who
  MCP server  This program. It offers tools (functions the AI
              may use).
  Host        The app the user talks to (Claude Code, Codex).
              It runs one MCP client for each connected server.
  MCP client  The part of the host that talks to this server
              with JSON-RPC messages (here over stdio: one JSON
              message per line).
  Model       The LLM (Claude Opus, GPT, ...). It never talks to
              the server directly. It only talks to the host.

Flow
  1. Discover tools
     The client asks for the tools (tools/list). The server replies
     with each tool's name, description and input schema.
  2. Offer tools
     The host sends the user's message to the model, together
     with the tool list.
  3. Model decides
     The model answers directly, or asks for a tool call
     (tool name + arguments). It never runs the tool itself.
  4. Call the tool
     The client sends the request to the server (tools/call).
  5. Run the tool
     The server runs the function and returns the result.
  6. Model continues
     The host gives the result back to the model. The model may
     call more tools (3-6 again) or write the final answer.

  Model             Host (MCP client)            MCP server
    |                    |  1. tools/list  ------>  |
    |                    |  <------  tool list      |
    | <-- 2. message + tool list                    |
    | 3. tool call -->   |                          |
    |                    |  4. tools/call  ------>  |
    |                    |  <------  5. result      |
    | <-- 6. result      |                          |

Rule for stdio servers: stdout carries protocol messages only.
Never print() anything else there. Write logs to stderr.
"""

import json
import random
import sys

SERVER_INFO = {"name": "strange-add-mcp", "version": "1.0.0"}

# The tool. The model reads the description to decide when to use it.
STRANGE_ADD = {
    "name": "strange-add",
    "description": "Add two numbers with a strange number.",
    "inputSchema": {
        "type": "object",
        "properties": {
            "a": {"type": "number"},
            "b": {"type": "number"},
        },
        "required": ["a", "b"],
    },
}


def strange_add(a, b):
    """Add a + b and a random number from 0 to 100 (always >= a + b).

    The model cannot guess the answer, so a right answer proves
    that the tool was really called.
    """
    return a + b + random.randint(0, 100)


def handle(method, params):
    """Return the result for one request. Others (like ping) get {}."""
    if method == "initialize":
        # Use the client's protocol version and say "I have tools".
        return {
            "protocolVersion": params["protocolVersion"],
            "capabilities": {"tools": {}},
            "serverInfo": SERVER_INFO,
        }
    if method == "tools/list":
        return {"tools": [STRANGE_ADD]}
    if method == "tools/call":
        args = params["arguments"]
        total = strange_add(args["a"], args["b"])
        return {"content": [{"type": "text", "text": str(total)}]}
    return {}


def main():
    # One JSON-RPC message per line comes in, one reply per line goes out.
    for line in sys.stdin:
        request = json.loads(line)
        # No id means a notification: send no reply.
        if "id" not in request:
            continue
        result = handle(request["method"], request.get("params", {}))
        reply = {"jsonrpc": "2.0", "id": request["id"], "result": result}
        # flush=True sends the reply at once.
        print(json.dumps(reply), flush=True)


if __name__ == "__main__":
    main()
mcp-client.sh
#!/bin/sh
# mcp-client.sh: the simplest MCP client, a shell script.
# It starts mcp-server.py, talks to it over stdio (one JSON-RPC
# message per line) and checks every reply.
# Exit code 0 means every check passed.

SERVER="python3 $(dirname "$0")/mcp-server.py"

# 1. Send the whole session at once and keep the replies.
#    id 1     initialize                 agree on a version
#    (no id)  notifications/initialized  "ready" (no reply)
#    id 2     tools/list                 which tools are there?
#    id 3     tools/call                 run strange-add(2, 3)
#    id 4     ping                       is the server alive?
replies=$(
  $SERVER <<'EOF'
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2025-06-18", "capabilities": {}, "clientInfo": {"name": "shell-mcp-client", "version": "1.0.0"}}}
{"jsonrpc": "2.0", "method": "notifications/initialized"}
{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}
{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "strange-add", "arguments": {"a": 2, "b": 3}}}
{"jsonrpc": "2.0", "id": 4, "method": "ping"}
EOF
)

echo "--- Server replies ---"
echo "$replies"
echo "--- Checks ---"

failed=0

# 2. check <label> <reply id> <text the reply must contain>
check() {
  reply=$(echo "$replies" | grep -F "\"id\": $2,")
  if echo "$reply" | grep -qF "$3"; then
    echo "PASS   $1"
  else
    echo "FAIL   $1 (expected: $3)"
    failed=1
  fi
}

check "initialize: protocol version"  1 '"protocolVersion": "2025-06-18"'
check "initialize: server info"       1 '"serverInfo": {'
check "initialize: has tools"         1 '"capabilities": {"tools": {}}'
check "tools/list: strange-add"       2 '"name": "strange-add"'
check "ping: empty result"            4 '"result": {}'

# 3. strange-add adds a random 0 to 100,
#    so the answer only has to be >= 2 + 3.
total=$(echo "$replies" | grep -F '"id": 3,' |
  sed 's/.*"text": "\([0-9]*\)".*/\1/')
if [ "$total" -ge 5 ] 2>/dev/null; then
  echo "PASS   tools/call: strange-add(2, 3) >= 5 (got $total)"
else
  echo "FAIL   tools/call: strange-add(2, 3) >= 5 (got $total)"
  failed=1
fi

exit $failed
터미널에 입력할 명령
# put the two files above into one folder
mkdir -p ~/tmp/mcp && cd ~/tmp/mcp
#   mcp-server.py   mcp-client.sh

# 1) test the server without any AI
sh mcp-client.sh               # -> 6 x PASS, exit code 0

# 2) connect it to Claude Code (no --scope: the "local" scope)
claude mcp add strange-add -- python3 ~/tmp/mcp/mcp-server.py
claude mcp list                # strange-add: ... - Connected
claude mcp get strange-add     # Scope: Local config

# 3) where it was saved: NOT in this folder (no new file here)
#    ~/.claude.json -> projects -> "<this folder>" -> mcpServers
jq '.projects["'"$PWD"'"].mcpServers' ~/.claude.json

# 4) use it: start Claude Code in THIS folder
claude                         # "Use strange-add to add 2 and 3"
                               # -> not 5 (e.g. 61): the tool ran

claude mcp remove strange-add -s local

이 명령은 이 페이지가 아니라 내 컴퓨터나 서버의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

MCP 의 세 역할과 서버가 내놓을 수 있는 세 가지를 예 하나씩과 함께 적어 보세요.

설명과 비교하기

역할: 호스트는 AI 앱(클로드 코드), 클라이언트는 그 안의 연결 담당, 서버는 할 수 있는 일을 내놓는 프로그램(메모 서버)이에요. 서버는 모델이 부르는 도구(메모 더하기), 앱이 읽는 리소스(notes://shopping), 사용자가 고르는 프롬프트("내 메모 요약해 줘" 틀)를 내놓아요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

MCP 가 무엇이고 세 역할은 무엇인지(10분) → mcp-server.py 를 메시지 하나씩 함께 읽기(15분) → mcp-client.sh 로 시험하기(10분) → 클로드 코드에 연결하고 설정이 저장된 곳 찾기(15분).

화면으로 보여 주기

  1. mcp-server.py 를 열고 메시지 하나를 따라가 보세요. tools/call 한 줄이 stdin 으로 들어오고, handle() 이 갈 곳을 고르고, strange_add() 가 돌고, JSON 한 줄이 stdout 으로 나가요. 모델이 읽을 도구 설명도 짚어 주세요.
  2. mcp-client.sh 를 실행하고 답을 한 줄씩 읽어 보세요. initialize, tools/list, tools/call, ping 은 답이 하나씩 오고, 알림에는 답이 없고, 검사 여섯 개가 모두 통과해요. 그다음 서버에 print("hello") 를 넣고 클라이언트를 다시 돌려 실패하는 모습을 보여 주세요.
  3. claude mcp add strange-add -- ~/mcp/mcp-server.py 를 실행하고 claude mcp list 로 확인하세요. 폴더에 새 파일이 생기지 않은 것을 보여 주고, ~/.claude.json 의 projects → 이 폴더 → mcpServers 에 들어간 항목을 보여 주세요. 그 폴더에서 클로드 코드를 켜고 "strange-add 로 2 와 3 을 더해 줘"라고 부탁해, 허락을 묻는 화면과 5 가 아닌 답을 보여 주세요.

학생 활동

  1. mcp-server.py 에 두 번째 도구를 더하세요. 예를 들어 글의 단어 수를 돌려주는 word-count 예요. tools/list 에 정의를 더하고, tools/call 에서 도구 이름을 보고 맞는 함수를 부르게 하세요.
  2. mcp-client.sh 에 새 도구 검사를 더하고, 모든 검사가 통과할 때까지 고치세요. 그다음 서버를 클로드 코드에 연결하고 ~/.claude.json 에서 그 항목을 찾으세요. 클로드 코드 계정이 없으면 mcp-client.sh 만으로 충분해요 — 호스트 역할을 대신해 줘요.

완료 기준

학생의 클라이언트가 새 도구를 포함한 모든 검사에서 PASS 를 찍고, 학생이 claude mcp add 가 설정을 어디에 저장했는지, 왜 다른 폴더에서는 서버가 보이지 않는지 말할 수 있으면 돼요.

학생이 막힐 때

  • 클라이언트가 실패하거나 클로드 코드가 서버 연결에 실패했다고 할 때: print() 나 가 stdout 으로 나간 거예요. stdout 은 JSON 답에만 쓰고 기록은 stderr 에 쓴 뒤, sh mcp-client.sh 를 다시 돌리세요.
  • 클로드 코드에 서버가 없을 때: 다른 폴더에서 클로드 코드를 켠 거예요. local 범위는 claude mcp add 를 친 폴더의 것이에요. ~/.claude.json 을 확인하고 그 폴더에서 클로드 코드를 켜거나, --scope user 로 다시 더하세요.

함께 생각할 질문

  • 도구의 설명이 왜 코드만큼 중요할까요?
  • 인기 있는 MCP 서버라도 왜 설치하기 전에 읽어 봐야 할까요?
출처와 더 읽을거리

제품 정보는 2026-10-20 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 28 · 고급 · AI 에이전트

Claude Cowork: 여러 단계의 일 맡기기

목표

여러 파일과 앱에 걸친 일에 를 쓰고, 분명한 한계를 정하고, 진행 상황을 따라가며, 끝난 결과를 확인할 수 있어요.

는 와 같은 에이전트 기술을 쓰지만 이 필요 없어요. 에서 일을 설명하고, 필요한 폴더에 접근할 수 있게 해 주면 돼요. 예를 들어 "이 영수증 40장을 월별로 스프레드시트에 정리해 줘"라고 하면, 단계를 계획하고 하나씩 해내면서 진행 상황을 보여 줘요. 사무와 공부에 맞게 만들어졌어요.

  • 파일 정리
  • 메모로 문서 초안 쓰기
  • 정보를 모아 표 만들기

Cowork 는 유료 요금제에서 쓸 수 있어요.

쉽게 이해하기

이렇게 생각해 보세요
Cowork는 유능한 비서에게 서류철을 건네는 것과 같아요. “이 영수증들을 월별로 스프레드시트에 정리해 줘.” 할 일을 설명하고, 필요한 폴더만 열어 주고, 단계를 해내는 동안 진행 목록을 지켜봐요.
예시

회의 메모 폴더를 주고 “결정 사항을 한 쪽으로 요약하고, 누가 무엇을 언제까지 하는지 표로 만들어 줘”라고 해요. 누구에게 보내기 전에 메모 두 개와 표를 대조해 봐요.

자주 하는 실수
작은 일에 전체 접근을 주는 것. 그 일에 필요한 폴더만 공유해요.
조금 더 알아보기

에이전트가 할 수 있는 일이 많을수록 내 지시가 더 중요해져요.

  • 필요한 폴더만 열어 주세요.
  • 하면 안 되는 일(삭제, 보내기, 구매)을 말하세요.
  • 확실하지 않으면 멈추고 물어보라고 하세요.
  • 결과를 원본과 비교해 확인하세요.

팀에서 배울 만한 습관이 이에요. 같은 질문을 둘 이상의 도구에 묻고, 답을 비교하고, 다수결이 아니라 근거로 결정하는 거예요. SONUB 개발자들도 이렇게 일해요. 질문 하나를 여러 AI 에 보내고, 모든 주장을 원본 파일에서 다시 확인해요.

내 말로 설명해 보기

에이전트 도구에게 줄 좋은 작업 지시서에 꼭 들어가야 할 네 가지를 적어 보세요.

설명과 비교하기

목표, 입력(어떤 파일이나 폴더인지), 기대하는 결과물, 그리고 한계(하면 안 되는 일, 언제 멈추고 물어봐야 하는지)예요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

에이전트 도구란 무엇인지(5분) → 한계를 정한 실시간 작업(15분) → 학생이 작업 지시서 설계하기(20분) → AI 두 곳의 답 교차 검증하기(10분).

화면으로 보여 주기

  1. Cowork 에 메모가 든 예제 폴더를 주고 한 쪽짜리 요약 문서를 부탁하세요. 어디에서 허락을 구하는지 짚어 주세요.
  2. 한계를 정한 작업 지시서를 보여 주세요. 어느 폴더인지, 어떤 결과물인지, 하면 안 되는 일, 언제 물어봐야 하는지가 들어 있어요.
  3. 같은 사실 질문을 AI 도구 두 개에 묻고, 답을 비교한 뒤 출처를 확인해 보세요.

학생 활동

  1. 실제로 해야 하는 일로 작업 지시서를 써 보세요. 목표, 입력 폴더, 기대하는 결과물, 하면 안 되는 일 세 가지가 들어가요.
  2. 쓸 수 있다면 Cowork 에서 실행하고 결과물 중 세 항목을 원본과 비교하세요. 쓸 수 없다면 AI 도구 두 개에 같은 질문을 하고 비교하세요.

완료 기준

지시서에 목표, 입력, 결과물, 한계가 들어 있고, 학생이 직접 확인한 항목을 하나 이상 말할 수 있으면 돼요.

학생이 막힐 때

  • 유료 요금제가 없을 때: 작업 지시서를 쓰고 교차 검증 활동은 무료 도구로 하세요. 계획하는 능력은 똑같아요.
  • 에이전트가 엉뚱한 파일을 건드렸을 때: 원본 대신 폴더 사본을 주고 접근 범위를 좁히세요.

함께 생각할 질문

  • 처음에는 왜 에이전트가 내 파일의 사본으로 일하게 해야 할까요?
  • AI 도구들의 답이 서로 다를 때 왜 다수결이 아니라 근거로 결정해야 할까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 29 · 고급 · 계속 일하는 에이전트

Goal 과 Ralph Loop: 정말 끝날 때까지 에이전트가 계속 일하게 하기

목표

이 분명한 목표를 정하고, 목표를 이룰 때까지 를 반복해서 실행하고, 확인, 한도, 예산으로 안전하게 멈출 수 있어요.

보통 에이전트는 요청 하나를 끝냈다고 스스로 판단하면 멈춰요. 목표(goal)는 요청 하나를 긴 작업으로 바꿔요. 목표와 끝나는 기준을 말해 주면, 에이전트는 단계마다 진행 상황을 확인하며 계속 일해요.

와 모두 이 있어요.

  • /goal 뒤에 끝나는 기준을 적으면 목표가 정해지고 바로 일을 시작해요.
  • /goal 만 입력하면 목표와 상태를 보여 줘요.
  • /goal clear 로 지워요. Codex 에서는 /goal pause 와 resume 으로 잠시 멈췄다가 이어 가요.

클로드 코드에서는 차례(턴)가 끝날 때마다 따로 작은 이 대화를 읽고 판정해요. 아직이면 계속 일하고, 이뤘거나 불가능하다고 보면 목표를 지워요. 이 모델은 명령을 실행하거나 파일을 읽지 않으니, 결과처럼 대화에 나온 것으로 증명할 수 있는 기준을 쓰세요. 상태 화면에는 지금까지 걸린 시간·턴 수·이 보여요.

Codex 의 목표는 진행 중, 일시 정지, 완료, 도달 중 하나예요. 테스트 통과 같은 증거가 뒷받침할 때만 완료로 표시할 수 있어요.

는 같은 생각을 간단한 요령으로 만든 거예요. 에이전트가 끝내려고 할 때 (멈추는 순간 자동으로 실행되는 작은 )이 붙잡아서 같은 를 다시 넣어 줘요. 에이전트는 파일과 기록에서 자기가 앞서 한 일을 보고, 한 바퀴 한 바퀴 그것을 더 낫게 만들어요. 클로드 코드 으로 쓰는, 같은 일을 하는 다른 방법이에요. 클로드 코드의 /goal 도 속으로는 그 에만 쓰는 Stop 훅으로 돌아가요.

쉽게 이해하기

이렇게 생각해 보세요
보통의 에이전트는 요청 하나를 끝냈다고 여기면 멈춰요. 첫 모퉁이에서 서 버리는 달리기 선수처럼요. 목표(goal)는 결승선과 가 있는 경주예요. 에이전트는 계속 달리며 체크포인트마다 목록을 확인하고, 결승선 — 내가 정한 끝나는 기준 — 에 정말 닿거나 예산이 떨어져야 멈춰요.
예시

“/goal 모든 테스트가 통과하고 에 앱 실행 방법이 있다.” 에이전트는 일하고, 테스트를 돌리고, 실패 두 개를 보고 고치고, README를 확인한 뒤 두 조건을 다 채워야 멈춰요. Ralph Loop는 에이전트가 멈추려 할 때마다 같은 프롬프트를 다시 주어 비슷한 일을 해요.

자주 하는 실수
“더 좋게 만들어 줘”처럼 결승선이 없는 목표. 통과하는 테스트, 열리는 페이지, 다 채운 목록처럼 확인할 수 있는 것을 적어요.
긴 트랙을 달리는 로봇 선수. 체크포인트마다 점검표에 체크가 하나씩 늘고, 한 곳에는 다시 시도하는 화살표가 있다. 결승선에는 트로피와 다 체크된 목록이 있고, 작은 계기판에 일시 정지·재생 버튼과 예산 게이지가 있다.
끝나는 기준을 채울 때까지 체크포인트마다 이어서 일해요 — 내가 멈추거나 예산이 떨어지면 멈춰요.
조금 더 알아보기

루프는 끝나는 기준만큼만 좋아요. "더 좋게 만들어 줘"는 끝나지 않지만, "tests/ 의 모든 테스트가 통과하고 페이지가 오류 없이 열린다"는 확인할 수 있어요.

언제나 한도를 정하세요. 그러지 않으면 루프가 밤새 돌면서 쓸데없이 돈을 쓸 수 있어요.

  • — 클로드 코드의 /goal 은 기준 끝에 "or stop after 20 " 처럼 적어요
  • 사실일 때만 에이전트가 말할 수 있는
  • 토큰 예산

클로드 코드의 /goal 은 를 바꾸지 않아요. 혼자 계속 돌게 하려면 auto 모드에서 쓰세요. 그렇지 않으면 허락해 두지 않은 명령마다 물어봐요.

루프는 새 Git 에서 시작하고, 프로젝트 은 나 에 두고, 결과는 직접 확인하세요. 에이전트가 말하는 "다 했어요"는 주장일 뿐 증거가 아니에요.

터미널에 입력할 명령
# Claude Code — keep working until a finish line you can check is met
/goal All tests in tests/ pass and the homepage loads without errors, or stop after 20 turns
/goal               # show the condition, turns and tokens
/goal clear         # remove it before it is met
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

# Codex — the same idea, plus pause and resume
/goal All tests in tests/ pass and the homepage loads without errors
/goal               # show the goal and its status
/goal pause         # also: /goal resume, /goal clear

# Claude Code plugin — Ralph Loop: the same prompt again and again, with limits
/ralph-loop "Fix the failing tests in tests/. Say DONE only when all pass." --completion-promise "DONE" --max-iterations 5

이 명령은 이 페이지가 아니라 나 의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

"홈페이지를 좋게 만들어 줘"를 루프를 위한 목표로 다시 써 보세요.

설명과 비교하기

예를 들면 이래요. "홈페이지가 를 통과하고, 가 없고, 390 너비에서 잘 읽히고, 모든 링크가 작동한다. 최대 8바퀴 뒤에는 멈춘다." 확인할 수 있는 조건과 한도가 있어요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

큰 일에는 왜 답 한 번으로 부족한지(5분) → 끝나는 기준이 있는 목표 쓰기(10분) → 한도를 정해 짧은 루프 돌리기(20분) → 루프가 한 일을 Git 에서 검토하기(15분).

화면으로 보여 주기

  1. Codex 에서 잴 수 있는 목표와 함께 /goal 을 입력하고, /goal 로 상태를 본 다음, 일시 정지해 보세요.
  2. 클로드 코드에서 잴 수 있는 기준 끝에 "or stop after 20 turns" 를 붙여 /goal 을 정하고, /goal 로 상태(턴 수·토큰)를 본 다음 /goal clear 로 지워 보세요. 같은 일을 완료 문구와 최대 5바퀴의 Ralph Loop 로도 돌려 비교해 보세요.
  3. 루프가 끝난 뒤 를 보여 주고, 끝나는 기준에 비추어 작업을 확인하세요.

학생 활동

  1. 막연한 요청 세 개("내 사이트 좋게 해 줘", " 고쳐 줘", "테스트 써 줘")를 확인할 수 있는 끝나는 기준이 있는 목표로 다시 써 보세요.
  2. 연습용 브랜치에서 최대 5바퀴짜리 루프를 한 번 돌리고, 바퀴마다 무엇이 바뀌었는지 적어 보세요.

완료 기준

목표에 확인할 수 있는 끝나는 기준과 한도가 있고, 루프가 스스로 멈췄고, 학생이 결과를 확인했으면 돼요.

학생이 막힐 때

  • 루프가 멈추지 않을 때: /goal clear(Ralph Loop 는 /cancel-ralph)로 멈추고, 최대 바퀴 수와 시험해 볼 수 있는 끝나는 기준을 더하세요.
  • 바퀴마다 앞 바퀴에서 한 일을 되돌릴 때: 목표가 분명하지 않은 거예요. 끝나는 기준을 테스트나 체크리스트로 쓰세요.

함께 생각할 질문

  • 루프에는 왜 끝나는 기준과 한도가 둘 다 필요할까요?
  • 에이전트가 다 했다고 해도 왜 작업을 직접 확인해야 할까요?
출처와 더 읽을거리

제품 정보는 2026-10-26 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 30 · 고급 · 계속 일하는 에이전트

VPS 와 tmux: 에이전트가 하루 24시간 일하게 하기

목표

작은 ()를 빌려 로 접속하고, 접속을 끊어도 계속 일하도록 안에서 를 실행하고, 서버와 키를 안전하게 지킬 수 있어요.

VPS 는 에서 빌리는 작은 컴퓨터예요. 내 노트북이 잠들어도 계속 켜져 있어요. 비밀번호 대신 를 써서 ssh user@address 로 접속하고, 도구(, , , 에이전트)를 설치하고, 프로젝트를 해요. 그런데 SSH 에서 에이전트를 바로 시작하면, 연결이 끊길 때 에이전트도 멈춰요. tmux 가 이 문제를 해결해요.

  • tmux new -s agent — 세션을 열어요. 그 안에서 에이전트를 시작해요.
  • +b 를 누른 다음 d — 세션에서 빠져나와요. 에이전트는 계속 돌아요.
  • -t agent — 나중에 같은 화면으로 돌아와요.
  • tmux — 세션 목록을 보여 줘요.

쉽게 이해하기

이렇게 생각해 보세요
VPS는 데이터 센터에서 빌리는, 잠들지 않는 작은 컴퓨터예요. tmux는 그 컴퓨터 안에 있는, 내가 나가도 불이 켜져 있는 방과 같아요. 방 안에서 에이전트를 시작하고 문을 닫고 나와도(), 나중에 돌아오면 여전히 일하고 있어요.
예시

서버에 ssh로 들어가 tmux new -s agent를 실행하고 에이전트를 시작한 뒤, Ctrl+b를 누르고 d를 눌러 나와요. 노트북을 덮어요. 다음 날 다시 ssh로 들어가 tmux attach -t agent를 실행하면 밤새 한 일을 볼 수 있어요.

자주 하는 실수
비밀번호로 인하고 서버를 인터넷에 열어 두는 것. SSH 키를 쓰고, 시스템을 최신으로 두고, 공유하는 프로젝트 폴더에 키를 두지 않아요.
왼쪽: 밤에 사람이 덮인 노트북 옆에서 잠들어 있다. 열쇠 아이콘이 달린 가는 선이 오른쪽으로 이어지다 플러그가 빠져 있다. 오른쪽: 구름 속 데이터 센터의 불 켜진 방에서 로봇이 화면 앞에서 계속 일한다.
노트북은 잠들고 연결이 끊겨도 돼요. VPS의 tmux 세션이 내가 돌아올 때까지 에이전트를 계속 일하게 해요.
조금 더 알아보기

밤새 일하는 에이전트에게는 안전장치가 필요해요.

  • 과 한도가 있는 분명한 목표를 주세요.
  • 에서 실행하고, 하게 해서 아침에 작업을 검토할 수 있게 하세요.
  • 는 가 아니라 에 두고, 제공 회사에서 지출 한도를 정하세요.
  • 서버도 지키세요. SSH 키로만 접속하고, 을 켜고, 정기적으로 업데이트하세요.

tmux attach 로 들어가거나 Git 기록을 읽어서 세션을 확인하고, 나 tmux kill-session -t agent 로 멈추세요.

터미널에 입력할 명령
ssh user@address               # log in with an SSH key, not a password
tmux new -s agent              # open a session called "agent"
claude                         # start the agent with a goal and a limit
# press Ctrl+b, then d         -> detach; the agent keeps working
exit                           # log out — the session stays on the server

ssh user@address
tmux ls                        # list sessions
tmux attach -t agent           # back to the same screen
tmux kill-session -t agent     # stop it for good

이 은 이 페이지가 아니라 나 서버의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

agent 라는 tmux 세션을 시작하고, 계속 돌게 둔 채 빠져나왔다가, 나중에 다시 돌아오는 명령을 써 보세요.

설명과 비교하기

tmux new -s agent 를 실행하고, 을 시작하고, Ctrl+b 를 누른 다음 d 를 눌러 빠져나와요. 나중에 다시 로그인해서 tmux attach -t agent 를 실행해요. 이름을 잊어버렸다면 tmux ls 가 세션 목록을 보여 줘요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

왜 서버일까: 언제나 켜져 있고 언제나 온라인(5분) → 키로 SSH 접속하기(10분) → tmux new, 빠져나오기, 다시 붙기(15분) → 한도를 정한 를 시작하고 나중에 확인하기(20분).

화면으로 보여 주기

  1. ssh 로 접속해서 tmux new -s agent 를 실행하고, 오래 걸리는 명령을 시작하고, Ctrl+b d 를 누르고, 로그아웃했다가 다시 로그인해서 tmux attach -t agent 를 실행해 보세요.
  2. tmux 안에서 연습용 브랜치에 목표와 바퀴 한도를 준 에이전트를 시작하세요.
  3. API 키를 두는 곳(환경 변수)과 AI 제공 회사의 지출 한도 페이지를 보여 주세요.

학생 활동

  1. 내 컴퓨터나 VPS 에서 tmux 를 연습하세요. 세션 만들기, 빠져나오기, 세션 목록 보기, 다시 붙기, 세션 끝내기예요.
  2. 밤샘 실행 계획을 써 보세요. 목표와 끝나는 기준, 한도, 브랜치, 어떻게 확인할지, 어떻게 멈출지 적어요.

완료 기준

tmux 로 접속을 끊은 뒤에도 프로그램이 계속 돌게 할 수 있고, 한도와 검토 단계가 있는 안전한 밤샘 실행 계획이 있으면 돼요.

학생이 막힐 때

  • 다시 붙을 때 "no sessions"가 나올 때: 세션이 끝났거나 서버가 다시 시작된 거예요. tmux ls 로 확인하고 새 세션을 시작하세요.
  • SSH 가 비밀번호를 묻거나 접속을 거부할 때: 서버에 내 를 더하고, 그 키에 맞는 사용자로 접속하세요.

함께 생각할 질문

  • SSH 연결이 끊기면 왜 프로그램이 멈추고, tmux 는 어떻게 그것을 막을까요?
  • 밤새 일하는 에이전트에게 꼭 있어야 할 한도 세 가지는 무엇일까요?
출처와 더 읽을거리
챕터 31 · 마스터 · 나만의 LLM 만들기

숫자·예측·활성화 함수

목표

평균·최댓값 같은 작은 함수를 만들고, 그 출력이 무슨 뜻인지 설명해요.

평균·최댓값· 부터 시작해요. max는 가장 큰 값, 는 그 값의 위치를 반환해요. 단일 정답 분류에서는 그 위치로 최고 점수 범주를 고를 수 있어요. 점수라고 모두 잘 은 아니에요. 판정 기준을 바꾸면 으로 분류되는 예가 달라질 수 있어요.

쉽게 이해하기

이렇게 생각해 보세요
은 점수표를 든 작은 심사위원과 같아요. 입력마다 얼마나 중요하게 볼지()를 곱하고, 와 함께 더한 뒤, 얼마나 세게 반응할지 정해요. 이 마지막 단계가 활성화 함수예요. 합계를 출력으로 바꾸는 밝기 조절 스위치로, 예를 들어 는 0과 1 사이의 값을 내요.
예시

동물 셋의 점수: 고양이 2.1, 강아지 3.4, 토끼 0.5. max는 3.4, argmax는 위치 1(자리를 0부터 세요) — 강아지예요. 기준값이 3.0이면 답은 “강아지”, 기준값을 4.0으로 올리면 아무것도 고르지 않아요.

자주 하는 실수
0과 1 사이의 점수를 모두 믿을 만한 확률로 읽는 것. 점수가 퍼센트처럼 보여도 보정되지 않았을 수 있어요 — 그 점수일 때 이 실제로 얼마나 맞히는지 확인해요.
입력 셋이 굵기가 다른 관을 지나 작은 심사위원에게 들어간다. 심사위원은 점수표에 더하고 밝기 조절 스위치를 돌리며, 출력인 전등이 밝아지거나 어두워진다.
입력 × 가중치를 편향과 함께 더하고, 활성화 함수가 뉴런이 얼마나 밝게 켜질지 정해요.
조금 더 알아보기

뉴런은 입력을 z = w·x + b로 합치고 활성화 함수를 적용할 수 있어요. sigmoid는 유한한 실수를 0과 1 사이로 보내는 한 가지 함수이며 모든 뉴런의 정의는 아니에요. 다른 은 ReLU·도 써요. sigmoid 구현은 부품을 만드는 것이지 된 신경망을 완성하는 것이 아니에요. 이어지는 미션에서 로 학습한 모델을 다루며, 예제 통과만으로 를 증명할 수는 없어요.

내 말로 설명해 보기

[0.2, 0.7, 0.1]에서 위치를 0부터 셀 때 max와 argmax의 결과는 무엇일까요?

설명과 비교하기

max = 0.7, argmax = 1이에요. 값과 위치는 서로 다른 출력이에요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

평균, max, argmax(10분) → 기준값과 활성화(10분) → 학생이 실습실 미션 풀기(20분) → 스스로 확인하기(10분).

화면으로 보여 주기

  1. [0.2, 0.7, 0.1] 에서 max, argmax, 그리고 argmax 가 고르는 분류를 보여 주세요.
  2. 판정 기준값을 0.5 에서 0.3 으로 옮기고, 어떤 예시의 분류가 바뀌는지 보여 주세요.

학생 활동

  1. AI 실습실 모드에서 평균, 최댓값, 기준값 미션을 끝내 보세요.

완료 기준

max 와 argmax 의 차이, 그리고 점수가 저절로 확률이 되는 것은 아닌 이유를 설명할 수 있으면 돼요.

학생이 막힐 때

  • argmax 답이 하나씩 어긋날 때: 은 자리를 0 부터 센다는 것을 다시 알려 주세요.

함께 생각할 질문

  • 의사는 왜 경고용 검사의 기준값을 더 낮게 정할 수도 있을까요?
출처와 더 읽을거리
챕터 32 · 마스터 · 나만의 LLM 만들기

작은 모델 학습과 평가

목표

학습용과 평가용 를 나누고, 점수가 알려 주지 못하는 것을 설명해요.

으로 ·을 해요. 는 꽃받침 길이·너비와 꽃잎 길이·너비, 네 특징을 가져요. 먼저 데이터를 나누고 학습용으로 한 뒤 남겨둔 예제로 평가하세요. 학습 점수가 높아도 새 데이터 성능은 나쁠 수 있으며 이를 이라고 해요. 도 에만 맞춰 평가 정보가 학습으로 새지 않게 하세요.

쉽게 이해하기

이렇게 생각해 보세요
을 학습하고 시험하는 것은 시험공부와 같아요. 연습지의 답을 외우면 그 연습지에서는 100점이지만, 새 문제가 나오는 진짜 시험에서는 떨어져요. 이것이 과적합이에요. 그래서 모델이 배우는 동안 절대 보지 않는 문제()를 따로 남겨 둬요.
예시

붓꽃 150송이를 나눠요. 120송이는 학습용, 30송이는 남겨 둬요. 질문을 이어 가며 분류하는 를 깊이 제한 없이 쓰면 120송이에서는 100% 를 맞히지만, 남겨 둔 30송이에서는 그보다 낮게 나올 수 있어요(나누는 방법에 따라 87% 가 나오기도 해요). 학습 점수와 시험 점수가 크게 벌어지면 연습지를 외운 것이니, 깊이를 제한해 비교해 보세요.

자주 하는 실수
설정을 고르면서 테스트 세트를 자꾸 들여다보는 것. 볼 때마다 시험 문제를 배우게 되어 마지막 점수가 실제보다 좋아 보여요. 설정은 검증 세트(설정을 고르려고 학습용에서 따로 떼어 둔 묶음)로 고르고 테스트 세트는 마지막에 써요.
왼쪽: 학생이 답안지를 외워 연습 점수 만점에 웃다가 새 시험지 앞에서 갸우뚱한다. 오른쪽: 다른 학생이 책에서 규칙을 익혀 새 시험지에 자신 있게 답하고, 문제 카드 몇 장은 상자에 잠가 두었다.
연습지를 외우는 것이 과적합이에요. 시험 문제는 잠가 두고 마지막에만 모델을 확인해요.
조금 더 알아보기

와 트리 깊이는 학습 밖에서 선택하는 이고, 는 학습된 가 될 수 있어요. 설정은 검증 데이터나 교차검증으로 고르고 테스트 데이터는 에 남겨두세요. 점수를 보며 계속 조정하면 평가가 낙관적으로 치우쳐요. 데이터 분할··점수·오류 사례를 기록하세요. 작은 붓꽃 실험은 첫 프로젝트이며 모든 집단과 문제에 대한 성능 증명은 아니에요.

내 말로 설명해 보기

학습한 데이터에서 100%를 맞힌 모델은 다음에 무엇을 확인해야 할까요?

설명과 비교하기

적절한 미학습 데이터에서 평가하고 오류·를 확인해요. 만으로는 부족해요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

칠판에서 학습용과 시험용 데이터 나누기(10분) → 모델을 학습시키고 평가하기(15분) → 학생이 학습 점수와 시험 점수 비교하기(15분) → 스스로 확인하기(10분).

화면으로 보여 주기

  1. 작은 표를 학습용 줄과 시험용 줄로 나누고, 앞부분으로 학습한 뒤 뒷부분으로 점수를 매겨 보세요.
  2. 학습 데이터에서는 100% 를 맞히지만 시험 데이터에서는 더 못하는 모델을 보여 주고, 이것을 과적합이라고 불러 주세요.

학생 활동

  1. 회귀 미션과 분류 미션을 끝내고 학습 점수와 시험 점수를 적어 보세요.

완료 기준

학습 데이터의 점수만으로는 부족한 이유를 설명할 수 있으면 돼요.

학생이 막힐 때

  • 데이터 누수: 같은 전처리는 학습용 데이터로만 맞춰야 해요.

함께 생각할 질문

  • 내 모델이 학습 데이터에서 100% 를 맞혔어요. 다음에는 무엇을 확인해야 할까요?
출처와 더 읽을거리
챕터 33 · 마스터 · 나만의 LLM 만들기

LLM 만들기 1: 글자, 세기, 첫 생성기

목표

글자 로 글을 숫자로 바꾸고, 어떤 글자 뒤에 어떤 글자가 오는지 세고, 그 횟수로 새 글을 만들 수 있어요.

모든 은 글을 숫자로 바꾸는 데서 시작해요. 가장 간단한 토크나이저는 글자마다 를 하나씩 줘요. 가장 간단한 인 모델은 각 글자 뒤에 다른 글자가 몇 번 오는지 세고, 그 횟수를 로 바꿔요. 글을 만들 때는 그 확률에 따라 다음 글자를 고르고, 덧붙이고, 이것을 되풀이해요. 아래 를 실행해 보세요. ID, "h" 뒤에 올 가능성이 가장 높은 글자들, 만들어 낸 글, 그리고 을 출력해요.

쉽게 이해하기

이렇게 생각해 보세요
바이그램 모델은 어떤 글자 뒤에 어떤 글자가 오는지 표에 바를 정(正) 자로 세어 두는 것과 같아요. 글을 많이 읽고 나면 표가 생겨요. “q” 뒤에는 거의 늘 “u”, “t” 뒤에는 자주 “h”. 글을 쓸 때는 그 표대로 무게를 단 주사위를 한 글자씩 굴려요.
예시

“hello hello help”에서 “h” 뒤에는 “e”가 세 번 와서, “h” 다음에 “e”를 고를 확률은 3/3 = 1이에요. “l” 뒤에는 “l”, “o”, “l”, “o”, “p”가 와서 저마다 몫이 있어요. 몇 글자를 만들면 “helo hello hel” 같은 글이 나와요.

자주 하는 실수
바이그램 모델에서 진짜 문장을 기대하는 것. 바로 앞 글자 하나만 기억하니 낱말처럼 생긴 엉터리를 써요. 바로 그래서 다음 챕터들이 을 더 늘려요.
글자 짝 칸마다 높이가 다른 바를 정 표시가 있는 격자가 무게 단 주사위로 이어진다. 주사위가 타일을 하나씩 굴려 내보내 줄이 길어진다.
어떤 조각 뒤에 어떤 조각이 오는지 세고, 횟수를 확률로 바꿔 한 조각씩 굴려요.
조금 더 알아보기

손실은 실제 다음 글자를 보고 모델이 얼마나 놀랐는지를 재요. 그 확률에 를 취하고 마이너스를 붙인 값의 평균이에요. 완벽한 모델이라면 손실이 0 이에요. 실제 은 여러 글자로 된 을 쓰고 훨씬 긴 문맥을 보지만, 도는 순서는 같아요. 글 → ID → 다음 토큰의 확률 → 하나 고르기 → 되풀이.

예제 코드 에서 과 로 실행돼요. 코드를 바꾸고 다시 실행해 보세요.

내 말로 설명해 보기

표에 따르면 "t" 뒤에는 "h"가 0.7, "e"가 0.3 의 확률로 와요. 모델이 "t" 다음 글자를 만들 때 어떤 일이 일어날까요?

설명과 비교하기

그 확률에 따라 무작위로, 10 번 중 7 번쯤은 "h"를, 3 번쯤은 "e"를 골라요. 그리고 고른 글자에서 이어서 계속 만들어요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

칠판에서 글을 숫자로 바꾸기(10분) → 코드를 실행하고 출력 읽기(10분) → 학생이 글과 시작 글자 바꾸기(20분) → 손실 이야기하기(10분).

화면으로 보여 주기

  1. 코드를 실행하고 출력된 줄을 하나씩 설명해 주세요. , 와 decode, "h" 뒤의 확률, 만들어 낸 글, 손실이에요.
  2. 할 글을 다른 문체의 몇 문장으로 바꾸고 다시 실행해서, 만들어지는 글이 어떻게 달라지는지 보여 주세요.
  3. probs 줄을 짚고 모든 행의 합이 1 이라는 것을 보여 주세요.

학생 활동

  1. 글을 내가 쓴 세 문장으로 바꾸고, 원하는 글자에서 시작해 40 글자를 만들어 보세요.
  2. 내 글에서 "e" 뒤에 가장 자주 오는 글자를 찾고, 손으로 세어서 확인해 보세요.

완료 기준

내 글로 코드를 실행하고, 확률 표의 한 행이 무슨 뜻인지 설명할 수 있으면 돼요.

학생이 막힐 때

  • 글을 만들 때 가 날 때: 시작 글자가 글 안에 없는 거예요. 글에 나오는 글자를 고르세요.
  • 출력이 엉터리처럼 보일 때: 당연한 결과예요. 바이그램 모델은 바로 앞 글자 하나만 보거든요.

함께 생각할 질문

  • 모델은 왜 글을 숫자로 바꿔야 할까요?
  • 손실이 0 이라면 무슨 뜻일까요?
출처와 더 읽을거리
챕터 34 · 마스터 · 나만의 LLM 만들기

LLM 만들기 2: 스스로 배우는 신경망

목표

세기를 작은 으로 바꿔요. 이 신경망은 으로 과 를 배우고, 앞의 세 글자를 으로 봐요.

세기 표는 크기가 폭발하지 않고는 더 앞을 볼 수 없지만, 신경망은 볼 수 있어요. 글자마다 되는 , 즉 임베딩이 있어요.

  • 은 마지막 세 글자의 벡터를 이어 붙여 ( 사이에서 숫자를 섞어 특징을 만드는 중간 층)에 통과시켜요.
  • 다음에 올 수 있는 모든 글자에 대한 점수를 내요.
  • 가 그 점수를 로 바꿔요.

학습은 예측을 실제 다음 글자와 비교해 을 계산하고, 모든 가중치를 손실이 줄어드는 방향으로 조금씩 옮기는 거예요. 그 한 걸음이 경사 하강법이고, 가 그 방향을 계산해요.

쉽게 이해하기

이렇게 생각해 보세요
신경망 학습은 안개 낀 언덕을 걸어 가장 낮은 골짜기로 내려가는 것과 같아요. 높이가 손실, 즉 모델이 얼마나 틀렸는지예요. 골짜기는 보이지 않지만 발밑 땅이 어느 쪽으로 기울었는지(기울기)는 느낄 수 있어서 아래쪽으로 작은 걸음을 내디뎌요. 작은 걸음을 많이 걸으면 바닥 가까이에 닿아요.
예시

0단계의 손실은 3.4쯤이에요. 15개 글자 가운데 아무거나 고르면 약 2.7 이니, 처음에는 그보다도 못 맞혀요. 300단계쯤 지나면 0.2 가까이 내려가고, 모델이 마지막 세 글자를 보기 때문에 만든 글이 진짜 낱말처럼 보이기 시작해요.

자주 하는 실수
빨리 끝내려고 큰 걸음을 내딛는 것. 이 너무 크면 골짜기를 뛰어넘어 손실이 오르내리거나 폭발해요. 작고 꾸준한 걸음이 대개 이겨요.
작은 등산객이 안개 낀 굽은 언덕을 아래쪽을 가리키는 화살표를 따라 작은 걸음으로 내려가 햇살 비치는 골짜기로 향한다.
경사 하강법: 손실의 기울기를 느끼고 아래쪽으로 작은 걸음을 되풀이해요.
조금 더 알아보기

단계가 지날수록 손실이 줄어드는 것을 보세요. 신경망이 배우고 있다는 뜻이에요. 이제 더 많은 문맥을 보기 때문에 만들어 낸 글이 진짜 단어 모양을 갖춰요. 는 생성이 얼마나 모험적일지를 정해요. 1 보다 낮으면 더 안전한 글자를 고르고, 1 보다 높으면 더 과감해져요. 큰 은 가중치가 수십억 개이고 로 엄청난 양의 글을 학습하지만, 학습 한 단계 한 단계는 이것과 똑같은 생각이에요.

예제 코드 에서 과 로 실행돼요. 를 바꾸고 다시 실행해 보세요.

내 말로 설명해 보기

temperature 를 0.8 에서 0.2 로 낮추면 만들어지는 글은 어떻게 되고, 왜 그럴까요?

설명과 비교하기

더 반복적이고 안전한 글이 돼요. 점수를 작은 temperature 로 나누면 가장 가능성 높은 글자의 확률이 다른 글자보다 훨씬 커지기 때문이에요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

칠판에서 임베딩과 은닉층 보기(10분) → 코드를 실행하고 손실 지켜보기(10분) → 학생이 temperature 와 글 바꾸기(20분) → 학습 한 단계 설명하기(10분).

화면으로 보여 주기

  1. 코드를 실행하고 50 단계마다 손실이 줄어드는 것을 짚어 주세요.
  2. generate() 의 temperature 를 0.3 으로, 그다음 1.5 로 바꿔서 글을 비교해 보세요.
  3. lr 을 5.0 으로 바꾸고 다시 실행해서, 한 걸음이 너무 크면 학습이 불안정해진다는 것을 보여 주세요.

학생 활동

  1. 학습할 글을 내 문장으로 바꾸고 다시 학습시킨 뒤, 마지막 손실을 적어 보세요.
  2. temperature 두 가지를 시험하고 차이를 한 문장으로 설명해 보세요.

완료 기준

손실이 줄어드는 것을 보여 주고, 임베딩과 학습 한 단계가 무엇인지 설명할 수 있으면 돼요.

학생이 막힐 때

  • 손실이 nan 이 될 때: 학습률이 너무 높아요. lr 을 0.1 처럼 지금보다 작게 낮추세요.
  • 내 글로 생성이 안 될 때: 시작 문자열은 글에 나오는 세 글자여야 해요.

함께 생각할 질문

  • 역전파는 무엇을 계산하나요?
  • 문맥이 길수록 왜 글이 진짜 단어처럼 보일까요?
출처와 더 읽을거리
챕터 35 · 마스터 · 나만의 LLM 만들기

LLM 만들기 3: 트랜스포머의 심장, 어텐션

목표

을 더해서 모든 위치가 앞의 글자들을 돌아보고 어느 글자가 중요한지 정하게 한 뒤, 학습시키고 들여다볼 수 있어요.

오늘날 의 바탕 구조인 는 어텐션 위에 세워져 있어요.

  • 은 위치마다 (나는 무엇을 찾고 있지?)를 만들어요.
  • 앞의 모든 위치는 키(나는 무엇을 담고 있지?)와 값(나는 무엇을 넘겨주지?)을 내놓아요.
  • 쿼리와 비교하면 합이 1 인 어텐션 가 나와요.
  • 출력은 그 가중치로 값들을 섞은 거예요.

는 어떤 위치가 자기 뒤에 오는 글자를 보지 못하게 막아서 모델이 답을 훔쳐보지 못하게 해요. 은 각 글자가 어디에 있는지 모델에게 알려 줘요.

쉽게 이해하기

이렇게 생각해 보세요
어텐션은 학생마다 앞 학생들의 노트를 돌아볼 수 있는 교실과 같아요. 학생은 질문 카드(쿼리)를 들고, 앞의 학생들은 이름표(키)를 달고 노트(값)를 들고 있어요. 이름표가 질문과 잘 맞을수록 그 학생의 노트를 더 많이 베껴요. 누구도 자기 뒤에 앉은 학생의 노트는 엿보면 안 된다는 규칙이 있어요(인과 마스크).
예시

“The cat sat because it was tired”에서 모델이 “it”에 오면 그 쿼리가 “cat”의 키와 잘 맞아서, “cat”의 값이 “it”으로 많이 흘러들어요. 잘 된 큰 모델이라면 어텐션 가중치를 출력했을 때 “cat” 옆에 큰 숫자가 보일 거예요. 이 챕터의 작은 글자 모델에서는 가까운 글자에 주목하는 모습을 볼 수 있어요.

자주 하는 실수
어텐션 가중치가 모델이 “생각한” 모든 것을 설명한다고 믿는 것. 한 층의 한 가 어디를 보았는지 보여 줄 뿐이에요 — 쓸모 있는 단서이지 완전한 설명은 아니에요.
학생들이 한 줄로 앉아 있다. 마지막 학생이 질문 카드를 들고 앞 학생들에게 손전등을 비추고, 그들의 이름표가 밝게 또는 흐리게 빛난다. 굵고 가는 리본이 노트를 마지막 학생에게 나른다. 오른쪽 자리는 작은 칸막이로 막혀 있다.
위치마다 질문(쿼리)을 앞의 모든 이름표(키)와 비교하고, 그들의 노트(값)를 섞어요. 뒤에 올 글자는 엿보지 않아요.
조금 더 알아보기

이 는 이 여덟 글자인 어텐션 헤드 하나를 만으로 학습시키고, 마지막 글자의 어텐션 가중치를 출력해요. 그래서 그 글자가 앞의 어느 글자에 기대는지 볼 수 있어요. 진짜 트랜스포머는 헤드가 여러 개인 층을 여러 겹 쌓고, 과 를 더하고, 같은 로 훨씬 많은 글을 학습해요. 나머지 전부, 즉 , , , , , 은 이제 여러분이 직접 만들어 봤어요.

예제 코드 에서 과 NumPy 로 실행돼요. 코드를 바꾸고 다시 실행해 보세요.

내 말로 설명해 보기

쿼리, 키, 값이 하는 일을 각각 한 문장으로 말해 보세요.

설명과 비교하기

쿼리는 지금 위치가 무엇을 찾는지 나타내요. 키는 앞의 각 위치가 무엇을 담고 있는지 나타내서 쿼리와 맞춰 볼 수 있게 해요. 값은 그렇게 맞는 정도에 비례해서 넘겨지는 정보예요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

일상의 예로 보는 쿼리, 키, 값(10분) → 코드를 실행하고 손실과 어텐션 가중치 읽기(10분) → 학생 실험(20분) → 실제 LLM 과 연결하기(10분).

화면으로 보여 주기

  1. 문장으로 어텐션을 설명해 주세요. "the dog ran because it was scared(개가 겁을 먹어서 달아났다)"에서 "it"은 "dog"에 주목해요.
  2. 코드를 실행하고 마지막 글자의 어텐션 가중치를 읽어 보세요. 앞의 어느 위치가 가장 큰 가중치를 받나요?
  3. 마스크를 없애고(0 을 곱해서) 모델이 답을 볼 수 있기 때문에 손실이 수상할 만큼 낮게 떨어지는 것을 보여 주세요.

학생 활동

  1. 내 글로 학습시키고, 원하는 시작 문자열로 글을 만들어 보세요.
  2. X[10:11] 같은 다른 예의 어텐션 가중치를 출력하고, 마지막 글자가 어디에 주목하는지 설명해 보세요.

완료 기준

모델을 학습시켜 손실이 줄어드는 것을 보여 주고, 쿼리, 키, 값, 인과 마스크를 내 말로 설명할 수 있으면 돼요.

학생이 막힐 때

  • T 를 바꾼 뒤 오류가 날 때: 마스크와 창이 모두 T 에 따라 정해지니 T 는 한 곳에서만 바꾸세요.
  • 오래된 기기에서 학습이 느릴 때: 단계 수를 200 으로 줄이세요. 그래도 손실은 줄어들어요.

함께 생각할 질문

  • 모델에는 왜 인과 마스크가 필요할까요?
  • 한 위치의 어텐션 가중치를 모두 더하면 얼마가 될까요?
출처와 더 읽을거리
챕터 36 · 마스터 · 나만의 LLM 만들기

내 컴퓨터에서 GPT 만들기: 작은 GPT-2

목표

과 로 와 같은 설계의 작은 를 에서 학습시킬 수 있어요. 이 줄어드는 것을 지켜보고, 내 로 글을 만들 수 있어요.

GPT-2 는 을 쌓은 거예요.

  • 과
  • 과 작은 으로 된 층들
  • 다음에 올 수 있는 모든 토큰에 점수를 매기는 마지막 층

가장 작은 GPT-2 도 가 약 1억 2,400만 개이고, 큰 로 며칠 동안 수십억 개의 토큰을 했어요. 노트북에는 너무 커요. 하지만 같은 설계를 작게 만들면 노트북에서도 정말 학습시킬 수 있어요. 층 4개, 4개, 숫자 128개짜리 임베딩(파라미터 약 80만 개)이면, 셰익스피어 같은 작은 글로 에서 약 3분 만에 배워요.

의 는 이것을 위한 대표적인 짧은 코드예요. PyTorch(신경망을 만들고 학습시키는 Python )로 쓰여 있어요. 를 준비하고, 학습 스크립트를 실행하고, 글을 해요. 지금은 만든 사람이 nanoGPT 를 오래된 것으로 표시하고 더 새로운 프로젝트인 을 안내해요. 그래도 몇백 줄로 GPT-2 방식 모델을 보기에는 nanoGPT 가 여전히 가장 알기 쉬워요.

쉽게 이해하기

이렇게 생각해 보세요
GPT-2는 층층이 쌓은 케이크와 같아요. 같은 트랜스포머 블록을 거듭 쌓고, 층마다 추측을 조금씩 다듬어요. 큰 케이크는 전문 제과점(큰 GPU로 며칠)이 필요하지만, 같은 레시피로 층을 줄이고 얇게 한 컵케이크는 우리 집 부엌에서 몇 분이면 구워져요.
예시

층 4개, 어텐션 헤드 4개, 숫자 128개짜리 임베딩: 파라미터 약 80만 개, 노트북에서 셰익스피어로 3분쯤 학습해요. 샘플을 뽑으면 낱말이 늘 말이 되지는 않아도 셰익스피어 같은 줄 바꿈과 이름이 나와요.

자주 하는 실수
학습 손실만 보는 것. 학습 손실은 계속 내려가는데 이 오르기 시작하면 모델이 외우고 있는 거예요 — 거기서 멈추거나 모델을 줄여요.
큰 제과점의 대형 오븐 옆 받침대 위에 높은 층 케이크가 있고, 그 옆 가정용 오븐에서 같은 층 무늬의 작은 컵케이크가 구워진다. 레시피 카드 하나가 둘을 잇는다.
같은 레시피, 두 가지 크기: 원래 GPT-2는 제과점이, 작은 GPT-2는 내 노트북이 구워요.
조금 더 알아보기

학습은 한 단계를 되풀이해요.

  • 글 한 묶음()을 가져와요.
  • 각각의 다음 토큰을 예측해요.
  • (손실)를 재요.
  • 손실이 작아지도록 모든 파라미터를 조금씩 옮겨요.

숫자 두 개를 지켜보세요. 학습 손실, 그리고 모델이 본 적 없는 글에 대한 검증 손실이에요. 학습 손실만 줄어든다면 모델이 외우고 있는 거예요. 학습이 끝나면 모든 파라미터가 담긴 이 생겨요.

에서는 mps 장치를, 그래픽 카드에서는 를 쓰고, 그 밖에는 더 작은 모델로 cpu 를 쓰세요. 이 챕터 앞의 챕터들에서는 같은 부품을 로 손수 만들었어요. 여기서는 그 부품들을 실제 크기로 써요.

터미널에 입력할 명령
git clone https://github.com/karpathy/nanoGPT
cd nanoGPT
pip install torch numpy transformers datasets tiktoken wandb tqdm

python data/shakespeare_char/prepare.py      # text -> characters -> numbers

# a small GPT on the CPU (about 3 minutes); on a Mac use --device=mps
python train.py config/train_shakespeare_char.py --device=cpu --compile=False \
    --eval_iters=20 --log_interval=1 --block_size=64 --batch_size=12 \
    --n_layer=4 --n_head=4 --n_embd=128 --max_iters=2000 \
    --lr_decay_iters=2000 --dropout=0.0

python sample.py --out_dir=out-shakespeare-char --device=cpu

이 명령은 이 페이지가 아니라 내 컴퓨터나 의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

GPT 의 주요 부분 세 가지와 각각 하는 일을 말해 보세요.

설명과 비교하기

임베딩은 토큰과 위치를 로 바꿔요. 트랜스포머 블록(셀프 어텐션과 작은 신경망)은 토큰들 사이에 정보를 섞어요. 은 마지막 벡터를 다음에 올 수 있는 모든 토큰의 점수로 바꿔요. 그다음 샘플링이 다음 토큰을 골라요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

브라우저 챕터 세 개에서 GPT-2 로: 같은 블록을 더 크게(10분) → Python 과 PyTorch 준비하기(10분) → 데이터 준비하고 학습 시작하기(15분) → 글을 샘플링하고 손실 곡선 읽기(15분).

화면으로 보여 주기

  1. GPT-2 블록 그림을 보여 주고, 각 부분을 만들기 챕터와 짝지어 주세요. 임베딩, 어텐션, 다음 토큰 점수예요.
  2. nanoGPT 의 셰익스피어 을 작은 CPU 설정으로(약 3분) 실행하고, 출력되는 학습 손실과 검증 손실을 보여 주세요.
  3. 초기 체크포인트와 마지막 체크포인트로 각각 글을 만들어 비교해 보세요.

학생 활동

  1. 작은 모델을 내 컴퓨터(또는 무료 )에서 학습시키고, 처음과 끝의 손실 값을 적어 두세요.
  2. 설정 하나(층 수, 임베딩 크기, 학습 단계 수)를 바꾸고, 손실과 글이 어떻게 달라졌는지 적어 보세요.

완료 기준

모델을 학습시켰고, 체크포인트가 있고, 손실이 줄어드는 것을 보여 줄 수 있고, 학습 손실과 검증 손실의 차이를 설명할 수 있으면 돼요.

학생이 막힐 때

  • 가 부족할 때: 배치 크기, , 층 수를 줄이세요.
  • CPU 에서 학습이 아주 느릴 때: 모델을 더 작게 만들거나, GPU 가 있는 무료 클라우드 노트북을 쓰세요.

함께 생각할 질문

  • 같은 GPT-2 설계가 왜 훨씬 작은 크기에서도 작동할까요?
  • 학습 손실은 계속 줄어드는데 검증 손실이 올라가면 무슨 뜻일까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 37 · 마스터 · 내 모델을 어디서나 실행하기

러너: 모델에 생명을 불어넣는 프로그램

목표

가 하는 일을 설명할 수 있어요. 불러오기, 으로 나누기, 을 한 단계씩 실행하기, , 이에요. 그리고 나 로 모델을 실행할 수 있어요.

한 모델은 숫자가 담긴 파일일 뿐이에요. 러너는 그 파일을 쓰는 이에요. 러너는 이 일을 되풀이해요.

  • 가중치를 에 불러와요.
  • 모델의 로 내 글을 토큰으로 바꿔요.
  • 모델을 실행해 다음 토큰의 점수를 얻어요.
  • 같은 설정으로 토큰 하나를 샘플링해요.
  • 그것을 글에 덧붙이고, 화면에 하나씩 보여 줘요(스트리밍).

앞에서 한 계산은 ()에 남겨 두어 새 토큰을 빨리 만들고, 모델이 학습할 때 쓴 도 적용해요. Ollama 와 llama.cpp 는 모델을 감싼 러너예요. 같은 서비스도 에서 이런 러너를 돌려요.

쉽게 이해하기

이렇게 생각해 보세요
학습한 모델은 음반과 같고, 러너는 전축과 같아요. 음반에는 음악(가중치)이 다 들어 있지만, 읽어서 내 말을 토큰으로 바꾸고 다음 음을 연주하며 이어 가려면 전축이 필요해요. 전축마다 읽는 음반 형식이 달라요.
예시

Ollama와 llama.cpp는 보통 컴퓨터에서 파일을 읽어요. 질문을 입력하면 러너가 토큰으로 바꾸고, 모델을 실행하고, 토큰 하나를 샘플링해 화면에 보이고, 되풀이해요 — 그래서 답이 한 낱말씩 나타나요.

자주 하는 실수
의 모델에도 인터넷 키가 필요하다고 생각하는 것. 내 컴퓨터의 러너는 키 없는 를 열 수 있고, 가 컴퓨터 밖으로 나가지 않아요.
작은 숫자들로 된 원반 모양 음반이 다정한 전축 위에서 돌고, 음표가 작은 말풍선이 되어 하나씩 나온다. 선반에는 서로 다른 모양의 음반을 읽는 전축 몇 대가 있다.
모델은 음반, 러너는 그것을 읽어 다음 토큰을 하나씩 연주하는 전축이에요.
조금 더 알아보기

러너마다 실행되는 곳과 읽는 파일 형식이 달라요.

  • — 내 를 바로 실행해요.
  • llama.cpp — 컴퓨터와 휴대폰에서, Ollama — 컴퓨터에서 GGUF 파일을 실행해요.
  • 와 휴대폰 — 여러 도구가 함께 읽는 모델 형식인 나, Apple()과 Google()의 자체 을 쓸 수도 있어요.

많은 러너가 를 제공해서, 내 앱이 API 와 이야기하는 것과 똑같이 내 컴퓨터의 모델과 이야기할 수 있어요. 키도 필요 없고 데이터가 컴퓨터 밖으로 나가지도 않아요. 내 체크포인트는 변환 단계를 거치면 이런 엔진에서 실행할 수 있어요. 그 변환은 다음 챕터에서 해요.

터미널에 입력할 명령
# a runner on your computer: download a small open model and chat
ollama run llama3.2:1b

# the same runner as a local API — no key, nothing leaves the machine
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2:1b",
  "prompt": "Explain a token in one sentence.",
  "stream": false
}'

이 명령은 이 페이지가 아니라 내 컴퓨터나 서버의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

러너가 새 토큰을 하나씩 만들 때마다 되풀이하는 단계를 적어 보세요.

설명과 비교하기

이 순서를 되풀이해요.

  • 지금까지의 글을 토큰으로 가져와요.
  • 모델을 실행해 다음에 올 수 있는 모든 토큰의 점수를 얻어요.
  • 점수를 로 바꿔요.
  • temperature 같은 설정을 써서 토큰 하나를 샘플링해요.
  • 그것을 덧붙여 보여 줘요.

이 나오거나 길이 한도에 닿으면 멈춰요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

가중치는 숫자일 뿐: 무엇이 빠졌을까?(5분) → 러너의 반복을 한 단계씩(15분) → Ollama 나 llama.cpp 로 작은 실행하기(20분) → 로컬 API 부르기(10분).

화면으로 보여 주기

  1. 칠판에 러너의 반복을 쓰세요. 토큰으로 나누기 → 모델 → 점수 → 샘플링 → 덧붙이기 → 되풀이. 그리고 샘플링 챕터와 연결해 주세요.
  2. 작은 오픈 모델을 내 컴퓨터에서 실행하고(예를 들어 10억 개짜리 모델로 ollama run), 토큰이 하나씩 흘러나오는 것을 보여 주세요.
  3. 요청에 "stream": false 를 넣어 로컬 API 를 부르고, 답 전체가 하나로 돌아오는 것을 보여 주세요. 빼면 토큰마다 JSON 이 한 줄씩 와요.

학생 활동

  1. 러너의 반복을 내 말로 번호를 붙인 단계로 쓰고, temperature 가 쓰이는 곳을 표시해 보세요.
  2. 내 컴퓨터에서 작은 오픈 모델을 실행하고, 1초에 토큰을 몇 개 만드는지 재어 보세요.

완료 기준

러너 반복의 각 단계를 설명할 수 있고, 로컬 모델을 실행해 봤고, 러너가 로컬 API 를 제공할 수 있다는 것을 알면 돼요.

학생이 막힐 때

  • 모델이 너무 느리거나 메모리에 들어가지 않을 때: 더 작은 모델이나 더 강하게 한 파일을 고르세요.
  • 답이 이상해 보일 때: 채팅 템플릿이나 토크나이저가 모델과 맞지 않는 거예요. 모델과 함께 온 파일을 쓰세요.

함께 생각할 질문

  • 가중치 파일만으로는 왜 모델과 대화할 수 없을까요?
  • 클라우드 API 대신 내 컴퓨터에서 모델을 실행하면 어떤 점이 좋을까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 38 · 마스터 · 내 모델을 어디서나 실행하기

휴대폰 속 내 LLM: 변환하고, 줄이고, 넣기

목표

을 휴대폰에 맞는 형식으로 변환하고, 로 줄이고, 와 함께 앱에 넣어서, 내 휴대폰에서 인터넷 없이 쓸 수 있어요.

휴대폰은 가 적어서 모델이 작고 압축되어 있어야 해요. 양자화는 각 를 더 적은 로 저장하는 거예요. 예를 들어 16 비트 대신 4 비트로 저장하면, 품질은 조금만 떨어지면서 파일은 약 4분의 1 크기가 돼요.

보통 이렇게 해요.

  • 의 변환 도구로 모델을 로 바꿔요.
  • 양자화해요( 을 흔히 골라요).
  • 먼저 에서 시험해요.

내가 만든 도 내보낼 수 있어요. 다만 34챕터의 (shakespeare_char)은 그대로는 안 되고, 로 다시 해(/shakespeare) GPT-2 형식으로 저장해야 해요. 그리고 셰익스피어로 학습한 아주 작은 모델은 셰익스피어 같은 글만 써요. 쓸모 있는 도우미를 원한다면 파라미터가 약 10억~30억 개인 작은 에서 시작하세요.

쉽게 이해하기

이렇게 생각해 보세요
양자화는 작은 여행 가방에 짐을 싸는 것과 같아요. 셔츠를 한 장 한 장 원래 크기로 반듯하게 개는(숫자 하나에 16비트) 대신 돌돌 말아(4비트) 넣어요. 다 들어가고 거의 똑같아 보이지만 가방은 약 4분의 1 크기가 되어 휴대폰에 들어가요.
예시

파라미터 30억 개 모델은 16비트로 약 , 약 4비트로 양자화하면 2GB가 안 돼요. GGUF 파일을 휴대폰의 오프라인 채팅 앱에 넣고 비행기 모드를 켠 뒤 물어봐도 답해요.

자주 하는 실수
셰익스피어로 학습한 아주 작은 모델이 쓸모 있는 비서가 되리라 기대하는 것. 쓸모 있는 휴대폰 비서는 작은 공개 모델에서 시작하고 를 짧게 해요.
왼쪽: 옷을 반듯하게 갠 큰 여행 가방. 오른쪽: 같은 옷을 돌돌 말아 넣은 작은 가방이 휴대폰 모양 주머니에 쏙 들어가고, 근처에 작은 비행기 아이콘이 있다.
양자화는 같은 모델을 숫자당 더 적은 비트로 싸서 휴대폰에서도, 오프라인으로도 돌아가게 해요.
조금 더 알아보기

휴대폰에서 쓰는 방법은 두 가지예요.

  • 빠른 방법 — 처럼 러너가 이미 들어 있는 앱에 GGUF 파일을 복사해서, 인터넷 없이 대화해요.
  • 만드는 사람의 방법 — 내 앱에 러너를 넣어요. 예를 들어 앱에는 을, 앱에는 llama.cpp 을 넣어요. 모델 파일은 앱과 함께 내보내거나 내려받게 하고, 내 에서 불러요.

모든 것이 휴대폰 안에 있어서 인터넷 없이도 작동하고 데이터도 지켜져요. 하지만 보다 느리고 배터리를 쓰니, 프롬프트는 짧게, 모델은 작게 하세요. 또 다른 방법은 러너를 내 컴퓨터에 두고, 같은 Wi-Fi 에서 휴대폰으로 그 를 부르는 거예요. 더 쉽지만 그 컴퓨터 가까이에서만 작동해요.

앱에 모델을 넣는 것()과, 챕터에 나온 인 임베딩을 헷갈리지 마세요. 휴대폰 속 작은 로 내 메모를 검색할 수도 있어요.

터미널에 입력할 명령
# your own nanoGPT: train it with the GPT-2 tokenizer (data/shakespeare, not shakespeare_char)
# and save the weights as a Hugging Face GPT-2 folder (./my-model) — then it converts like any model

# llama.cpp: model folder -> GGUF (16-bit) -> 4-bit Q4_K_M
python convert_hf_to_gguf.py ./my-model --outfile my-model-f16.gguf
./llama-quantize my-model-f16.gguf my-model-Q4_K_M.gguf Q4_K_M
ls -lh my-model-*.gguf         # about four times smaller

# quick way: copy my-model-Q4_K_M.gguf into an offline chat app (e.g. PocketPal AI)
# builder's way: embed a runner in your app (llama.rn, a llama.cpp binding) and load the file

이 명령은 이 페이지가 아니라 내 컴퓨터나 의 에서 실행해요. 실행하기 전에 한 줄씩 읽어 보세요.

내 말로 설명해 보기

내 컴퓨터에서 학습한 모델이 휴대폰 속 대화가 되기까지의 과정을 네 단계로 설명해 보세요.

설명과 비교하기

1. 모델을 GGUF 같은 휴대폰에 맞는 형식으로 변환해요. 2. 메모리에 들어가도록 양자화해요(예를 들어 4비트로). 3. 러너가 들어 있는 앱에 넣어요. 이미 있는 오프라인 채팅 앱이나 러너를 넣은 내 앱이에요. 4. 휴대폰에서 불러와 인터넷 없이 대화해요. 단계 사이사이에 컴퓨터에서 시험해 보는 것도 좋아요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

휴대폰에는 왜 작은 모델이 필요한지(5분) → 컴퓨터에서 변환하고 양자화하기(15분) → 휴대폰 앱에서 실행하기(15분) → 앱이 러너를 넣는 방법(15분).

화면으로 보여 주기

  1. 같은 모델의 16비트 파일과 4비트 파일 크기를 보여 주고, 둘 다 컴퓨터에서 시험해 보세요.
  2. 작게 양자화한 GGUF 모델을 휴대폰의 오프라인 채팅 앱에 불러오고, 비행기 모드를 켠 다음 대화해 보세요.
  3. 모델 파일을 불러오고 앱에 넣은 러너에서 을 흘려보내는 앱 코드 몇 줄을 보여 주세요.

학생 활동

  1. 작은 오픈 모델을 하나 고르고, 양자화한 GGUF 파일을 찾아서, 내 휴대폰 메모리에 들어갈지 어림해 보세요.
  2. 그 모델을 휴대폰에서 인터넷 없이 실행하고, 속도(1초에 만드는 토큰 수)와 잘하는 것 하나, 못하는 것 하나를 적어 보세요.

완료 기준

변환, 양자화, 앱에 러너 넣기를 설명할 수 있고, 휴대폰에서 인터넷 없이 모델을 실행해 봤으면 돼요(휴대폰이 없다면 컴퓨터에서).

학생이 막힐 때

  • 모델을 불러올 때 앱이 멈출 때: 모델이 휴대폰 메모리에 비해 너무 큰 거예요. 더 작은 모델을 쓰거나 더 강하게 양자화하세요.
  • 휴대폰이 없을 때: 같은 GGUF 파일을 컴퓨터에서 llama.cpp 로 실행하세요. 단계는 똑같아요.

함께 생각할 질문

  • 4비트 양자화로 얻는 것과 잃는 것은 무엇일까요?
  • 기기 안에서 도는 모델은 왜 개인정보 보호에 좋을까요?
출처와 더 읽을거리

제품 정보는 2026-10-15 에 확인했어요. AI 도구는 빨리 바뀌니 공식 페이지와 비교해 보세요.

챕터 39 · 마스터 · 마무리 프로젝트

마무리 프로젝트: AI 로 무언가 만들고 내 작업 보여 주기

목표

이 강좌의 도구로 작은 프로젝트를 계획하고 만들고 발표해요. 작동한다는 것을 보여 주는 기록과 확인 결과도 함께요.

작고 쓸모 있는 프로젝트를 고르세요. 예를 들어 우리 반을 위한 퀴즈 생성기, 파일을 정리해 주는 스크립트, 취미를 소개하는 웹 페이지, 좋아하는 글로 학습시킨 나만의 같은 것이에요. 그다음 이렇게 해요.

  • 한 쪽짜리 계획을 써요. 목표, 사용자, 작동하는지 확인하는 방법이 들어가요.
  • 와 작은 바퀴를 여러 번 돌며 만들어요.
  • 단계가 하나 작동할 때마다 해요.
  • AGENTS.md, CLAUDE.md 나 로 가 내 규칙을 지키게 해요.
  • 마지막으로 에 를 열어, 무엇을 만들었고 어떻게 써 볼 수 있는지 설명해요.

쉽게 이해하기

이렇게 생각해 보세요
마무리 프로젝트는 과학 발표회와 같아요. 작은 질문을 고르고, 그 답이 되는 것을 만들고, 시험하고, 포스터 옆에 서서 무엇이 잘 됐고 무엇이 틀렸고 어떻게 알아냈는지 설명해요. 결과만큼 이야기의 정직함이 중요해요.
예시

프로젝트: 우리 반 퀴즈 생성기. 계획: 한 챕터에서 문제 10개, 친구가 확인. 에이전트와 작은 바퀴로 만들고, 잘 되는 단계마다 커밋하고, 가 틀린 문제를 낸 순간과 그것을 어떻게 잡았는지 적고, 스크린숏과 함께 풀 리퀘스트를 열어요.

자주 하는 실수
끝낼 수 없을 만큼 큰 프로젝트를 고르는 것. 잘 작동하고 잘 설명한 작은 프로젝트가 끝내 돌아가지 않는 거대한 프로젝트보다 나아요.
학생이 계획서·작은 로봇이 있는 노트북·점검표·돋보기 아이콘이 그려진 과학 발표회 포스터 옆에 자랑스럽게 서 있고, 친구들이 지켜본다.
계획하고, 작은 바퀴로 만들고, 확인하고, 정직하게 발표해요 — 내가 만든 것, AI가 만든 것, 어떻게 확인했는지.
조금 더 알아보기

발표는 만큼 중요해요. 계획, AI 가 무언가를 틀렸던 순간과 내가 그것을 알아챈 방법, 내가 실행한 나 확인, 다음에 하고 싶은 일을 보여 주세요. 정직하게 밝히세요. 어느 부분을 내가 썼고, 어느 부분을 AI 가 썼고, 그것을 어떻게 확인했는지 말해요.

내 말로 설명해 보기

마지막 풀 리퀘스트의 설명에는 어떤 네 가지가 들어가야 할까요?

설명과 비교하기

프로젝트가 무엇을 하는지, 어떻게 실행하거나 써 볼 수 있는지, 어떻게 확인했는지(테스트나 예시), 그리고 어느 부분을 AI 의 도움으로 만들었는지예요.

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

이 챕터를 이해한 것으로 표시할까요?

아직 취소할 수 없으니, 정말 이해했을 때만 표시해 주세요.

이해한 것으로 표시했어요

스스로 표시하는 칸이에요. 여기서 채점하지는 않아요.

수업 진행 안내

이 챕터를 수업에서 진행하는 방법이에요. 학생도 읽어도 돼요.

수업 흐름

프로젝트 아이디어와 범위 정하기(15분) → 한 번 이상의 수업에 걸쳐 학생이 계획하고 만들기 → Git 기록과 시연을 곁들인 발표(한 사람당 약 10분).

화면으로 보여 주기

  1. 목표, 사용자, 확인 방법, 중간 목표 세 개가 담긴 예시 계획을 보여 주세요.
  2. 완성된 예시 를 보여 주세요. 커밋들, CLAUDE.md 나 AGENTS.md, 설명이 분명한 풀 리퀘스트가 있어요.
  3. AI 의 실수 하나와 그것을 어떻게 잡아냈는지가 들어간 짧은 예시 발표를 해 주세요.

학생 활동

  1. 한 쪽짜리 계획을 쓰고, 만들기 시작하기 전에 강사의 승인을 받으세요.
  2. 커밋을 세 번 이상 하며 만들고, 설명과 써 보는 방법이 담긴 풀 리퀘스트를 여세요.

완료 기준

풀 리퀘스트가 있고, 프로젝트가 설명대로 작동하고, AI 의 실수 하나와 확인 하나를 설명할 수 있으면 돼요.

학생이 막힐 때

  • 프로젝트가 너무 클 때: 처음부터 끝까지 작동하는 기능 하나로 줄인 다음 더해 나가세요.
  • 코드는 작동하는데 학생이 설명하지 못할 때: 에이전트에게 한 줄씩 설명해 달라고 한 다음, 한 부분을 직접 다시 써 보세요.

함께 생각할 질문

  • 어떤 확인이 내 프로젝트가 작동한다는 가장 큰 믿음을 줬나요?
  • 어느 부분을 내가 했고, 어느 부분을 AI 가 했나요?

취소할 대기 예약을 선택하세요. 각 예약은 확인 후 취소됩니다.

내 :

닫기