Skip to content

Commit ca6a917

Browse files
committed
11111
1 parent e2384d5 commit ca6a917

2,960 files changed

Lines changed: 356251 additions & 88695 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ htmlcov/
2929
# Notebook and runtime artifacts
3030
.ipynb_checkpoints/
3131
*.log
32+
projectApps/**/data/
33+
projectApps/**/.env
3234

3335
# IDE/editor settings
3436
.idea/
@@ -43,3 +45,6 @@ htmlcov/
4345
# OS files
4446
.DS_Store
4547
Thumbs.db
48+
49+
*.xls
50+
*.xlsx

Agent/app/curriculum_service.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
CLASS_SEARCH_EXCLUDE_PATTERNS = (
1010
re.compile(r".*_assignment(_.*)?\.py$", re.IGNORECASE),
1111
re.compile(r".*instructor_notes\.md$", re.IGNORECASE),
12-
re.compile(r".*_quiz\.html$", re.IGNORECASE),
1312
)
1413

1514

@@ -97,7 +96,7 @@ def is_range_question(question: str) -> bool:
9796
r"어디부터어디",
9897
r"범위",
9998
r"시작.*끝",
100-
r"class\d+.*class\d+",
99+
r"(class|project)\d+.*(class|project)\d+",
101100
]
102101
return any(re.search(p, q, flags=re.IGNORECASE) for p in patterns)
103102

@@ -153,7 +152,7 @@ def answer_concept_definition(self, concept: str) -> str | None:
153152
"title": "DevOps",
154153
"desc": "DevOps는 개발과 운영을 통합해 소프트웨어를 빠르고 안정적으로 배포/운영하는 방법론입니다.",
155154
"subject": "프로젝트",
156-
"hint": "대표 솔루션은 CI/CD(GitHub Actions/Jenkins), 컨테이너(Docker), 오케스트레이션(Kubernetes)입니다. 프로젝트 과목(class501~520)에서 배포 자동화와 운영 절차로 연결해 학습합니다.",
155+
"hint": "대표 솔루션은 CI/CD(GitHub Actions/Jenkins), 컨테이너(Docker), 오케스트레이션(Kubernetes)입니다. 프로젝트 과목(project001~project020)에서 배포 자동화와 운영 절차로 연결해 학습합니다.",
157156
},
158157
"mlops": {
159158
"title": "MLOps",
@@ -165,13 +164,13 @@ def answer_concept_definition(self, concept: str) -> str | None:
165164
"title": "AIOps",
166165
"desc": "AIOps는 운영 로그·메트릭·트레이스를 AI/ML로 분석해 이상 탐지, 원인 분석, 자동 복구를 수행하는 방식입니다.",
167166
"subject": "프로젝트",
168-
"hint": "대표 솔루션은 Datadog, Dynatrace, New Relic, Splunk, Prometheus+Grafana 조합입니다. 프로젝트 과목 후반(class516~520)에서 관측성/이상탐지/Runbook을 다룹니다.",
167+
"hint": "대표 솔루션은 Datadog, Dynatrace, New Relic, Splunk, Prometheus+Grafana 조합입니다. 프로젝트 과목 후반(project016~project020)에서 관측성/이상탐지/Runbook을 다룹니다.",
169168
},
170169
"llmops": {
171170
"title": "LLMOps",
172171
"desc": "LLMOps는 LLM 기반 서비스의 프롬프트, RAG, 평가, 가드레일, 배포/운영 품질을 관리하는 체계입니다.",
173172
"subject": "프로젝트",
174-
"hint": "대표 솔루션은 OpenAI API/플랫폼, Azure OpenAI, Vertex AI, Bedrock, LangChain 계열 도구입니다. 프로젝트 과목(class511~515)에서 RAG/품질관리 시나리오로 학습합니다.",
173+
"hint": "대표 솔루션은 OpenAI API/플랫폼, Azure OpenAI, Vertex AI, Bedrock, LangChain 계열 도구입니다. 프로젝트 과목(project011~project015)에서 RAG/품질관리 시나리오로 학습합니다.",
175174
},
176175
"aws_stt": {
177176
"title": "AWS STT 연동 리소스",
@@ -286,7 +285,7 @@ def answer_class_scoped(self, class_id: str, question: str, sources: list[dict])
286285
if not sources:
287286
return (
288287
f"{class_id}({subject})의 질문에 대한 근거를 충분히 찾지 못했습니다. "
289-
f"{class_id}.md / {class_id}_example.py 중심으로 다시 질문해 주세요."
288+
f"{class_id}.md / {class_id}_example1.py 중심으로 다시 질문해 주세요."
290289
)
291290

292291
lead = (

Agent/app/query_router.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,18 @@ def route(self, question: str) -> RoutedQuery:
5050

5151
@staticmethod
5252
def _extract_class_id(question: str) -> str | None:
53-
m = re.search(r"class\s*([0-9]{3})", question, flags=re.IGNORECASE)
53+
m = re.search(r"\b(class|project)\s*([0-9]{3})\b", question, flags=re.IGNORECASE)
5454
if m:
55-
return f"class{m.group(1)}"
56-
# "290번", "290 번" 같은 질의도 classID로 해석
55+
prefix = m.group(1).lower()
56+
return f"{prefix}{m.group(2)}"
57+
# "290번", "290 번" 같은 질의도 classID/projectID로 해석
5758
m2 = re.search(r"\b([0-9]{3})\s*번\b", question)
5859
if m2:
59-
return f"class{m2.group(1)}"
60+
has_project_hint = bool(re.search(r"project|프로젝트", question, flags=re.IGNORECASE))
61+
number = m2.group(1)
62+
if has_project_hint:
63+
return f"project{number}"
64+
return f"class{number}"
6065
return None
6166

6267
@staticmethod
@@ -122,7 +127,7 @@ def _build_query_expansions(question: str, concept: str | None) -> list[str]:
122127
if concept in {"devops", "mlops", "aiops", "llmops"}:
123128
expansions.extend(
124129
[
125-
"프로젝트 class501 class520 devops mlops aiops llmops",
130+
"프로젝트 project001 project020 devops mlops aiops llmops",
126131
"devops_mlops_aiops_llmops_report 개요 비교",
127132
"프로젝트 과목 학습 내용 운영 자동화 관측성",
128133
]

Agent/app/rag_engine.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
}
4141

4242
EXCLUDED_FILE_PATTERNS = (
43-
re.compile(r".*_quiz\.html$", re.IGNORECASE),
4443
re.compile(r".*_assignment_.*\.py$", re.IGNORECASE),
4544
re.compile(r".*instructor_notes\.md$", re.IGNORECASE),
4645
)

README.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<!-- 이 파일은 www.edumgt.co.kr 의 에듀엠지티에 저작권이 있습니다 -->
2-
# Python · AI Agent Curriculum (class001 ~ class520)
2+
# Python · AI Agent Curriculum (class001 ~ project020)
33

44
최종 목표: `Agent/` 폴더의 실제 시스템 구축을 단계별로 연습하는 개발자 중심 커리큘럼 (520개 고유 학습주제)
55

66
첨부 커리큘럼의 **정규교과 520시간** 기준으로 세분화한 교육 저장소이며, 520개 클래스의 학습주제를 모두 고유하게 구성했습니다.
7-
`class001`부터 `class500`은 정규교과, `class501`부터 `class520`은 프로젝트 과목으로 운영합니다.
7+
`class001`부터 `class500`은 정규교과, `project001`부터 `project020`은 프로젝트 과목으로 운영합니다.
88

99
## 1) 현재까지 반영된 핵심 작업
1010
- 520개 차시 `classXXX.md` 자동 정비
@@ -29,7 +29,7 @@
2929
- `classXXX.md`: 자기주도 학습 가이드(개념, 실습, 퀴즈 안내)
3030
- `classXXX_flow.png`: 해당 차시 흐름도 PNG
3131
- `classXXX.py`: 실행 런처
32-
- `classXXX_example.py`: 예제 코드
32+
- `classXXX_example1.py`: 예제 코드
3333
- `classXXX_example2.py`: 확장 예제 코드
3434
- `classXXX_example3.py`: 자가점검/챌린지 예제 코드
3535
- `classXXX_solution.py`: 정답 코드
@@ -41,6 +41,8 @@
4141
- `instructor_notes.md`: 강사용 해설서
4242
- `tools/`: 콘텐츠 재생성/검증 스크립트
4343
- `curriculum_index.csv`: 전체 차시 인덱스
44+
- `project/`: 커리큘럼 프로젝트 원본 학습자료(`Prj_영문명/projectXXX`)
45+
- `projectApps/`: 실행/테스트용 독립 앱 묶음(`Python core + FastAPI + FE + Docker`)
4446
- `INSTRUCTOR_GUIDE.md`: 강의 운영 가이드
4547
- `AUTOGRADING.md`, `SUBMISSION_GRADING_GUIDE.md`: 채점/제출 가이드
4648

@@ -56,22 +58,22 @@
5658
| 프롬프트 엔지니어링 | `promptEng` | class353~class392 | 역할/맥락/출력형식 설계, 템플릿화, 평가 기준 수립, 실전 프롬프트 튜닝 전략 |
5759
| Langchain 활용하기 | `langChainLab` | class393~class448 | 체인 구성, PromptTemplate/OutputParser, 메모리/도구 연결, 서비스형 워크플로우 구현 |
5860
| RAG(Retrieval-Augmented Generation) | `ragPipeline` | class449~class500 | 문서 로딩/청크, 임베딩·벡터검색, 근거 결합 응답, 출처 기반 검증까지 RAG 전체 파이프라인 구현 |
59-
| 프로젝트 | `mlOpsAutomation`, `aiOpsIntelligence` | class501~class520 | DevOps/MLOps/AIOps/LLMOps 통합 프로젝트 트랙. `devops_mlops_aiops_llmops_report.md` 기준으로 설계·배포·운영·관측을 실제 시나리오로 연결 |
61+
| 프로젝트 | `project` | project001~project020 | DevOps/MLOps/AIOps/LLMOps 통합 프로젝트 트랙. `devops_mlops_aiops_llmops_report.md` 기준으로 설계·배포·운영·관측을 실제 시나리오로 연결 |
6062

6163
## 3-2) 실무 배포 트랙 (OnPrem + AWS + K8s/EKS)
6264
| 트랙 | class 범위 | 핵심 학습 항목 | 운영/배포 결과물 |
6365
| --- | --- | --- | --- |
6466
| 로컬/OnPrem 개발 표준화 | class001~class128 | 가상환경, 의존성 잠금, Docker 이미지 빌드, API 기본 서빙 | OnPrem 서버에서 재현 가능한 Python 서비스 |
6567
| ML 학습·추론 분리 | class081~class224 | 모델 학습 파이프라인, 추론 API, 배치/실시간 추론 전략 | 학습 잡 + 추론 서버 분리 배포 |
6668
| LLM/Prompt 서비스화 | class289~class448 | 외부 라이브러리(LangChain 등) 통합, 안전한 응답 정책, 관측성 | LLM 기반 백엔드 API 운영 |
67-
| 프로젝트 통합 운영 | class501~class520 | DevOps 배포 자동화 + MLOps 모델 운영 + AIOps 관측/자동복구 + LLMOps 품질관리 | 보고서 기반(DevOps/MLOps/AIOps/LLMOps) 통합 운영 체계 구현 |
69+
| 프로젝트 통합 운영 | project001~project020 | DevOps 배포 자동화 + MLOps 모델 운영 + AIOps 관측/자동복구 + LLMOps 품질관리 | 보고서 기반(DevOps/MLOps/AIOps/LLMOps) 통합 운영 체계 구현 |
6870

6971
## 3-2-1) 프로젝트 과목과 보고서 접목
7072
- 기준 문서: [devops_mlops_aiops_llmops_report.md](/home/Python-AI_Agent-Class/devops_mlops_aiops_llmops_report.md)
71-
- class501~505: DevOps 프로젝트 착수/요구사항 정의(보고서 2장 DevOps 비교표, 4장 배포 영역)
72-
- class506~510: MLOps 파이프라인·모델 레지스트리(보고서 2장 MLOps 비교표, 3장 도구 매핑)
73-
- class511~515: LLMOps/RAG 서비스 품질관리(보고서 2장 LLMOps 비교표, 4장 Agent/RAG 영역)
74-
- class516~520: AIOps 관측성·이상탐지·자동복구(보고서 2장 AIOps 비교표, 4장 운영 이상탐지)
73+
- project001~project005: DevOps 프로젝트 착수/요구사항 정의(보고서 2장 DevOps 비교표, 4장 배포 영역)
74+
- project006~project010: MLOps 파이프라인·모델 레지스트리(보고서 2장 MLOps 비교표, 3장 도구 매핑)
75+
- project011~project015: LLMOps/RAG 서비스 품질관리(보고서 2장 LLMOps 비교표, 4장 Agent/RAG 영역)
76+
- project016~project020: AIOps 관측성·이상탐지·자동복구(보고서 2장 AIOps 비교표, 4장 운영 이상탐지)
7577

7678
## 3-3) 공공 데이터·API Hub 연계 학습
7779
- 공공데이터포털(`data.go.kr`) OpenAPI: 교통/환경/인구 등 API 수집, 전처리, 시각화, 예측 실습

aiOpsIntelligence/class511/class511.md

Lines changed: 0 additions & 37 deletions
This file was deleted.

aiOpsIntelligence/class511/class511.py

Lines changed: 0 additions & 36 deletions
This file was deleted.

aiOpsIntelligence/class511/class511_assignment.py

Lines changed: 0 additions & 34 deletions
This file was deleted.

aiOpsIntelligence/class511/class511_assignment_advanced.py

Lines changed: 0 additions & 120 deletions
This file was deleted.

0 commit comments

Comments
 (0)