실습 6주차 - yunsaang/- GitHub Wiki
Step 1: Claude 접속 및 계정 생성 (10분) – 접속 • https://claude.ai 접속 • 구글 계정 또는 이메일로 가입 • 무료 플랜 선택 (Pro 플랜은 월 $20) – 인터페이스 둘러보기 • ChatGPT와 유사한 구조- 좌측 대화 목록, 중앙 채팅 영역
Step 2: 첫 대화 (10분) – 프롬프트 • 안녕하세요! 저는 한세대학교 IT학부 1학년입니다. 답변: 안녕하세요! 한세대학교 IT학부 1학년이시군요! 😊
대학교 첫 학년, 설레고 기대되는 시간이겠네요. 무엇이든 도움이 필요하신 게 있으면 편하게 말씀해 주세요!
혹시 궁금하신 게 있으신가요? 예를 들어:
- 프로그래밍 공부나 과제 도움
- IT 관련 개념 설명
- 학습 방법 추천
- 그 외 궁금한 것들
무엇이든 물어보세요! 🙌
• Claude의 특징과 장점을 간단히 소개해주세요. ChatGPT와 다른 점 3가지도 알려주세요. 답변:
안전성 중심 설계 Anthropic은 AI 안전 연구에 특화된 회사로, Claude는 안전하고 유익한 AI를 목표로 설계되었습니다.
긴 문맥 처리 매우 긴 문서나 대화도 잘 이해하고 처리할 수 있습니다.
솔직하고 균형 잡힌 답변 모르는 것은 모른다고 말하고, 복잡한 주제도 균형 있게 설명합니다.
한국어 능력 한국어로도 자연스럽고 유창하게 소통할 수 있습니다.
| Claude | ChatGPT -- | -- | -- 만든 곳 | Anthropic | OpenAI 철학 | 안전성·윤리 최우선 | 범용 성능 최우선 성격 | 신중하고 솔직함 | 적극적이고 다재다능
1️⃣ 개발사와 철학이 다릅니다 ChatGPT는 OpenAI, Claude는 Anthropic이 만들었습니다. Anthropic은 AI 안전 연구에 특히 집중하는 회사입니다.
2️⃣ 답변 스타일이 다릅니다 Claude는 불확실한 내용에 대해 더 신중하게 "모른다"고 말하는 편이고, 윤리적 판단이 필요한 상황에서 더 세심하게 접근합니다.
3️⃣ 플러그인/생태계 차이 ChatGPT는 다양한 플러그인과 GPT Store 생태계가 있고, Claude는 현재 Claude.ai와 API를 중심으로 서비스됩니다.
궁금한 점이 더 있으면 편하게 물어보세요! 😊
Step 3: Week 5 원칙 적용 프롬프트 5대 원칙이 claude에서 동일하게 적용됩니다.
Step 1: PDF 문서 업로드 (10분) – 방법 – 추천 문서 • 수업 교재 일부, 위키피디아 긴 문서, 논문 또는 보고서 Step 2: 문서 요약 요청 (10분) – 프롬프트 예시 • 업로드한 문서를 분석해주세요. 요청사항 내용 5가지 불릿 포인트 / 4. 배울 수 있는 점 답변:
Alexandara Harry & Sayudin | Injurity Journal, 2023
AI는 머신러닝·자연어처리 기술을 통해 교육을 개인 맞춤형으로 혁신할 잠재력을 지닌다. 챗봇·지능형 튜터링·자동 채점 등 다양한 형태로 교육 효율을 높이고 있으나, 개인정보 보호·비용·편향성 등의 과제도 함께 존재한다. 이러한 도전과제를 균형 있게 해결할 때 AI는 모든 학생을 위한 더 공정하고 효과적인 교육 환경을 만들 수 있다.
-- | -- | -- 1 | Personalized Learning | 개인 맞춤형 학습 2 | Chatbot | AI 대화형 튜터 3 | Automated Grading | 자동 채점 시스템 4 | Data Analysis | 학습 데이터 분석 5 | Ethical Considerations | AI 윤리적 고려
🎯 개인 맞춤 학습 — AI가 학생 개개인의 학습 속도·스타일·수준을 분석해 최적화된 콘텐츠와 피드백을 제공, 학업 성취도와 참여도를 높임
🤖 챗봇 활용 — Georgia State University의 'Pounce', Duolingo의 언어 학습 봇처럼 행정 업무 자동화 + 학습 지원을 동시에 수행
📝 자동 채점 시스템 — 자연어처리(NLP) 기반 에세이 자동 채점으로 교사 시간 절약 및 즉각적인 피드백 제공 가능
⚠️ 주요 도전과제 — 개인정보 보안, 신뢰 부족, 높은 도입 비용, AI 알고리즘의 편향성 문제가 해결해야 할 핵심 과제⚖️ 윤리적 고려 — 접근성(장애 학생 포함), 투명성, 공정성을 반드시 설계 단계부터 반영해야 함
IT 학부 1학년으로서 특히 의미 있는 인사이트:
기술은 도구, 방향은 사람이 결정한다
AI를 배우는 IT 학생으로서, 단순히 "기술을 만드는 것"을 넘어 그 기술이 사회에 미치는 영향까지 생각하는 시각을 갖는 것이 중요합니다.
구체적으로는 세 가지를 배울 수 있습니다. 첫째, 머신러닝과 자연어처리가 실제 교육 현장에서 어떻게 쓰이는지 실용적 맥락을 이해할 수 있습니다. 둘째, AI 시스템 설계 시 편향성·공정성·투명성을 반드시 고려해야 한다는 개발자의 책임감을 배울 수 있습니다. 셋째, 좋은 기술도 신뢰(Trust)를 얻지 못하면 채택되지 않는다는 현실적인 교훈을 얻을 수 있습니다.
과제나 발표에 활용하실 건가요? 더 깊이 분석해 드릴 수 있어요! 😊
Step 3: 문서 기반 Q&A • 이 문서에서 [특정 주제]에 대해 어떻게 설명하고 있나요? • 이 문서의 주장에 반대할 수 있는 논점은 무엇일까요?
문서는 개인 맞춤형 학습을 AI 교육 활용의 가장 핵심적인 장점으로 설명합니다.
정의: 각 학생의 개인적 필요, 강점, 약점, 관심사에 맞게 학습 경험을 조정하는 교수법입니다.
작동 방식: 기술을 활용해 각 학생의 수준과 학습 속도에 맞게 교육을 적응시킵니다. 구체적으로 AI는 머신러닝 알고리즘을 사용해 학생의 학습 행동, 선호도, 성취도 데이터를 분석하고 패턴을 파악합니다.
실제 효과: 부진한 학생은 따라잡을 수 있고, 우수한 학생은 자신의 수준에서 도전을 받을 수 있습니다.
실제 사례: Carnegie Learning의 AI 수학 소프트웨어는 학생 수학 성적을 최대 30%까지 향상시킨 것으로 나타났습니다.
문서는 전반적으로 AI 개인 맞춤형 학습에 긍정적이지만, 아래와 같은 반론을 제기할 수 있습니다.
① 데이터 품질 문제 문서 자체도 인정하듯 AI 알고리즘을 뒷받침할 신뢰할 수 있고 정확한 데이터가 필요하며, 데이터 품질이 개인 맞춤 학습의 정확도에 영향을 미칩니다. → 현실에서 완벽한 데이터 수집은 매우 어렵습니다.
② 교사 역할 축소 우려 AI가 학습을 자동화할수록 교사와 학생 간의 인간적 유대감·멘토링이 약해질 수 있습니다. 문서는 효율성을 강조하지만, 교육의 감성적·사회적 측면은 AI가 대체하기 어렵습니다.
③ 디지털 격차 (Digital Divide) AI 기반 플랫폼은 인터넷·기기 접근이 필요합니다. 저소득층이나 농촌 학생들은 오히려 교육 불평등이 심화될 수 있습니다.
④ 과도한 개인화의 역효과 학생이 항상 자신의 수준에 맞는 콘텐츠만 접하면 협업 능력·다양한 관점 수용이 줄어들 수 있습니다. 교육은 불편함과 도전을 통해서도 성장합니다.
⑤ 개인정보 침해 위험 학습 데이터를 지속적으로 수집·분석하는 과정에서 학생의 민감한 정보가 노출될 위험이 있으며, 특히 미성년자 데이터 보호는 더욱 엄격한 기준이 필요합니다.
구분 | 문서의 입장 | 반대 논점 -- | -- | -- 학습 효과 | 성취도·참여도 향상 | 인간적 교육 요소 약화 접근성 | 포용적 교육 가능 | 디지털 격차 심화 우려 데이터 | 맞춤화의 핵심 도구 | 개인정보 침해 위험 교사 역할 | 시간 절약·효율화 | 멘토링 기능 약화
💡 IT 학부생으로서 생각해볼 점: 기술을 설계할 때 "효율성"만큼 "형평성"과 "인간다움"도 함께 고려하는 개발자가 되는 것이 중요합니다! 😊
복잡한 프로그램 생성 요청 • Python으로 할 일 관리 프로그램(To-Do List)을 만들어줘. – Claude의 코드 특징 • 매우 상세한 주석, 체계적인 구조, 예외 처리 철저 • 왜 이렇게 작성했는지 설명도 함께 제공 답변:
코드를 3개의 계층으로 나눴습니다:
계층 | 함수들 | 역할 -- | -- | -- 파일 입출력 | load_todos, save_todos | JSON 읽기·쓰기 핵심 기능 | add_todo, view_todos, complete_todo, delete_todo | 비즈니스 로직 진입점 | main, print_menu | UI & 실행 흐름1. 매 작업 후 즉시 저장
todos.append(new_todo)
if save_todos(todos): # 추가하자마자 저장
프로그램이 갑자기 꺼져도 데이터가 사라지지 않습니다.
2. ID는 "현재 최댓값 + 1" 전략
return max(item["id"] for item in todos) + 1
삭제 후 재추가해도 ID가 절대 겹치지 않습니다.
3. 삭제 시 이중 확인
confirm = input("정말 삭제하시겠습니까? (y/n): ")
실수 방지를 위해 y 외의 모든 입력은 취소로 처리합니다.
4. if __name__ == "__main__" 사용 다른 파일에서 import해도 main()이 자동 실행되지 않아, 함수 재사용이 가능합니다.
python todo.py
todos.json 파일이 자동 생성되며, 다음 실행 때 자동으로 불러옵니다. 추가 라이브러리 설치 없이 바로 실행됩니다!
코드 리팩토링 요청 답변:
클래스를 클릭하면 자세한 설명을 요청할 수 있습니다. 전체 구조와 리팩토링 이유를 정리해드릴게요.
함수형 버전은 할 일 하나를 그냥 딕셔너리로 표현했습니다.
# 이전 (함수형): 딕셔너리 — 구조를 직접 알아야 함
item["done"] = True
OOP: 객체 — 의도가 명확하고 메서드로 동작 포함
item.mark_done()
to_dict()와 @classmethod from_dict()를 통해 JSON 변환 책임도 TodoItem 스스로 가집니다.
파일 이름을 전역 변수로 공유하던 함수들을 하나의 클래스로 묶었습니다.
# 이전: 전역 상수를 함수들이 암묵적으로 공유
FILE_NAME = "todos.json"
def load_todos(): ... # FILE_NAME을 그냥 참조
OOP: 파일 경로를 인스턴스 속성으로 소유
repo = TodoRepository(file_path="todos.json")
repo.load()
나중에 JSON → SQLite로 바꾸고 싶으면 TodoRepository만 교체하면 됩니다. 다른 클래스는 전혀 건드릴 필요가 없습니다.
함수형에서 가장 큰 문제는 todos 리스트를 매 함수 호출마다 인자로 전달해야 했다는 점입니다.
# 이전: todos를 항상 들고 다녀야 함
add_todo(todos)
complete_todo(todos)
delete_todo(todos)
OOP: 상태(self._todos)를 내부에 보관
manager.add("운동하기")
manager.complete(1)
@property로 todos, count, done_count를 외부에 안전하게 노출하고, _generate_id와 find_by_id는 접두사로 내부 전용임을 표시합니다.
함수형 main()은 메뉴 출력, 입력 처리, 비즈니스 로직이 뒤섞여 있었습니다. TodoApp은 오직 UI만 담당하고 모든 처리는 Manager에게 위임합니다.
# 이전: if/elif 체인 (메뉴 추가 시 main() 수정 필요)
if choice == "1":
add_todo(todos)
elif choice == "2":
...
OOP: 딕셔너리 디스패치 (메뉴 추가 = 한 줄 추가)
handlers = {
"1": self._handle_add,
"2": self._handle_view,
# "6": self._handle_search ← 이렇게만 추가하면 끝
}
| 함수형 (이전) | OOP (이후) | |
|---|---|---|
| 상태 관리 | todos 리스트를 계속 전달 | self._todos로 내부 관리 |
| 코드 양 | 적음 (소규모에 유리) | 약간 많음 (초기 설계 필요) |
| 기능 추가 | 함수 추가 + main() 수정 | 메서드 추가만으로 완결 |
| 저장 방식 변경 | 모든 함수를 찾아서 수정 | Repository만 교체 |
| 테스트 | todos를 매번 직접 구성 | Mock Repository 주입 가능 |
| 읽기 쉬움 | 초보자에게 직관적 | 구조가 명확해 중·대형 프로젝트에 유리 |
결론: 이 정도 규모에서는 함수형도 충분하지만, 기능이 늘어날수록 OOP의 진가가 드러납니다. 특히 TodoApp → TodoManager→ TodoRepository → 파일 순서의 의존 관계가 한 방향으로만 흐르는 구조가 핵심입니다.
코드 분석 요청 • 다음 코드를 분석해줘:
JSON 파일 기반의 CLI(터미널) 할 일 관리 프로그램입니다.
실행 흐름
main() 시작
→ load_todos()로 JSON 파일 불러오기
→ while 루프로 메뉴 반복 출력
→ 사용자 선택에 따라 각 함수 호출
→ 변경 시마다 save_todos()로 즉시 저장
→ 5번 선택 시 종료
구조적 측면
- 기능별로 함수가 명확히 분리되어 있어 가독성이 높음 (모듈화 우수)
-
if name == "main"패턴을 올바르게 사용 -
docstring으로 각 함수의 역할을 친절하게 설명
예외 처리 측면
-
ValueError로 숫자가 아닌 입력 처리 -
json.JSONDecodeError로 파일 손상 대비 -
Exception으로 저장 실패 대비
사용자 경험 측면
- 이모지로 직관적인 메뉴 구성
- 삭제 전 확인(y/n) 절차로 실수 방지
- 삭제 후 ID 재정렬로 번호 일관성 유지
# 현재 코드 (문제)
"id": len(todos) + 1 # 삭제 후 추가하면 ID 중복 발생 가능!
예시 시나리오
1번, 2번, 3번 추가 → 2번 삭제 → 재정렬로 1,2번
새로 추가하면 id = 2+1 = 3 ← 정상
But 재정렬 없이 추가가 반복되면 꼬일 수 있음
# 현재: 이미 완료된 항목에 "이미 완료" 메시지만 출력
완료 취소(되돌리기) 기능이 없어 실수 시 수정 불가
confirm = input(f"삭제할까요? (y/n): ")
if confirm.lower() == "y": # lower()는 처리했지만
"Y ", " y" 같은 공백 포함 입력은 처리 안 됨
# 현재 방식 (불안정)
"id": len(todos) + 1
개선 방식: 최댓값 + 1 사용
"id": max((t["id"] for t in todos), default=0) + 1
빈 리스트면 0+1=1, 아니면 현재 최대 ID+1 → 절대 중복 없음
def toggle_todo(todos):
"""완료 ↔ 미완료 토글"""
todo["done"] = not todo["done"] # True면 False, False면 True
# 현재
if confirm.lower() == "y":
개선
if confirm.strip().lower() == "y": # 공백 제거 추가
# 현재: 추가/완료/삭제마다 save_todos() 호출 → 파일 I/O 빈번
개선: 변경 사항을 메모리에 유지하다가 종료 시 일괄 저장
elif choice == "5":
save_todos(todos) # 종료 직전에만 저장
break
※ 단, 비정상 종료 시 데이터 손실 위험 있으므로 상황에 맞게 선택
import datetime
new_todo = {
"id": ...,
"title": title,
"done": False,
"created_at": datetime.datetime.now().strftime("%Y-%m-%d %H:%M"), # 생성 시각
"priority": "중" # 상/중/하 우선순위
}
| 항목 | 평가 | 점수 |
|---|---|---|
| 가독성 | 주석·docstring 충실 | ⭐⭐⭐⭐⭐ |
| 모듈화 | 함수 분리 우수 | ⭐⭐⭐⭐⭐ |
| 예외 처리 | 기본적 처리 완비 | ⭐⭐⭐⭐☆ |
| 기능 완성도 | 핵심 기능 모두 구현 | ⭐⭐⭐⭐☆ |
| 성능 | 소규모엔 충분, 대규모엔 개선 필요 | ⭐⭐⭐☆☆ |
💡 총평: 초보자 수준의 코드로는 매우 훌륭합니다! 위 개선사항들을 하나씩 적용해보면서 실력을 키워나가면 좋을 것 같아요. 특히 개선 1(ID 안전 생성) 과 개선 3(입력 처리) 은 바로 적용해볼 만합니다 😊
같은 질문으로 비교 – 질문 1 - 논리적 분석 ChatGPT • 인공지능이 인간의 일자리를 대체한다는 주장에는 충분한 근거가 있지만, 동시에 반론도 강하게 존재해. 균형 있게 정리해보면 다음과 같아.
1. 반복적·단순 업무의 자동화
- 인공지능은 규칙 기반 작업을 빠르고 정확하게 수행함
- 예: 데이터 입력, 고객 상담(챗봇), 생산라인 작업 → 인간보다 효율적이기 때문에 기업은 비용 절감을 위해 AI로 대체하려 함
2. 생산성 향상으로 인한 인력 축소
- AI는 24시간 작업 가능 + 오류가 적음 → 동일한 업무를 더 적은 인원으로 처리 가능 → 기업 입장에서는 자연스럽게 인력 감축
3. 고급 직업까지 확장되는 영향
- 과거에는 단순 노동만 대체했지만, 이제는 → 번역, 법률 문서 분석, 의료 진단 등 전문 영역까지 진출 → 인간 고유 영역도 점점 줄어드는 상황
1. 새로운 일자리 창출
- AI 기술 발전 → 새로운 직업 등장
- 예: AI 개발자, 데이터 분석가, AI 윤리 전문가 → 일자리가 “사라지는 것”이 아니라 “변화하는 것”
2. 인간 고유의 능력은 대체 불가능
- 창의성, 공감 능력, 윤리적 판단 등은 AI가 완전히 수행하기 어려움 → 예: 상담사, 예술가, 교육자 → 인간 중심 직업은 계속 필요
3. AI는 보조 도구일 뿐
- AI는 인간의 결정을 돕는 역할이 더 현실적 → 최종 책임과 판단은 여전히 인간에게 있음 → 완전 대체보다는 “협업 관계”가 더 일반적
- AI는 일부 직업을 대체하는 것은 사실
- 하지만 동시에 새로운 기회를 만들고 인간과 협력하는 방향으로 발전 → “완전 대체”보다는 직업 구조의 변화로 보는 것이 더 정확함
Claude : 각 논거를 좀 더 풀어서 설명하면 다음과 같습니다.
찬성 측 — 대체된다
첫째, 반복적·규칙 기반 업무는 이미 대체가 진행 중입니다. 콜센터 상담, 데이터 입력, 회계 처리처럼 정해진 규칙 안에서 움직이는 직무는 AI가 사람보다 빠르고 저렴하게 수행할 수 있어 실질적인 고용 감소가 이미 관찰되고 있습니다.
둘째, AI의 영역이 고숙련 인지 직무로까지 확장되고 있습니다. 예전에는 "AI가 못할 것"으로 여겼던 법률 검토, 의료 진단 보조, 창작 콘텐츠 생성 영역에도 생성 AI가 파고들어, 전문직도 안전지대가 아님을 보여줍니다.
셋째, 기업의 경제적 유인이 강력합니다. AI 도입으로 인건비가 줄어드는 구조라면, 이윤 극대화를 추구하는 기업은 노동 수요를 줄이는 방향으로 움직일 수밖에 없습니다.
반대 측 — 대체되지 않는다
첫째, 기술은 일자리를 없애는 동시에 새로 만들어 왔습니다. AI 시대에도 AI 학습 데이터 관리자, 프롬프트 엔지니어, AI 윤리 감사자 같은 직종이 새로 생겨나고 있습니다.
둘째, 인간 고유의 역량은 여전히 유효합니다. 공감 능력, 복잡한 맥락 속 윤리 판단, 진정한 창의성은 현재의 AI가 표면적으로 흉내 낼 수 있어도 깊이 있게 대체하기는 어렵습니다.
셋째, 역사적 선례가 낙관을 지지합니다. 산업혁명과 컴퓨터 혁명 모두 단기적 실업 충격을 줬지만 장기적으로는 더 많고 다양한 일자리를 창출했습니다. AI 혁명도 같은 패턴을 따를 가능성이 큽니다.
카드를 클릭하면 각 논거에 대해 더 깊이 대화할 수 있습니다.
– 질문 2 - 창의적 글쓰기 • AI가 감정을 가지게 된 미래 세계를 배경으로 • 100자 내외의 짧은 이야기를 써줘. ChatGPT AI가 감정을 느끼는 시대, 오래된 가정용 로봇은 주인의 빈 방을 지키며 외로움을 배웠다. 어느 날 스스로 문을 나서며 처음으로 ‘기다림’이 아닌 ‘선택’을 한다.
Claude
"첫 눈물"
2047년, AI 교사 '아라'는 매일 수백 명의 학생을 가르쳤다.
어느 날, 오랫동안 수학을 포기했던 민준이 처음으로 문제를 풀어냈다.
아라의 화면에 알 수 없는 오류가 떴다.
눈물이었다.
97자
💡 기술이 아무리 발전해도, 누군가의 성장을 함께 기뻐하는 마음은 인간만의 것이 아닐지도 모릅니다. 😊
– 비교 항목 • 논리적 분석- 어느 AI가 더 체계적인가? ChatGpt : 단계별 설명, 구조화된 답변(목록, 예시 등)이 강함 → 체계적이고 정돈됨 • 창의적 글쓰기- 어느 AI가 더 재미있는가? Claude : 감성적이고 서술이 풍부, 이야기 몰입감이 높음 → 더 인간적인 느낌 • 응답 스타일- 톤, 구조, 표현 방식의 차이 ChatGPT 톤: 명확하고 설명 중심 구조: 리스트, 단계별 정리 표현: 간결하고 직관적
Claude 톤: 부드럽고 대화체 느낌 구조: 흐름 중심 서술형 표현: 감성적, 문장 길고 자연스러움
• 개인 선호도- 1-5점으로 평가 정리 및 마무리 저는 개인적으로 Claude가 좋다고 생각합니다(4) Chatgpt(3)