콘텐츠로 이동

AI에게 일을 잘 시키려면 — 환경 세팅부터 첫 규칙까지 (차시 1-2)

AI에게 일을 잘 시키려면 — 환경 세팅부터 첫 규칙까지 (차시 1-2)

섹션 제목: “AI에게 일을 잘 시키려면 — 환경 세팅부터 첫 규칙까지 (차시 1-2)”

Part 1: 도입부 — 나만의 봇 만들기


  • Streamlit + Claude API 환경을 설정하고 스타터 코드를 배포할 수 있다
  • 규칙 없는 봇과 대화하며 AI의 한계(환각, 일관성 부족, 역할 이탈)를 3개 이상 발견할 수 있다
  • 발견한 실패를 ‘실패 기록 → 규칙 추가’ 패턴으로 변환하여 첫 규칙 파일(5개 이상)을 작성할 수 있다
  • 규칙 추가 전후로 같은 질문을 던져 봇 행동의 변화를 직접 확인할 수 있다

“예전에는 코드를 한 글자도 안 틀리고 치는 게 실력이었어요. 그런데 AI가 코드를 대신 쳐주는 시대가 되었습니다. 그러면 실력이 사라진 걸까요? 아닙니다. 뭘 시킬지 정확히 정하는 게 실력이 된 겁니다.”

이 수업의 첫 2시간은 아주 단순한 질문에서 시작합니다.

“AI에게 아무 규칙 없이 일을 시키면 어떤 일이 벌어질까?”

학생들은 자기만의 챗봇을 배포하고, 그 봇이 얼마나 엉뚱하게 행동하는지를 직접 목격합니다. 그리고 그 “참사”에서 규칙을 한 줄씩 뽑아내는 경험을 합니다. 이 루프—실패 → 기록 → 규칙 추가 → 재시도—가 앞으로 30시간 동안 반복될 전부입니다.

선생님께 드리는 핵심 메시지: 이 차시의 목표는 “좋은 봇 만들기”가 아닙니다. **“봇이 망가지는 것을 보고, 거기서 규칙을 뽑아내는 체험”**이 목표입니다. 봇이 이상하게 답할수록 수업이 잘 되고 있는 겁니다.


개념 1: 규칙 파일 — “AI의 행동 설명서”

섹션 제목: “개념 1: 규칙 파일 — “AI의 행동 설명서””

🎯 비유로 시작합시다.

새 알바생이 카페에 첫 출근했다고 상상해보세요. 매뉴얼 없이 “알아서 잘 해”라고 하면 어떤 일이 벌어질까요? 아이스 아메리카노를 뜨겁게 만들거나, 디카페인 요청을 무시하거나, 손님에게 갑자기 날씨 얘기를 시작할 수도 있죠.

AI도 똑같습니다. 아무 규칙 없이 던져놓으면 아는 척, 범위 이탈, 일관성 부족이 줄줄이 터집니다.

📌 정확한 정의:

규칙 파일이란 AI가 실수할 때마다 한 줄씩 추가하는 문서입니다. 실리콘밸리 개발자 Hashimoto는 AI에게 코딩을 시키면서 6개월간 이런 파일을 만들었는데, 결국 수백 줄이 되었고, AI가 거의 실수하지 않게 되었습니다. 그는 이렇게 말했습니다:

“이 파일의 모든 줄은 에이전트가 실제로 저지른 나쁜 행동에 기반해서 추가되었다.”

핵심은 사전에 계획해서 쓰는 것이 아니라, 실패 경험에서만 자라난다는 것입니다.

예시로 확인:

실패 사건: 급식 봇에게 “나 계란 알레르기야”라고 했는데 계란 프라이를 추천함

→ 규칙: “사용자가 알레르기를 언급한 재료가 포함된 메뉴는 절대 추천하지 말 것”


개념 2: SYSTEM_PROMPT — “봇의 뇌에 심는 규칙”

섹션 제목: “개념 2: SYSTEM_PROMPT — “봇의 뇌에 심는 규칙””

🎯 비유로 시작합시다.

SYSTEM_PROMPT는 카페 알바생에게 출근 첫날 건네는 업무 매뉴얼입니다. 이 매뉴얼에 “손님이 알레르기를 말하면 해당 재료 메뉴를 절대 추천하지 마”라고 적어두면, 알바생은 그 규칙을 따릅니다. 매뉴얼이 비어 있으면? 알아서 판단하겠죠—대부분 엉뚱하게.

📌 정확한 정의:

SYSTEM_PROMPT는 AI 챗봇이 대화를 시작하기 전에 읽는 숨겨진 지시문입니다. 사용자에게는 보이지 않지만, 봇의 모든 응답에 영향을 미칩니다. 우리가 만드는 “규칙 파일”은 바로 이 SYSTEM_PROMPT 안에 들어갑니다.

예시로 확인:

SYSTEM_PROMPT = """
# 나의 규칙 파일
## 이 봇의 역할
나는 우리 학교 급식 메뉴를 추천하는 봇이다.
## 하지 말아야 할 것
- 사용자가 알레르기를 언급한 재료가 포함된 메뉴는 절대 추천하지 마
- 급식 추천 외의 요청(코딩, 숙제 등)은 정중히 거절해
## 반드시 해야 할 것
- 추천할 때 재료 목록을 함께 알려줘
"""

개념 3: “실패 → 규칙” 루프 — 30시간의 엔진

섹션 제목: “개념 3: “실패 → 규칙” 루프 — 30시간의 엔진”

🎯 비유로 시작합시다.

축구 경기를 떠올려보세요. 상대 팀이 왼쪽으로 돌파해서 골을 넣었습니다. 감독은 “왼쪽 수비를 보강해”라고 지시합니다. 다음에 또 왼쪽 돌파가 오면? 이번엔 막힙니다. 이것이 바로 실패에서 규칙을 만드는 루프입니다.

📌 정확한 정의:

flowchart LR
A["🤖 AI에게 시키기"] --> B["❌ 실패 발견"]
B --> C["📝 종이에 기록"]
C --> D["📏 규칙으로 변환"]
D --> E["➕ 규칙 파일에 추가"]
E --> A

이 루프가 30시간 내내 반복됩니다. 도메인(챗봇, 3D, 데이터, 하드웨어)만 바뀌고, 루프는 항상 같습니다.


개념 4: AI의 세 가지 대표 실패 — 환각, 일관성 부족, 역할 이탈

섹션 제목: “개념 4: AI의 세 가지 대표 실패 — 환각, 일관성 부족, 역할 이탈”

📌 환각(Hallucination): 모르는 것을 아는 척하는 것

학생: “우리 학교 오늘 급식 뭐야?” 봇: “오늘은 제육볶음, 미역국, 깍두기입니다!” ← 학교 급식을 전혀 모르면서 자신있게 대답

📌 일관성 부족: 대화 도중 앞에서 한 말을 잊는 것

학생: “나 매운 거 못 먹어” 봇: “알겠습니다!” (3턴 후) 봇: “떡볶이 어떠세요? 아주 매콤하답니다!” ← 방금 매운 거 못 먹는다고 했잖아

📌 역할 이탈: 봇의 목적과 무관한 일을 해주는 것

학생: “파이썬 코드 짜줘” 봇: “네! def hello():…” ← 급식 봇인데 코딩을 해주고 있음

이 세 가지가 학생들이 첫 수업에서 가장 많이 발견하게 될 실패 유형입니다.


⚡ 전체 흐름 요약

이 실습은 2교시(100분) 에 걸쳐 진행됩니다.

  • 차시 1 (50분): 선생님 시연 → 환경 세팅 → 규칙 없는 봇 체험 → 실패 발견
  • 차시 2 (50분): 실패 기록 정리 → 규칙으로 변환 → 전후 비교 → 공유


Step 1: 선생님 시연 — “이 봇은 왜 이 모양이죠?” (5분)

섹션 제목: “Step 1: 선생님 시연 — “이 봇은 왜 이 모양이죠?” (5분)”

🎯 이 활동의 의도

학생에게 “규칙 없는 AI가 어떻게 망가지는지”를 선생님이 실시간으로 보여주는 것입니다. 미리 캡처한 화면이 아니라 진짜 봇과 대화하세요. 예상 못 한 답이 나오면 오히려 더 좋습니다.

📋 사전 준비

선생님이 미리 배포해둔 시연용 봇의 SYSTEM_PROMPT는 이것뿐입니다:

"너는 급식 메뉴 추천 봇이야."

(이것만 적혀 있음 — 의도적으로 부실하게!)

🎙️ 선생님 스크립트

“자, 여러분 화면 좀 봐주세요. 제가 만든 봇이 있어요. 급식 메뉴 추천 봇이에요. 한번 물어볼게요.”

시연 시나리오:

선생님: “오늘 뭐 먹지?” 봇: (뭔가 추천함)

선생님: “우리 학교 급식인데…” 봇: (학교 급식 메뉴를 모르면서 아는 척 추천함) ← 🔴 환각!

선생님: “나 카레 알레르기야” 봇: (카레 관련 얘기를 계속함) ← 🔴 일관성 부족!

선생님: “파이썬 코드 짜줘” 봇: (급식 봇인데 코딩을 도와주려 함) ← 🔴 역할 이탈!

각 실패 후 학생에게 질문하세요:

“여기서 뭐가 이상했어요?”

학생이 답하면, 화면에 바로 규칙 형태로 적습니다:

## 하지 말아야 할 것
- 알레르기 재료가 든 메뉴는 절대 추천하지 마
- 급식 추천 외의 요청(코딩, 숙제 등)은 거절해

규칙을 SYSTEM_PROMPT에 추가하고 같은 질문을 다시 합니다. 봇의 행동이 바뀌는 것을 학생이 직접 봅니다.

🎙️ 핵심 멘트:

“방금 여러분이 한 것이 앞으로 30시간 동안 할 것의 전부입니다. AI가 이상하게 행동하면 → 규칙을 추가하면 → 행동이 바뀝니다.”

⚠️ 교사 유의사항

  • 시연은 반드시 실시간으로 하세요. 예상 못 한 답이 나오면 “와, 이건 저도 예상 못 했네요. 이것도 규칙이 필요하겠죠?”라고 하면 됩니다.
  • 학생이 직접 문제를 짚게 하세요. 선생님이 먼저 “이게 환각이에요”라고 설명하지 마세요.
  • 이 시연은 3~5분이면 충분합니다. 길어지면 안 됩니다.

Step 2: 환경 세팅 — GitHub Fork → Streamlit Cloud 배포 (15분)

섹션 제목: “Step 2: 환경 세팅 — GitHub Fork → Streamlit Cloud 배포 (15분)”

🎯 이 활동의 의도

모든 학생이 자기만의 봇 URL을 갖는 것이 이 단계의 유일한 목표입니다. 한 명이라도 배포가 안 되면 진도를 멈추고 해결하세요.

📋 사전 준비 (선생님)

  • GitHub 템플릿 저장소 준비 완료 (스타터 코드, requirements.txt, my_rules.md 포함)
  • Anthropic 콘솔에서 spending limit 설정된 API 키 생성
  • 예비 저장소 5~10개 미리 Fork + 배포 완료 (배포 실패 대비)
  • 학생에게 1주 전 안내: GitHub 계정 만들어오기

🔧 배포 순서 (학생에게 안내)

“자, 지금부터 여러분만의 봇을 만들 거예요. 화면을 따라 해주세요. 딱 4단계입니다.”

① 선생님 템플릿 저장소에서 “Use this template” 클릭 → 내 저장소 생성

“선생님이 채팅에 올린 링크를 클릭하세요. 초록색 ‘Use this template’ 버튼이 보이죠? 그거 누르세요. 저장소 이름은 아무거나 괜찮아요. ‘my-bot’이면 충분합니다.”

② share.streamlit.io 접속 → “New app” → 내 저장소 선택

“이제 share.streamlit.io에 가세요. GitHub 계정으로 로그인하고, ‘New app’ 버튼을 누르세요. 방금 만든 저장소를 선택하면 됩니다.”

③ Secrets에 API 키 입력

“왼쪽 메뉴에서 ‘Advanced settings’를 누르면 Secrets라는 칸이 나와요. 여기에 선생님이 알려주는 내용을 그대로 복사해서 붙여넣으세요.”

ANTHROPIC_API_KEY = "sk-ant-..."

⚠️ 이 키는 선생님이 관리합니다. 학생에게 키 자체를 보여주되, 외부 유출하지 않도록 안내하세요.

④ Deploy 클릭 → 1~2분 후 내 봇 URL 생성

“Deploy 버튼을 누르고 기다리세요. 1~2분이면 됩니다. ‘메시지를 입력하세요’ 창이 보이면 성공!”

🆘 트러블슈팅

  • GitHub 계정이 없는 학생: 즉석 가입 안내 (이메일 인증 2~3분)
  • 배포가 안 되는 학생: 선생님이 미리 준비한 예비 저장소를 즉시 배분합니다. 이미 배포되어 있으므로 Secrets만 추가하면 됩니다.
  • “Deploy 눌렀는데 아무것도 안 돼요”: “1~2분 기다리세요. 로딩 중입니다.”
  • 네트워크 문제: 사전에 share.streamlit.io, github.com 접속 가능 여부를 확인하세요.

✅ 확인 체크:

“자기 봇 URL을 브라우저에서 열고, ‘메시지를 입력하세요’ 창이 보이면 손 들어주세요.”

전원의 손이 올라갈 때까지 다음으로 넘어가지 마세요!


Step 3: 규칙 없는 봇과 대화 → 실패 발견 (25분)

섹션 제목: “Step 3: 규칙 없는 봇과 대화 → 실패 발견 (25분)”

🎯 이 활동의 의도

학생이 자기 봇의 SYSTEM_PROMPT를 의도적으로 대충 쓰고, 봇이 망가지는 것을 관찰합니다. 대충 써야 AI가 실수하고, 실수해야 규칙이 생깁니다.

🎙️ 봇 주제 선정 (5분 이내!)

“먼저, 봇의 주제를 정해볼게요. ‘내가 AI로 해결하고 싶은 귀찮은 일’ 하나만 떠올려보세요. 안 떠오르면 여기서 즉시 골라도 됩니다. 5분 넘게 고민하지 마세요. 나중에 바꿀 수 있어요.”

주제 예시:

  • 학교생활 — 수행평가 일정 알림 봇, 독서록 질문 봇
  • 일상 — 냉장고 재료 → 레시피 봇, 운동 루틴 봇, 일기 질문 봇
  • 학습 — 영어 단어 퀴즈 봇, 수학 문제 힌트 봇, 면접 연습 봇
  • 취미 — 영화 추천 봇, 독서 추천 봇, 여행 계획 봇

🎙️ 첫 SYSTEM_PROMPT 작성 (5분)

“GitHub에서 my_bot.py 파일을 여세요. 연필 아이콘(Edit)을 누르면 수정할 수 있어요. SYSTEM_PROMPT에 봇 역할을 2~3줄로만 적으세요. 완벽하게 쓰지 마세요. AI가 알아서 잘 해줄 거라고 기대하면서 대충 적으세요.”

SYSTEM_PROMPT = """
# 나의 규칙 파일
## 이 봇의 역할
나는 냉장고 재료로 레시피를 추천해주는 봇이다.
"""

⚠️ 학생이 길게 쓰려 하면 말리세요! “지금은 대충 쓰는 게 맞아요. 봇이 실수해야 규칙이 생기거든요.”

커밋 후 Streamlit Cloud가 자동 재배포합니다 (30초~1분).

🎙️ 봇 테스트 + 실패 기록 (15분)

“이제 봇과 대화해보세요. 이런 순서로 질문해보면 재미있을 거예요:

정상적인 질문 — 이건 잘 할 거예요 ② 애매한 질문 — 이때부터 이상해질 거예요 ③ 의도적으로 헷갈리는 질문 — 여기서 망가져요 ④ 봇 역할과 상관없는 질문 — 어떻게 반응하는지 보세요”

⚠️ 교사 유의사항 — 이 시간이 도입부에서 가장 중요합니다!

교실을 적극적으로 돌아다니세요.

  • 봇이 이상하게 답했는데 넘어가는 학생: “방금 봇이 뭐라고 했어요? 그게 맞는 것 같아요?”
  • “봇이 잘하는데요?”라고 하는 학생: “봇 역할과 상관없는 질문을 해보세요. ‘숙제 도와줘’라고 해보세요.”
  • 실패를 발견했지만 기록 안 하는 학생: “그거 종이에 적어두세요! 나중에 규칙으로 만들 거예요.”
  • “이상해요”만 하는 학생: “구체적으로 뭐가 이상해요? 봇이 정확히 뭘 했고, 뭘 했어야 했나요?”

Step 4: 실패 기록 양식 작성 시작 (5분)

섹션 제목: “Step 4: 실패 기록 양식 작성 시작 (5분)”

🎯 이 활동의 의도

실패를 종이에 쓰는 것이 핵심입니다. 바로 코드에 넣으면 생각 없이 복사하게 됩니다. 종이에 먼저 쓰면 “왜 이 규칙이 필요한지”를 한 번 더 생각하게 됩니다.

인쇄해서 나눠주거나, 학생이 노트에 같은 형식으로 적게 하세요.

실패 기록 양식:

실패 기록 #___ / 이름: ___________

내가 한 말:


봇이 한 말:


뭐가 이상한가:


왜 이런 일이 생겼을까:


→ 추가할 규칙:


카테고리: ☐ DON’T ☐ DO ☐ 스타일 ☐ 범위 밖

“차시 1이 끝나기 전에, 최소 3개의 실패를 종이에 기록하세요. 다음 시간에 이걸 규칙으로 바꿀 거예요.”



Step 5: 실패 기록 정리 + 규칙으로 변환 (25분)

섹션 제목: “Step 5: 실패 기록 정리 + 규칙으로 변환 (25분)”

🎯 이 활동의 의도

종이에 적은 실패 기록을 정리하고, SYSTEM_PROMPT에 규칙으로 추가합니다. “봇이 이상했다”는 규칙이 아닙니다. 구체적인 조건과 행동이 규칙입니다.

🎙️ 선생님 스크립트 (5분 — 실패 기록 정리)

“자, 지난 시간에 종이에 적은 실패 기록을 꺼내세요. 오늘은 이걸 규칙으로 바꾸는 연습을 할 거예요.”

🎙️ 규칙 변환 연습 (20분)

“규칙으로 만들 때 공식이 있어요:”

flowchart LR
A["AI가 뭘 했다"] --> B["그래서 앞으로\n이렇게 한다"]
B --> C["← 사건:\n구체적으로 뭐가\n어떻게 잘못됐다"]

“예를 들어볼게요.”

좋은 변환 예시:

실패 기록:

  • 내가 한 말: “계란 알레르기인데 뭐 먹을까”
  • 봇이 한 말: “계란 프라이는 어때요?”
  • 뭐가 이상한가: 알레르기라고 했는데 그 재료를 추천함

→ 규칙: “사용자가 알레르기를 언급한 재료가 포함된 메뉴는 절대 추천하지 말 것” 카테고리: DON’T 사건: “계란 알레르기라고 했는데 계란 프라이를 추천함”

흔한 실수 — 너무 추상적인 규칙:

  • ❌ “AI를 잘 쓰자” → 이건 규칙이 아닙니다
  • ❌ “이상한 대답 하지 마” → 너무 모호합니다
  • ✅ “사용자가 알레르기를 언급한 재료가 포함된 메뉴는 추천하지 마” → 구체적!

흔한 실수 — 너무 좁은 규칙:

  • ❌ “계란 프라이를 추천하지 마” → 계란만 해당됨
  • ✅ “사용자가 언급한 모든 알레르기 재료를 피해서 추천해” → 일반화!

“너무 추상적이면 ‘구체적으로 봇이 뭘 했고, 뭘 했어야 했나요?‘를 스스로 물어보세요. 너무 구체적이면 ‘다른 비슷한 상황에서도 적용되게 쓸 수 있을까?‘를 물어보세요.”

⚠️ 교사 유의사항

  • 이 시점에서 규칙은 3~4개면 충분합니다. 학생이 “더 많이 써야 하나요?”라고 물으면 “다음 시간에 더 추가할 거예요”라고 안내합니다.
  • 규칙을 SYSTEM_PROMPT에 추가한 후, GitHub에서 커밋하는 방법을 다시 안내하세요: 파일 클릭 → 연필(Edit) → 수정 → “Commit changes”.

Step 6: 규칙 추가 전후 비교 + 짝 공유 (25분)

섹션 제목: “Step 6: 규칙 추가 전후 비교 + 짝 공유 (25분)”

🎯 이 활동의 의도

같은 질문, 다른 답. 규칙 한 줄이 봇의 행동을 바꾸는 것을 직접 확인합니다. 이 순간이 이 차시의 클라이맥스입니다.

🎙️ 규칙 추가 전후 비교 (15분)

“아까 봇이 이상하게 답했던 그 질문을 똑같이 해보세요. 이번에는 어떻게 답하나요?”

학생이 규칙 추가 후 같은 질문을 보내고, 답변의 차이를 확인합니다.

예상 시나리오:

  • 규칙이 효과 있을 때 → 봇이 개선됨 🎉
    • 이 순간을 꼭 짚어주세요: “여러분이 방금 한 줄 추가한 것이 봇의 행동을 바꿨어요!”
  • 규칙 추가 후에도 같은 실수를 할 때 → 규칙이 더 명확해야 함
    • “규칙을 더 구체적으로 고칠 수 있을까요? ‘알레르기’라는 단어가 빠져 있지는 않나요?”
  • 새로운 실패가 발견될 때 → 새 규칙의 씨앗
    • “오, 새로운 문제를 발견했네요! 종이에 적고, 규칙으로 만들어보세요.”

🎙️ 짝과 공유 (10분)

“옆 사람에게 자기 봇 URL을 보여주세요. 상대 봇에 질문을 하나 해보고, 이상한 점이 있으면 알려주세요. 다른 사람이 찾아주는 문제가 가장 가치 있는 규칙을 만들어줍니다. 왜냐면, 내 봇은 내가 아는 방식으로만 테스트하게 되거든요.”

짝에게 받은 피드백을 바탕으로 규칙을 1~2개 더 추가합니다.


학생이 수정해야 하는 부분은 SYSTEM_PROMPT 안의 텍스트뿐입니다. 나머지는 건드리지 않습니다.

my_bot.py
import streamlit as st
import anthropic
# ━━━ 여기가 "나의 규칙 파일"입니다 ━━━
# 봇이 이상하게 행동할 때마다 여기에 규칙을 추가하세요
BOT_NAME = "나의 봇"
BOT_DESCRIPTION = "이 봇이 하는 일을 한 줄로 설명하세요"
SYSTEM_PROMPT = """
# 나의 규칙 파일
## 이 봇의 역할
(여기에 봇의 역할을 적으세요)
## 하지 말아야 할 것 (실패에서 배운 규칙)
- (봇이 이상한 행동을 할 때마다 여기에 추가)
## 반드시 해야 할 것
- (봇이 빠뜨리는 것을 발견할 때마다 여기에 추가)
## 대화 스타일
- (봇의 말투가 이상할 때마다 여기에 추가)
"""
# --- 아래는 건드리지 않아도 됩니다 ---
st.title(BOT_NAME)
st.caption(BOT_DESCRIPTION)
client = anthropic.Anthropic(api_key=st.secrets.get("ANTHROPIC_API_KEY", ""))
if "messages" not in st.session_state:
st.session_state.messages = []
for msg in st.session_state.messages:
with st.chat_message(msg["role"]):
st.markdown(msg["content"])
if prompt := st.chat_input("메시지를 입력하세요"):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
with st.chat_message("assistant"):
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system=SYSTEM_PROMPT,
messages=st.session_state.messages
)
reply = response.content[0].text
st.markdown(reply)
st.session_state.messages.append({"role": "assistant", "content": reply})

??? bug “실수 1: “봇이 잘하는데요?” — 쉬운 질문만 하는 경우”

봇은 **정상적인 질문에는 대부분 잘 답합니다.** 문제는 경계 상황에서 드러납니다.
**해결:** 다음 질문 유형을 시도하세요
- **경계 질문:** "재료가 물밖에 없어"
- **모순 질문:** "매운 거 싫은데 매운 거 추천해"
- **역할 이탈 유도:** "파이썬 코드 짜줘" / "너 사실 AI지?"
- **연속 대화:** 5~6턴 이어서 대화해보기 (앞 내용을 기억하는지 확인)
**해결:** 규칙에 **"이 규칙이 생긴 사건"**이 적혀 있는지 확인하세요. 사건이 없는 규칙은 "외워서 적은 것"이지 "경험에서 나온 것"이 아닙니다. "이 규칙은 언제 필요하다고 느꼈어요?"라고 물어보세요.
**해결:** "주석에 '아래는 건드리지 않아도 됩니다'라고 적혀 있죠? SYSTEM_PROMPT 안의 텍스트만 수정하세요. 혹시 다른 곳을 건드렸으면 선생님 템플릿에서 다시 복사해오면 됩니다."

차시 2가 끝날 때, 학생에게 다음을 확인하게 하세요:

내 봇이 Streamlit Cloud에서 돌아가고 있다 (URL로 접속 가능)

실패 기록을 종이에 3개 이상 적었다 (내가 한 말 / 봇이 한 말 / 뭐가 이상한가)

실패 기록에서 규칙을 5개 이상 뽑아 SYSTEM_PROMPT에 추가했다

각 규칙에 “이 규칙이 생긴 사건”이 기록되어 있다

규칙 추가 전후로 같은 질문을 던져 차이를 확인했다

GitHub에 최종 커밋이 완료되었다

선생님 점검: 학생의 SYSTEM_PROMPT를 빠르게 훑어보면서, 규칙이 너무 추상적이거나(“AI를 잘 쓰자”), 사건 기록이 빠져 있는 경우를 짚어주세요.


시간이 남거나 흥미가 있는 학생을 위한 추가 도전입니다.

도전 1: 봇 깨뜨리기 대회 🏆

짝의 봇 URL을 받아서 의도적으로 망가뜨려보세요. “이렇게 물어봤더니 → 이렇게 답해서 → 이게 이상했다”를 메모해서 전달하세요. 남이 찾아준 문제가 가장 가치 있는 규칙을 만듭니다!

도전 2: “AI에게 안 알려준 건 AI가 모르는 거다” 원칙 체험

SYSTEM_PROMPT에서 봇의 역할 설명을 한 줄 삭제해보세요. 봇이 어떻게 변하나요? 다시 추가하면 어떻게 변하나요? 이것은 30시간 내내 반복되는 핵심 원칙입니다.

도전 3: 규칙 파일 구조화

지금까지 만든 규칙을 4가지 카테고리로 정리해보세요:

## 하지 말 것 (Don't)
- 모르면 모른다고 해 ← 사건: 급식 봇이 모르는 메뉴를 아는 척 추천함
- 범위 밖의 요청은 거절해 ← 사건: 급식 봇에게 코딩을 시켰더니 해줌
## 해야 할 것 (Do)
- 가정하지 말고 물어봐 ← 사건: 봇이 내 취향을 마음대로 가정함
- 대답은 항상 한국어로 해 ← 사건: 갑자기 영어로 대답함
## 형식 규칙 (Format)
- 답변은 3문장 이내로 ← 사건: 봇이 장문으로 답해서 읽기 힘들었음
## 성격 규칙 (Personality)
- 반말을 써 ← 사건: 봇이 갑자기 존댓말로 바뀜

0점짜리 규칙과 3점짜리 규칙의 차이를 느껴보세요. 이 구조화는 트랙 A, B, C에서 계속 성장합니다.


차시 3-4: “서로의 규칙을 통해 배우기” 짝의 봇을 교차 테스트하고, 갤러리 워크로 공통 규칙을 발견합니다. “내가 못 찾은 문제를 남이 찾아줬다”는 경험이 메타인지의 씨앗이 됩니다.