AI 파이썬 Lab · 심화 · 9주차
심화 · 자율 프로젝트

자율 프로젝트 ① 착수

이제 정해진 미션이 아니라, 내가 정한 프로젝트예요. 오늘 목표는 '완성'이 아니라 핵심 기능 하나가 도는 것입니다.

오늘의 목표

오늘 배우는 것

자율 프로젝트 첫날이에요. 오늘부터는 정답을 알려주기보다 막힌 곳을 함께 푸는 코칭 시간입니다. 속도는 사람마다 달라도 괜찮아요.

🎯
GOAL 1
만들 것을 확정하고 핵심 기능 1개를 정한다
🦴
GOAL 2
핵심 기능 하나가 도는 기본 골격(MVP)을 만든다
📝
GOAL 3
오늘의 진행 상황을 노션에 기록한다
새 개념 ①

MVP (최소 기능 제품)란?

핵심 기능 하나만 들어간 '가장 작은 완성품'이에요. 영어로 Minimum Viable Product의 줄임말이죠. 모든 기능을 한 번에 만들지 않고, 가장 중요한 한 조각부터 돌아가게 만드는 거예요.

🦴
MVP (최소 기능 제품)
핵심 기능 하나만 들어간 가장 작은 완성품 (Minimum Viable Product).
왜 이렇게 할까? 작게 만들어 빨리 돌려보면, 막힘을 일찍 발견하고 고칠 수 있어요. "다 만들고 실패"보다 "조금씩 만들고 계속 확인"이 훨씬 빠른 길이에요.
🏠 비유: 집 짓기
집을 지을 때 기둥과 골격(MVP)부터 세워요. 벽지·가구 같은 인테리어는 나중이죠. 골격이 튼튼해야 그 위에 무엇이든 올릴 수 있어요. 프로젝트도 똑같아요.
개념

한꺼번에 다 만들지 않는다

오늘의 전략은 단순해요. 핵심 정하기 → 그것만 먼저 → 점점 키우기. 이 순서를 지키면 막막한 프로젝트도 한 걸음씩 나아갈 수 있어요.

1
핵심 정하기
"이건 ___해주는 앱"의 빈칸이 바로 핵심이에요. 이 문장을 완성하면 무엇을 먼저 만들어야 할지 명확해져요.
2
그것만 먼저
핵심 기능 1개가 작동하는 것에만 집중해요. 나머지는 메모만. 돌아가는 1개가 아이디어만 있는 10개보다 가치 있어요.
3
점점 키우기
핵심이 돌아가면, 다음 시간에 기능을 하나씩 더해요. 레고처럼 한 조각씩 쌓아가요.
🏗️ 비유: 집 먼저 뼈대부터
집을 지을 때 인테리어보다 기둥·바닥부터 세워요. 뼈대가 없으면 아무것도 올릴 수 없어요. 프로젝트도 핵심 기능(뼈대)이 돌아가야 그 위에 디자인·기능을 얹을 수 있어요.
🧭 막히면 이 순서로

오늘부터는 코칭 시간이에요. 막히면 ① 자가 디버깅 → ② AI에게 질문 → ③ 선생님과 의논 순서로 해보세요.

미션 1

기획 확정 + 핵심 기능 정하기

🎯 목표: 만들 것을 확정하고, 가장 먼저 만들 핵심 기능 1개를 고른다.

이렇게 진행해요

1
지난주 기획서 다시 보기
8주차에 쓴 기획서 초안을 꺼내 읽어요.
2
선생님과 1:1 범위 점검
"이걸 2주에 만들 수 있나?"를 함께 확인해요. 너무 크면 줄여요.
3
핵심 기능 + 재료 확인
핵심 기능 1개와, 필요한 재료(API·데이터)를 정해요.
💬 이렇게 입력해 보세요
내 프로젝트 [한 줄 설명]를 2주에 만들려고 해. 꼭 먼저 만들어야 할 핵심 기능 1개를 골라줘.
🎯 핵심 기능 고르는 법
"이건 ___해주는 앱"의 빈칸을 채워 보세요. 그 빈칸이 바로 핵심 기능이에요. 예: "이건 오늘 할 일을 정리해주는 앱" → 핵심은 '할 일 추가·보기'.
⚠️ 자주 하는 실수
  • 기능을 다 만들려 욕심냄 → 핵심 하나만. 나머지는 노션에 메모만 해둬요.
  • 핵심을 못 고름 → "이건 ___해주는 앱"의 빈칸을 먼저 채워 보세요.
미션 2

핵심 기능 하나 작동시키기

🎯 목표: AI와 함께 핵심 기능 1개가 실제로 도는 기본 골격을 만든다.
✏️ 먼저 스스로 해보기
내 핵심 기능은 무엇을 하나?
코드를 짜기 전에 정리해 보세요.
① 내 핵심 기능이 '입력 → 처리 → 출력' 중 무엇을 하는지 적어 보세요.
② AI에게 보낼 첫 요청을 한 문장으로 먼저 적어 보세요.

AI에게 골격 요청하기

🔑 .env 파일 만드는 법 (처음 한 번만)

1단계 — VS Code 터미널에서 수업 폴더 안에 파일 만들기

터미널
# Windows
New-Item .env

# Mac
touch .env

2단계 — .env 파일을 열고 아래 한 줄 입력 (선생님이 알려준 키 사용)

.env
OPENAI_API_KEY=여기에_선생님이_알려준_키_붙여넣기

⚠️ 키 앞뒤에 공백이나 따옴표 없이 딱 붙여서 저장하세요. .env 파일은 코드와 같은 폴더에 있어야 해요.

스스로 정리했다면, 아래처럼 요청해 핵심 기능부터 작동시켜 보세요.

💬 이렇게 입력해 보세요
[내 프로젝트]의 핵심 기능인 [핵심 기능]을 먼저 만들어줘. 디자인은 나중에 할 테니 기능이 작동하는 것부터 단순하게 만들어줘.

골격은 보통 이런 모양이에요

대부분의 앱은 입력 → 처리 → 출력 세 부분으로 되어 있어요. AI가 준 코드에서도 이 세 부분을 찾을 수 있으면 충분해요. (키는 코드에 직접 쓰지 않고 .env / st.secrets에서 자동으로 불러와요.)

app.py — 핵심 기능 골격(MVP)
import streamlit as st
from openai import OpenAI

client = OpenAI()   # 키는 .env / st.secrets에서 자동으로

def ask_ai(prompt):
    res = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}]
    )
    return res.choices[0].message.content

st.title("내 프로젝트")

# ① 입력 ─ 사용자에게서 받는다
user_input = st.text_input("무엇을 도와줄까요?")

# ② 처리 ─ 핵심 기능 (여기선 AI 호출)
if st.button("실행"):
    result = ask_ai(user_input)
    # ③ 출력 ─ 결과를 화면에
    st.write(result)
▸ 브라우저 화면(예시)
내 프로젝트
무엇을 도와줄까요? [ 내일 시간표 짜줘 ]
[ 실행 ]

좋아요! 내일 시간표를 이렇게 짜볼게요 ...
⚠️ 자주 하는 실수
  • 한 번에 다 만들려다 막힘 → 동작 하나만 먼저 작동시켜요.
  • 코드 이해 없이 넘어감 → AI에게 "한 줄씩 설명해줘"라고 요청해요.
  • 오늘 못 끝냄 → 정상이에요. 어디까지 됐는지 기록만 해두면 돼요.
🔒 힌트 — 어디서부터 손대야 할지 모르겠어요

핵심 기능을 입력 → 처리 → 출력 세 칸으로 먼저 나눠 적어 보세요.

입력: 사용자에게 무엇을 받나? (글자·선택·숫자)
처리: 받은 걸로 무엇을 하나? (AI 호출·계산·검색)
출력: 결과를 어떻게 보여주나? (글·표·이미지)

이 세 칸을 그대로 AI에게 알려주면, 골격 코드를 훨씬 정확하게 받을 수 있어요.

미션 3

오늘 한 일 노션에 남기기

🎯 목표: 오늘의 진행 상황과 다음 할 일을 노션에 기록하고, 이어서 갈 방향을 정한다.

딱 3줄만 기록해요

1
한 일
오늘 어디까지 만들었나?
2
막힌 점
무엇이 안 됐나? (다음에 이어서 풀 부분)
3
다음 할 일
다음 시간에 무엇부터 할까?

작동 화면 캡처도 함께 붙이면, 다음 시간에 한눈에 떠올릴 수 있어요.

🃏 선택지 카드 — 다음에 이어서 갈 방향

핵심이 돌아간다면, 다음엔 어디로 갈까요? 하나를 골라 AI에게 요청해 보세요.

A
두 번째 기능 추가
핵심은 두고 새 기능 하나를 더하기
난이도 ★☆☆
→ "기존 기능은 그대로 두고 [두 번째 기능]을 추가해줘"
B
화면 꾸미기
기능은 그대로, 화면을 보기 좋게
난이도 ★★☆
→ "기능은 그대로 두고 화면 디자인을 더 보기 좋게 다듬어줘"
C
데이터 저장
입력한 내용이 사라지지 않게
난이도 ★★☆
→ "입력한 내용이 사라지지 않게 저장·불러오기 기능을 더해줘"
D
외부 연결
공개 API·데이터를 연결해 확장
난이도 ★★★
→ "공개 API나 데이터를 연결해 기능을 확장해줘"
E
나만의 방향!
위에 없는 나만의 다음 단계를 직접 정하기
⚠️ 자주 하는 실수
  • 기록이 귀찮아 건너뜀 → 딱 3줄이면 다음 시간의 나를 구해줘요.
  • 새 기능 추가 시 "기존 기능은 그대로 두고"를 빠뜨림 → 그러면 만들던 게 사라질 수 있어요.
보너스 미션

상황별 가이드

자율 프로젝트는 속도가 사람마다 달라도 괜찮아요. 내 상황에 맞는 쪽을 골라 보세요.

보너스 ① 두 번째 기능 도전 (빠른 학생)

핵심이 다 됐다면 두 번째 기능에 도전해 보세요.

💬 이렇게 입력해 보세요
핵심 기능은 다 됐어. 기존 기능은 그대로 두고 [두 번째 기능]을 추가해줘.

보너스 ② 화면 다듬기 (빠른 학생)

기능은 그대로 두고 화면·디자인을 보기 좋게 정리해요.

🐢 진도가 막혔다면

1
더 작게 쪼개기
핵심 기능을 더 작은 단계로 나눠 하나씩.
2
에러를 그대로 보여주기
에러 메시지를 복사해 AI에게 그대로 보여줘요.
3
선생님께 코칭 요청
"여기까지 했고 이게 안 돼요"라고 설명해요.
🎯 성공 기준
핵심 기능 1개가 돌아가고 진행이 노션에 기록되면 오늘은 대성공이에요. 완성은 다음 주에 하면 됩니다.
정리

오늘의 핵심 정리

1️⃣
확정
프로젝트를 확정하고 핵심 기능 1개를 정했다
2️⃣
골격
핵심 기능 하나가 도는 기본 골격(MVP)을 만들었다
3️⃣
기록
진행 상황을 노션에 남겨 다음을 준비했다
📌 다음 주 예고

다음 주는 자율 프로젝트 ② 완성이에요. 오늘 만든 골격에 기능을 더해 MVP를 완성하고, 테스트 후 발표를 예행연습합니다. 오늘 막힌 부분을 한 번 더 시도하고, 이어갈 부분을 노션에 정리해 오세요.

🔧 막혔을 때 — 자가 디버깅 4단계

자율 프로젝트에선 스스로 푸는 힘이 가장 중요해요. 막히면 이 순서대로 해봅니다.

1
에러 메시지 읽기
빨간 글자에서 '몇 번째 줄'과 '무슨 에러'인지 찾아본다.
2
AI에게 보여주기
에러 메시지를 복사해서 "이 에러를 수정해줘"라고 요청한다.
3
고쳐서 다시 실행
AI가 준 수정 코드를 적용하고 다시 실행해 본다.
4
선생님께 질문
그래도 안 되면 '에러 메시지 + 내가 시도한 것'을 함께 설명한다.