AI-powered lecture material generator using LangChain
Project description
LectureForge ๐
AI-Powered Lecture Material Generator using Multi-Agent Pipeline System
๐ v0.2.6 Beta Release | Critical Image Bug Fixed - Original Resolution Guaranteed
PDF, ์นํ์ด์ง, ์ธํฐ๋ท ๊ฒ์์์ ์ ๋ณด๋ฅผ ์์งํ์ฌ ๊ณ ํ์ง ๊ฐ์์๋ฃ๋ฅผ ์๋ ์์ฑํ๋ AI ์์คํ ์ ๋๋ค.
ํต์ฌ ํต๊ณ: 10๊ฐ ์์ด์ ํธ | 9๊ฐ ๋๊ตฌ | 3,288์ค CLI | 53+ ํ ์คํธ (45-50% ์ปค๋ฒ๋ฆฌ์ง) | ~$0.035/60๋ถ ๊ฐ์
๐ ๋ชฉ์ฐจ
- ์ฃผ์ ๊ธฐ๋ฅ
- v0.2.0 ๊ฐ์ ์ฌํญ
- ๋น ๋ฅธ ์์
- ์ฌ์ฉ๋ฒ
- ์ด๋ฏธ์ง ํธ์ง
- ์์คํ ์ํคํ ์ฒ
- FAQ
- ๋ณ๊ฒฝ ์ด๋ ฅ
- ๊ธฐ์ฌํ๊ธฐ
โจ ์ฃผ์ ๊ธฐ๋ฅ
์ปจํ ์ธ ์์ฑ
- ๐ ๋ฉํฐ์์ค ์์ง: PDF, URL, ์น ๊ฒ์์ ํตํ ํฌ๊ด์ ์ ๋ณด ์์ง
- ๐ Location-based ์ด๋ฏธ์ง ๋งค์นญ: RAG ์ปจํ ์คํธ ๊ธฐ๋ฐ ์๋ ์ด๋ฏธ์ง ๋ฐฐ์น (+750% ํ์ฉ๋ฅ )
- ๐ผ๏ธ ๋ํํ ์ด๋ฏธ์ง ํธ์ง: ์์ฑ๋ ๊ฐ์์ ์ด๋ฏธ์ง ์ญ์ /๊ต์ฒด (Vector DB ๊ธฐ๋ฐ ๋์ ๊ฒ์)
- ๐จ ๊ตฌ์กฐํ๋ HTML ์ถ๋ ฅ: Mermaid ๋ค์ด์ด๊ทธ๋จ, ๊ฒ์ ์ธ๋ฑ์ค, ์ฝ๋ ํ์ด๋ผ์ดํ
- ๐ฌ ํ๋ ์ ํ ์ด์ ์ฌ๋ผ์ด๋: Reveal.js ๊ธฐ๋ฐ ์๋ ๋ณํ
ํ์ง ๋ณด์ฆ
- โ 6์ฐจ์ ํ์ง ํ๊ฐ: ์์ฑ๋, ํ๋ฆ, ์๊ฐ, ๋์ด๋, ์๊ฐ์๋ฃ, ์ ํ์ฑ
- ๐ ์๋ ๊ฐ์ : ํ์ง ๊ธฐ์ค ๋ฏธ๋ฌ ์ ์ต๋ 3ํ ์๋ ์์
- ๐งช ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง: 53+ ๋จ์ ํ ์คํธ (45-50% ์ปค๋ฒ๋ฆฌ์ง)
์ง์ ๊ด๋ฆฌ
- ๐๏ธ RAG ๊ธฐ๋ฐ ์ง์์ฐฝ๊ณ : ChromaDB ๋ฒกํฐ DB๋ก ๋ํํ Q&A ์ง์
- โก ์ฟผ๋ฆฌ ์บ์ฑ: ๋์ผ ์ง๋ฌธ 60% ๋น ๋ฅธ ์๋ต
- ๐ฌ ์์ค ์ธ์ฉ: ์๋ ์ฐธ์กฐ ๋ฐ ํ์ด์ง ๋ฒํธ ์ ๊ณต
์์ ์ฑ & ์ฑ๋ฅ
- ๐ ์๋ ์ฌ์๋: API ์คํจ ์ ์ง์ ๋ฐฑ์คํ (์ต๋ 3ํ)
- ๐ฐ ๋น์ฉ ์ถ์ : ์ค์๊ฐ ํ ํฐ ์ฌ์ฉ๋ ๋ฐ ๋น์ฉ ์ถ์
- ๐ง ํ์ ํํธ: 75% ํ์ ์์ ์ฑ
๐ v0.2.0 ๊ฐ์ ์ฌํญ
์ฑ๋ฅ ํฅ์ โก
- RAG ์ฟผ๋ฆฌ ์บ์ฑ: MD5 ๊ธฐ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์บ์๋ก ๋ฐ๋ณต ์ง๋ฌธ 60% ๊ณ ์ํ
- ์บ์ ํต๊ณ: ํํธ/๋ฏธ์ค ๋น์จ ์ถ์ ๋ฐ ๋ชจ๋ํฐ๋ง
์์ ์ฑ ๊ฐ์ ๐
- ์๋ ์ฌ์๋ ๋ก์ง: OpenAI, Serper, Pexels/Unsplash API ์๋ ์ฌ์๋ (3ํ)
- ์ง์ ๋ฐฑ์คํ: 2์ด โ 4์ด โ 10์ด ๋๊ธฐ๋ก ์ผ์์ ์ค๋ฅ ๋ณต๊ตฌ
ํ์ง ๋ณด์ฆ ๐งช
- 53+ ๋จ์ ํ ์คํธ: ์ ์ฒด 10๊ฐ ์์ด์ ํธ ํ ์คํธ ์๋ฃ
- 45%+ ์ปค๋ฒ๋ฆฌ์ง: pytest ๊ธฐ๋ฐ ์๋ํ ํ ์คํธ
- ํ์ ํํธ 75%: 40% โ 75% ํฅ์
์ค์ ์์คํ ๊ฐ์ ๐ง
- Config ๋ฆฌํฉํ ๋ง: ๋ชจ๋ ํ๋์ฝ๋ฉ ์ ๊ฑฐ, .env ๊ธฐ๋ฐ ์ค์ ์ง์ค์ ์ค์
- 15+ ํ๊ฒฝ๋ณ์: ๊ฒ์, ํฌ๋กค๋ง, ์ด๋ฏธ์ง, ํ์์์ ๋ฑ ๋ชจ๋ ์ค์ ์กฐ์ ๊ฐ๋ฅ
- ํ๊ฒฝ๋ณ ์ค์ : ๊ฐ๋ฐ/์คํ ์ด์ง/ํ๋ก๋์ ํ๊ฒฝ ๋ถ๋ฆฌ ์ง์
- ๋ฐํ์ Config ๊ฒ์ฆ:
--help์ ์ ์๋
ํต๊ณ ๋น๊ต
| ๋ฉํธ๋ฆญ | v0.1.0 | v0.2.6 | ๊ฐ์ |
|---|---|---|---|
| ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง | 15% | 45-50% | +200%+ |
| ํ์ ํํธ | 40% | 75% | +87% |
| ํ ์คํธ๋ ์์ด์ ํธ | 3/10 | 10/10 | +233% |
| RAG ์ฑ๋ฅ | Baseline | +60% | ์บ์ฑ |
| API ์์ ์ฑ | ์๋ | ์๋ 3ํ | ์ฌ์๋ |
| ์ค์ ๋ฐฉ์ | ํ๋์ฝ๋ฉ | .env ๊ธฐ๋ฐ | ์ ์ฐ์ฑ |
| ์ด๋ฏธ์ง ํด์๋ | 200px ์ถ์ | ์๋ณธ ๋ณด์กด | v0.2.6 ์์ |
๐ ๋น ๋ฅธ ์์
1๏ธโฃ ์ค์น
# Python 3.11 ํ๊ฒฝ ์์ฑ
conda create -n lecture-forge python=3.11
conda activate lecture-forge
# ํจํค์ง ์ค์น
pip install -e .
# ์น ์คํฌ๋ํ์ฉ ๋ธ๋ผ์ฐ์ ์ค์น
playwright install
2๏ธโฃ ํ๊ฒฝ ์ค์
๋ฐฉ๋ฒ 1: ๋ํํ ์ค์ (๊ถ์ฅ โญ)
# ๋ํํ ์ค์ ๋ง๋ฒ์ฌ ์คํ
lecture-forge init
์ด ๋ช ๋ น์ด๋ ๋ค์์ ์ํํฉ๋๋ค:
- โ
ํ๋ซํผ๋ณ ์ต์ ์์น์
.envํ์ผ ์๋ ์์ฑ- Windows:
%LOCALAPPDATA%\lecture-forge\.env - Mac/Linux:
~/.lecture-forge/.env
- Windows:
- โ ํ์ API ํค ์ ๋ ฅ ์๋ด (OpenAI, Serper)
- โ ์ ํ์ ์ด๋ฏธ์ง ๊ฒ์ API ์ค์ (Pexels, Unsplash)
- โ ํ์ผ ๊ถํ ์๋ ์ค์ (Unix/Mac: 600)
๋ฐฉ๋ฒ 2: ์๋ ์ค์
# .env ํ์ผ ์์ฑ (ํ๋ก์ ํธ ๊ฐ๋ฐ ์)
cp .env.example .env
.env ํ์ผ์ ์ด์ด ๋ค์ ํญ๋ชฉ์ ์ค์ ํ์ธ์:
ํ์ API ํค:
# OpenAI API (ํ์)
OPENAI_API_KEY=sk-proj-...
# ๊ฒ์ API (ํ์)
SERPER_API_KEY=... # ๋ฌด๋ฃ: 2,500ํ/์
์ ํ ์ฌํญ:
# ์ด๋ฏธ์ง ๊ฒ์ API (์ ํ)
PEXELS_API_KEY=... # ๋ฌด๋ฃ ๋ฌด์ ํ
UNSPLASH_ACCESS_KEY=... # ๋ฌด๋ฃ: 50ํ/์๊ฐ
# ๊ฒ์ ๋ฐ ํฌ๋กค๋ง ์ค์ (๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ถฉ๋ถ)
SEARCH_NUM_RESULTS=10 # ๊ฒ์ ๊ฒฐ๊ณผ ์ (์ต๋ 100)
DEEP_CRAWLER_MAX_PAGES=10 # ํฌ๋กค๋ง ํ์ด์ง ์
IMAGE_SEARCH_PER_PAGE=10 # ์ด๋ฏธ์ง ๊ฒ์ ๊ฒฐ๊ณผ ์
# ํ์ง ์ค์
QUALITY_THRESHOLD=80 # ํ์ง ์๊ณ๊ฐ (70-90)
MAX_ITERATIONS=3 # ์ต๋ ๊ฐ์ ๋ฐ๋ณต ํ์
๐ก ๋ ๋ง์ ์ค์ ์ต์
์ .env.example ํ์ผ ์ฐธ์กฐ
.env ํ์ผ ์์น
LectureForge๋ ๋ค์ ์์๋ก .env ํ์ผ์ ํ์ํฉ๋๋ค:
- ํ๊ฒฝ ๋ณ์:
LECTURE_FORGE_ENV_FILE๋ก ์ง์ ํ ๊ฒฝ๋ก - ํ์ฌ ๋๋ ํ ๋ฆฌ:
./.env - ์ฌ์ฉ์ ๋๋ ํ ๋ฆฌ (๊ถ์ฅ):
- Windows:
%LOCALAPPDATA%\lecture-forge\.env - Mac/Linux:
~/.lecture-forge/.env
- Windows:
API ํค ํ๋:
- OpenAI: platform.openai.com (์ฌ์ฉ๋ ๊ธฐ๋ฐ ๊ณผ๊ธ)
- Serper: serper.dev (๋ฌด๋ฃ 2,500ํ/์)
- Pexels: pexels.com/api (๋ฌด๋ฃ)
- Unsplash: unsplash.com/developers (๋ฌด๋ฃ 50ํ/์๊ฐ)
3๏ธโฃ ์ฒซ ๊ฐ์ ์์ฑ
lecture-forge create
๋ํํ์ผ๋ก ๊ฐ์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ฉด ์๋์ผ๋ก ๊ฐ์์๋ฃ๊ฐ ์์ฑ๋ฉ๋๋ค! ๐
๐ป ์ฌ์ฉ๋ฒ
๋ช ๋ น์ด ๊ฐ์
| ๋ช ๋ น์ด | ์ค๋ช | ์ฃผ์ ์ต์ |
|---|---|---|
| init | ์ด๊ธฐ ์ค์ | --path |
| create | ๊ฐ์ ์์ฑ | --image-search, --quality-level |
| chat | Q&A ๋ชจ๋ | --knowledge-base |
| edit-images | ์ด๋ฏธ์ง ํธ์ง | --output |
| improve | ๊ฐ์ ํฅ์ | --to-slides |
| cleanup | ์ง์๋ฒ ์ด์ค ๊ด๋ฆฌ | --all |
๋น ๋ฅธ ์คํ ์์
# ๐ ์ด๊ธฐ ์ค์ (์ฒ์ ํ ๋ฒ๋ง)
lecture-forge init
# ๐ ๊ฐ์ ์์ฑ (๋ํํ - ๊ฐ์ฅ ๊ฐ๋จ)
lecture-forge create
# ๐ ๊ณ ํ์ง ๊ฐ์ (์ด๋ฏธ์ง ๊ฒ์ ํฌํจ)
lecture-forge create --image-search --quality-level strict
# ๐ฌ Q&A ๋ชจ๋ (์๋์ผ๋ก ์ต์ ์ง์๋ฒ ์ด์ค ์ ํ)
lecture-forge chat
# ๐จ ์ฌ๋ผ์ด๋ ๋ณํ
lecture-forge improve outputs/lecture.html --to-slides
# ๐ผ๏ธ ์ด๋ฏธ์ง ํธ์ง
lecture-forge edit-images outputs/lecture.html
# ๐งน ์ง์๋ฒ ์ด์ค ์ ๋ฆฌ (๋ํํ ์ ํ)
lecture-forge cleanup
๋ช ๋ น์ด ์์ธ ๊ฐ์ด๋
๐ init - ์ด๊ธฐ ์ค์
๊ธฐ๋ณธ ์ฌ์ฉ:
lecture-forge init
๋ํํ ๋ง๋ฒ์ฌ๊ฐ API ํค ์
๋ ฅ์ ์๋ดํ๊ณ ์๋์ผ๋ก .env ํ์ผ์ ์์ฑํฉ๋๋ค.
์ต์ :
| ์ต์ | ์ค๋ช | ์ฌ์ฉ ์ |
|---|---|---|
--path PATH |
์ปค์คํ ๋๋ ํ ๋ฆฌ ์ง์ | --path /custom/path |
๊ธฐ๋ณธ ์ ์ฅ ์์น:
- Windows:
C:\Users\<username>\AppData\Local\lecture-forge\.env - Mac/Linux:
~/.lecture-forge/.env
์์ :
# ๊ธฐ๋ณธ ์์น์ ์ค์ (๊ถ์ฅ)
lecture-forge init
# ์ปค์คํ
๋๋ ํ ๋ฆฌ ์ฌ์ฉ
lecture-forge init --path /my/config/dir
# ํ์ฌ ๋๋ ํ ๋ฆฌ์ ์์ฑ
lecture-forge init --path .
ํ๋ ์ผ:
- ํ์ API ํค ์ ๋ ฅ (OpenAI, Serper)
- ์ ํ์ ์ด๋ฏธ์ง API ์ค์ (Pexels, Unsplash)
.envํ์ผ ์๋ ์์ฑ- ๊ธฐ๋ณธ ์ค์ ๊ฐ ์๋ ์ค์
- ํ์ผ ๊ถํ ๋ณด์ ์ค์ (Unix/Mac)
๐ create - ๊ฐ์ ์์ฑ
๊ธฐ๋ณธ ์ฌ์ฉ:
lecture-forge create
๋ํํ์ผ๋ก ์ ๋ณด๋ฅผ ์ ๋ ฅํ๋ฉด ์๋์ผ๋ก ๊ฐ์๋ฅผ ์์ฑํฉ๋๋ค.
์ต์ :
| ์ต์ | ์ค๋ช | ์ฌ์ฉ ์ |
|---|---|---|
--config FILE |
YAML ์ค์ ํ์ผ ์ฌ์ฉ | --config lecture.yaml |
--image-search |
์น ์ด๋ฏธ์ง ๊ฒ์ ํ์ฑํ (Pexels/Unsplash) | --image-search |
--quality-level LEVEL |
ํ์ง ๊ธฐ์ค ์ค์ | --quality-level strict |
--output FILE |
์ถ๋ ฅ ํ์ผ๋ช ์ง์ | --output my_lecture.html |
--include-pdf-images |
PDF ์ด๋ฏธ์ง ํฌํจ (๋น๊ถ์ฅ, Location-based๊ฐ ๋ ์ข์) | --include-pdf-images |
ํ์ง ๋ ๋ฒจ:
lenient(70์ ): ๋น ๋ฅธ ์ด์balanced(80์ ): ๊ธฐ๋ณธ๊ฐ โstrict(90์ ): ๊ณ ํ์ง
์์ :
# ๊ธฐ๋ณธ ์์ฑ
lecture-forge create
# ๊ณ ํ์ง + ์ด๋ฏธ์ง ๊ฒ์
lecture-forge create --image-search --quality-level strict
# YAML ์ค์ ์ฌ์ฉ
lecture-forge create --config my_config.yaml
๐ฌ chat - Q&A ๋ชจ๋
๊ธฐ๋ณธ ์ฌ์ฉ:
lecture-forge chat
์๋์ผ๋ก ์ต์ ์ง์๋ฒ ์ด์ค๋ฅผ ์ ํํฉ๋๋ค.
์ต์ :
| ์ต์ | ์ค๋ช | ์ฌ์ฉ ์ |
|---|---|---|
--knowledge-base PATH |
ํน์ ์ง์๋ฒ ์ด์ค ์ง์ | -kb ./data/vector_db/AI_xxx |
๋ํํ ๋ช ๋ น์ด:
/help: ๋์๋ง ํ์/exit๋๋/quit: ์ข ๋ฃ/clear: ์ฑํ ๊ธฐ๋ก ์ง์ฐ๊ธฐ/sources: ๋ง์ง๋ง ๋ต๋ณ์ ์ถ์ฒ ํ์
์์ :
# ์๋ ์ ํ
lecture-forge chat
# ํน์ ์ง์๋ฒ ์ด์ค ์ฌ์ฉ
lecture-forge chat -kb ./data/vector_db/lecture_20260209_123456
๐ผ๏ธ edit-images - ์ด๋ฏธ์ง ํธ์ง
๊ธฐ๋ณธ ์ฌ์ฉ:
lecture-forge edit-images outputs/lecture.html
์ต์ :
| ์ต์ | ์ค๋ช | ์ฌ์ฉ ์ |
|---|---|---|
--output FILE |
์ถ๋ ฅ ํ์ผ ๊ฒฝ๋ก | -o outputs/edited.html |
๋ํํ ๋ช ๋ น์ด:
| ๋ช ๋ น์ด | ์ค๋ช | ์์ |
|---|---|---|
d <๋ฒํธ> |
์ด๋ฏธ์ง ์ญ์ | d 3 |
u <๋ฒํธ> |
์ญ์ ์ทจ์ | u 3 |
r <๋ฒํธ> |
์ด๋ฏธ์ง ๊ต์ฒด (Vector DB ๊ฒ์) | r 5 |
s |
๋ณ๊ฒฝ์ฌํญ ์ ์ฅ | s |
q |
์ข ๋ฃ (์ ์ฅ ์ ํจ) | q |
h |
๋์๋ง | h |
์์ :
# ๊ธฐ๋ณธ (์๋ณธ_edited.html๋ก ์ ์ฅ)
lecture-forge edit-images outputs/my_lecture.html
# ์ถ๋ ฅ ํ์ผ ์ง์
lecture-forge edit-images outputs/my_lecture.html -o outputs/final.html
๐จ improve - ๊ฐ์ ํฅ์
๊ธฐ๋ณธ ์ฌ์ฉ:
lecture-forge improve outputs/lecture.html --to-slides
์ต์ :
| ์ต์ | ์ค๋ช | ์ฌ์ฉ ์ |
|---|---|---|
--to-slides |
Reveal.js ์ฌ๋ผ์ด๋ ๋ณํ | --to-slides |
--enhance-pdf-images |
PDF ์ด๋ฏธ์ง ์ค๋ช ์ถ๊ฐ (๋ ๊ฑฐ์) | --enhance-pdf-images |
--source-pdf FILE |
์๋ณธ PDF ๊ฒฝ๋ก (๋ ๊ฑฐ์์ฉ) | --source-pdf doc.pdf |
โ ๏ธ ์ฃผ์: --enhance-pdf-images๋ ๋ ๊ฑฐ์ ๊ธฐ๋ฅ์
๋๋ค. v0.2.0๋ถํฐ๋ Location-based ๋งค์นญ์ด ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค.
์์ :
# ์ฌ๋ผ์ด๋ ๋ณํ (๊ถ์ฅ)
lecture-forge improve outputs/lecture.html --to-slides
# PDF ์ด๋ฏธ์ง ๋ณด๊ฐ (๋ ๊ฑฐ์)
lecture-forge improve outputs/lecture.html --enhance-pdf-images --source-pdf original.pdf
๐งน cleanup - ์ง์๋ฒ ์ด์ค ๊ด๋ฆฌ
๊ธฐ๋ณธ ์ฌ์ฉ:
lecture-forge cleanup
๋ํํ์ผ๋ก ์ญ์ ํ ์ง์๋ฒ ์ด์ค๋ฅผ ์ ํํฉ๋๋ค.
์ต์ :
| ์ต์ | ์ค๋ช | ์ฌ์ฉ ์ |
|---|---|---|
--all |
๋ชจ๋ ์ง์๋ฒ ์ด์ค ์ญ์ (โ ๏ธ ์ฃผ์!) | --all |
์์ :
# ๋ํํ ์ ํ (์์ )
lecture-forge cleanup
# ์ ์ฒด ์ญ์ (๋ณต๊ตฌ ๋ถ๊ฐ๋ฅ!)
lecture-forge cleanup --all
๐ค ์ถ๋ ฅ ๊ฒฐ๊ณผ
๊ฐ์ ์์ฑ ์๋ฃ ํ ๋ค์ ํ์ผ๋ค์ด ์์ฑ๋ฉ๋๋ค:
outputs/
โโโ [์ฃผ์ ]_[๋ ์ง์๊ฐ].html # ๐ HTML ๊ฐ์์๋ฃ
โโโ [์ฃผ์ ]_[๋ ์ง์๊ฐ]_slides.html # ๐ฌ ์ฌ๋ผ์ด๋ (--to-slides ์ฌ์ฉ ์)
data/
โโโ vector_db/
โโโ [์ฃผ์ ]_[๋ ์ง์๊ฐ]/ # ๐๏ธ ์ง์๋ฒ ์ด์ค (Q&A์ฉ)
โโโ chroma.sqlite3
โโโ ...
ํฌํจ ๋ด์ฉ:
- โ HTML ๊ฐ์์๋ฃ: ์ด๋ฏธ์ง, Mermaid ๋ค์ด์ด๊ทธ๋จ, ์ฝ๋ ํ์ด๋ผ์ดํ , ๊ฒ์ ์ธ๋ฑ์ค
- โ ์ง์๋ฒ ์ด์ค: ChromaDB ๋ฒกํฐ DB (๋ํํ Q&A ์ง์)
- โ ํต๊ณ ์ ๋ณด: ํ์ง ์ ์, ํ ํฐ ์ฌ์ฉ๋, ์์ ๋น์ฉ
- โ ์ฌ๋ผ์ด๋: Reveal.js ํ๋ ์ ํ ์ด์ (์ ํ ์ฌํญ)
๐ง ๊ณ ๊ธ ์ค์ (.env ํ์ผ)
๋ ๋ง์ ์ ์ด๊ฐ ํ์ํ ๊ฒฝ์ฐ .env ํ์ผ์์ ๋ค์ ์ค์ ์ ์กฐ์ ํ ์ ์์ต๋๋ค:
# ๊ฒ์ ๋ฐ ํฌ๋กค๋ง
SEARCH_NUM_RESULTS=20 # ๊ธฐ๋ณธ: 10, ์ต๋: 100
DEEP_CRAWLER_MAX_PAGES=30 # ๊ธฐ๋ณธ: 10
DEEP_CRAWLER_MAX_DEPTH=3 # ๊ธฐ๋ณธ: 2
# ์ด๋ฏธ์ง
IMAGE_SEARCH_PER_PAGE=15 # ๊ธฐ๋ณธ: 10
MAX_IMAGES_PER_SEARCH=20 # ๊ธฐ๋ณธ: 10
# ํ์ง
QUALITY_THRESHOLD=90 # ๊ธฐ๋ณธ: 80 (70-90)
MAX_ITERATIONS=5 # ๊ธฐ๋ณธ: 3
# ์ฑ๋ฅ
CHUNK_SIZE=800 # ๊ธฐ๋ณธ: 1000 (์์์๋ก ์ ๋ฐ)
WEB_SCRAPER_TIMEOUT=60 # ๊ธฐ๋ณธ: 30์ด
๐ก ์ ์ฒด ์ค์ ๋ชฉ๋ก: .env.example ํ์ผ ์ฐธ์กฐ (15+ ํ๊ฒฝ๋ณ์)
๐ผ๏ธ ์ด๋ฏธ์ง ํธ์ง
์์ฑ๋ ๊ฐ์์ ์ด๋ฏธ์ง๋ฅผ ๋ํํ์ผ๋ก ํธ์งํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ
- ์ด๋ฏธ์ง ์ญ์ : ์ํ์ง ์๋ ์ด๋ฏธ์ง ์ ๊ฑฐ
- ์ด๋ฏธ์ง ๊ต์ฒด: Vector DB์์ ๋์ ์ด๋ฏธ์ง ์๋ ๊ฒ์ ๋ฐ ๊ต์ฒด
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ๋ณ๊ฒฝ ์ ๋ชจ๋ ์ด๋ฏธ์ง ์ํ ํ์ธ
- ์์ ํ ์ ์ฅ: ์๋ณธ ๋ฐฑ์ ํ ์ ํ์ผ ์์ฑ
์ฌ์ฉ๋ฒ
# ์ด๋ฏธ์ง ํธ์ง ๋ชจ๋ ์์
lecture-forge edit-images outputs/lecture.html
# ์ถ๋ ฅ ํ์ผ ์ง์
lecture-forge edit-images outputs/lecture.html -o outputs/lecture_v2.html
๋ํํ ๋ช ๋ น์ด
| ๋ช ๋ น์ด | ์ค๋ช | ์์ |
|---|---|---|
d <๋ฒํธ> |
์ด๋ฏธ์ง ์ญ์ | d 3 |
u <๋ฒํธ> |
์ญ์ ์ทจ์ | u 3 |
r <๋ฒํธ> |
์ด๋ฏธ์ง ๊ต์ฒด (๋์ ๊ฒ์) | r 5 |
s |
๋ณ๊ฒฝ์ฌํญ ์ ์ฅ | s |
q |
์ข ๋ฃ | q |
h |
๋์๋ง | h |
์๋ ๋ฐฉ์
- HTML ๋ถ์: ๊ฐ์ ํ์ผ์ ๋ชจ๋ ์ด๋ฏธ์ง ์ถ์ถ ๋ฐ ๋ฉํ๋ฐ์ดํฐ ์์ง
- ๋ํํ ํธ์ง: ํ ์ด๋ธ ํ์์ผ๋ก ์ด๋ฏธ์ง ๋ชฉ๋ก ํ์ ๋ฐ ํธ์ง
- ๋์ ๊ฒ์: Vector DB๋ฅผ ํ์ฉํ ๊ด๋ จ ์ด๋ฏธ์ง ์๋ ์ ์ (RAG ๊ธฐ๋ฐ)
- ๋ณ๊ฒฝ ์ ์ฉ: ์ญ์ /๊ต์ฒด ์์ ์ผ๊ด ์ ์ฉ ๋ฐ ์ ํ์ผ ์์ฑ
์์
๐ธ ๊ฐ์ ์ด๋ฏธ์ง ํธ์ง ๋ชจ๋
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
HTML: my_lecture.html
์ด ์ด๋ฏธ์ง: 25๊ฐ
โโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโณโโโโโโโโโณโโโโโโโโโโโ
โ ๋ฒํธ โ ์ค๋ช
โ ์น์
โ ํ์ด์ง โ ์ํ โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 1 โ Neural network architecture โ 1. Introduction โ 5 โ ์ ์ง โ
โ 2 โ Backpropagation diagram โ 2. Core Concepts โ 12 โ ๐๏ธ ์ญ์ โ
โ 3 โ Training process flowchart โ 2. Core Concepts โ 15 โ ๐ ๊ต์ฒด โ
โโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโ
๋ช
๋ น ์
๋ ฅ: r 3
๐ ์ด๋ฏธ์ง 3 ๋์ ๊ฒ์ ์ค...
โ
5๊ฐ ๋์ ์ด๋ฏธ์ง ๋ฐ๊ฒฌ
์ ํ: 1
โ
์ด๋ฏธ์ง 3 ๊ต์ฒด ์์
๋ช
๋ น ์
๋ ฅ: s
๐พ ๋ณ๊ฒฝ์ฌํญ ์ ์ฅ๋จ: outputs/my_lecture_edited.html
๐๏ธ ์์คํ ์ํคํ ์ฒ
Multi-Agent ํ์ดํ๋ผ์ธ (10๊ฐ ์ ๋ฌธ ์์ด์ ํธ)
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CLI Interface (์
๋ ฅ ์์ง, ์งํ ์ํฉ, Q&A ์ธํฐ๋์
) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโ
โ Pipeline Orchestrator โ
โโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ
โ โ
โโโโโผโโโโโโโโโโโโโ โโโโโโโโผโโโโโโโโโโโ
โ Phase 1-2 โ โ Knowledge Base โ
โ Collection โโโโโโโโโโโโโโโโโโโโถโ (Vector DB) โ
โ & Analysis โ โ + RAG Caching โ
โโโโโฌโโโโโโโโโโโโโ โโโโโโโโฌโโโโโโโโโโโ
โ โ
โโโโโผโโโโโโโโโโโโโ โ
โ Phase 3-4 โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Generation โ (RAG Query)
โ & Quality QA โ
โโโโโฌโโโโโโโโโโโโโ
โ
โโโโโผโโโโโโโโโโโโโ
โ Output โ
โ HTML + Slides โ
โโโโโโโโโโโโโโโโโโ
10๊ฐ ์ ๋ฌธ ์์ด์ ํธ
| # | ์์ด์ ํธ | ์ญํ | ํ์ผ |
|---|---|---|---|
| 1 | Content Collector ๐ | ํ ์คํธ ์์ง ๋ฐ ๋ฒกํฐํ | content_collector.py |
| 2 | Image Collector ๐ผ๏ธ | ์ด๋ฏธ์ง ์์ง ๋ฐ Vision AI ๋ถ์ | image_collector.py |
| 3 | Content Analyzer ๐ | ๋ด์ฉ ๋ถ์ ๋ฐ ์ง์ ๊ทธ๋ํ | content_analyzer.py |
| 4 | Curriculum Designer ๐ | ๊ฐ์ ๊ตฌ์กฐ ์ค๊ณ | curriculum_designer.py |
| 5 | Content Writer โ๏ธ | RAG ๊ธฐ๋ฐ ์ปจํ ์ธ ์์ฑ | content_writer.py |
| 6 | Diagram Generator ๐ | Mermaid ๋ค์ด์ด๊ทธ๋จ ์์ฑ | diagram_generator.py |
| 7 | Quality Evaluator โ | 6์ฐจ์ ํ์ง ํ๊ฐ | quality_evaluator.py |
| 8 | Revision Agent ๐ | ์๋/๋ฐ์๋ ์์ | revision_agent.py |
| 9 | Q&A Agent ๐ค | ์ง์์ฐฝ๊ณ ๊ธฐ๋ฐ ๋ํ (RAG ์บ์ฑ) | qa_agent.py |
| 10 | HTML Assembler ๐จ | ์ต์ข HTML ์์ฑ | html_assembler.py |
9๊ฐ ๋๊ตฌ (Tools)
| # | ๋๊ตฌ | ์ญํ | ํ์ผ |
|---|---|---|---|
| 1 | PDF Parser ๐ | PDF ํ ์คํธ ์ถ์ถ | pdf_parser.py |
| 2 | Image Extractor ๐ผ๏ธ | PDF/HTML ์ด๋ฏธ์ง ์ถ์ถ | image_extractor.py |
| 3 | Web Scraper ๐ | ์น ํ์ด์ง ์คํฌ๋ํ | web_scraper.py |
| 4 | Playwright Crawler ๐ญ | ๋์ ์น ํฌ๋กค๋ง | playwright_crawler.py |
| 5 | Deep Web Crawler ๐ท๏ธ | ๋ค์ธต ์น ํฌ๋กค๋ง (Hada.io) | deep_web_crawler.py |
| 6 | Search Tool ๐ | Serper ๊ฒ์ API | search_tool.py |
| 7 | Image Search ๐จ | Pexels/Unsplash ๊ฒ์ | image_search.py |
| 8 | PDF Image Describer ๐ | GPT-4o Vision ์ด๋ฏธ์ง ์ค๋ช | pdf_image_describer.py |
| 9 | Image Editor โ๏ธ | ๋ํํ ์ด๋ฏธ์ง ํธ์ง | image_editor.py |
ํ์ง ํ๊ฐ ์์คํ (6์ฐจ์)
| ์ฐจ์ | ๊ฐ์ค์น | ํ๊ฐ ๊ธฐ์ค |
|---|---|---|
| ๋ด์ฉ ์์ฑ๋ | 25% | ํ์ต ๋ชฉํ ๋ฌ์ฑ๋ |
| ๋ ผ๋ฆฌ์ ํ๋ฆ | 20% | ์น์ ๊ฐ ์ฐ๊ฒฐ์ฑ |
| ์๊ฐ ์ ํฉ์ฑ | 10% | ๊ฐ์ ์๊ฐ vs ๋ถ๋ |
| ๋์ด๋ ์ ํฉ์ฑ | 20% | ์๊ฐ์ ๋ ๋ฒจ ์ผ์น |
| ์๊ฐ์๋ฃ ํ์ง | 15% | ์ด๋ฏธ์ง/๋ค์ด์ด๊ทธ๋จ ์ถฉ๋ถ์ฑ |
| ๊ธฐ์ ์ ์ ํ์ฑ | 10% | ์ฌ์ค ๊ด๊ณ ๊ฒ์ฆ |
ํฉ๊ฒฉ ๊ธฐ์ค: 80์ ์ด์ (์๋ ๋ฐ๋ณต ๊ฐ์ , ์ต๋ 3ํ)
โ FAQ
์ค์น ๋ฐ ์ค์
Q: ์ด๋ค Python ๋ฒ์ ์ด ํ์ํ๊ฐ์?
A: Python 3.11 ์ด์์ด ํ์ํฉ๋๋ค.
python --version # Python 3.11+ ํ์ธ
Q: API ํค๊ฐ ๊ผญ ํ์ํ๊ฐ์?
A:
- ํ์: OpenAI API, Serper API
- ์ ํ: Pexels API, Unsplash API (์ด๋ฏธ์ง ๊ฒ์์ฉ)
์ด๋ฏธ์ง API ์์ด๋ PDF/์น ์ด๋ฏธ์ง๋ง์ผ๋ก ์๋ํฉ๋๋ค.
Q: ๋น์ฉ์ด ์ผ๋ง๋ ๋๋์?
A: ์ค์ ์ธก์ ๋น์ฉ (v0.2.4+ ๊ธฐ์ค):
- 60๋ถ ๊ฐ์: ์ฝ $0.035
- 180๋ถ ๊ฐ์: ์ฝ $0.105
(GPT-4o-mini ์ฌ์ฉ. ๋ณด์์ ์ด๋ก ์ถ์ : $0.22/180๋ถ)
์์ฑ ์๋ฃ ํ ์ ํํ ๋น์ฉ์ด ํ์๋ฉ๋๋ค.
Q: .env ํ์ผ ์ค์ ์ ๋ฐ๊พธ๋ ค๋ฉด?
A: .env ํ์ผ์ ์ด์ด ์ํ๋ ๊ฐ์ ์์ ํ์ธ์:
# ๊ฒ์ ๊ฒฐ๊ณผ ์ฆ๊ฐ
SEARCH_NUM_RESULTS=20
# ํฌ๋กค๋ง ๋ฒ์ ํ๋
DEEP_CRAWLER_MAX_PAGES=30
# ํ์์์ ์ฆ๊ฐ
WEB_SCRAPER_TIMEOUT=60
๋ณ๊ฒฝ ํ ์ฌ์์ํ๋ฉด ๋ฐ๋ก ์ ์ฉ๋ฉ๋๋ค.
์ฌ์ฉ๋ฒ
Q: ์คํ๋ผ์ธ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฐ์?
A:
- ์์ฑ ์: API ํ์ (OpenAI, Serper ๋ฑ)
- ์์ฑ ํ: HTML ํ์ผ๊ณผ ์ง์์ฐฝ๊ณ ๋ ์คํ๋ผ์ธ ์ฌ์ฉ ๊ฐ๋ฅ
- Chat ๋ชจ๋: ์ง์์ฐฝ๊ณ ๋ ์คํ๋ผ์ธ ์๋ํ์ง๋ง LLM API๋ ํ์
Q: ํ์ง ๋ ๋ฒจ์ ์ฐจ์ด๋?
A:
| ๋ ๋ฒจ | ์๊ณ๊ฐ | ์ฉ๋ | ์๊ฐ |
|---|---|---|---|
lenient |
70์ | ๋น ๋ฅธ ์ด์ | ์งง์ |
balanced |
80์ | ๊ธฐ๋ณธ๊ฐ โ | ๋ณดํต |
strict |
90์ | ๊ณ ํ์ง ํ๋ก๋์ | ๊น |
์๊ณ๊ฐ ๋ฏธ๋ฌ ์ ์ต๋ 3ํ ์๋ ๊ฐ์ ํฉ๋๋ค.
Q: Chat ๋ชจ๋ ์ข ๋ฃ ๋ฐฉ๋ฒ์?
A: ๋ค์ ์ค ํ๋ ์ฌ์ฉ:
/exit๋๋/quitexit๋๋quitCtrl+C
Q: ์ด๋ฏธ์ง๊ฐ ์ ๋๋ก ๋งค์นญ๋์ง ์์ผ๋ฉด?
A: v0.2.0์ Location-based ๋งค์นญ์ด ์๋์ผ๋ก ์๋ํฉ๋๋ค:
- PDF ์ด๋ฏธ์ง: 85% ์๋ ๋งค์นญ (ํ์ด์ง ๊ธฐ๋ฐ)
- ์น ์ด๋ฏธ์ง: ํค์๋ ๊ธฐ๋ฐ ๋ณด์
- ์๋ ํธ์ง:
lecture-forge edit-images๋ก ๊ต์ฒด ๊ฐ๋ฅ
๊ธฐ์ ์ ์ง๋ฌธ
Q: ํ ์คํธ๋ ์ด๋ป๊ฒ ์คํํ๋์?
# ์ ์ฒด ํ
์คํธ
pytest tests/ -v
# ์ปค๋ฒ๋ฆฌ์ง ํ์ธ
pytest tests/ --cov=lecture_forge --cov-report=html
# ํน์ ํ
์คํธ
pytest tests/unit/agents/test_content_writer.py -v
# ํน์ ์์ด์ ํธ๋ง
pytest tests/unit/agents/ -v
Q: API ํธ์ถ์ด ์คํจํ๋ฉด ์ด๋ป๊ฒ ๋๋์?
A: v0.2.0๋ถํฐ ์๋ ์ฌ์๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค:
- ์ต๋ 3ํ ์ฌ์๋
- ์ง์ ๋ฐฑ์คํ: 2์ด โ 4์ด โ 10์ด
- ์ผ์์ ์ค๋ฅ ์๋ ๋ณต๊ตฌ
- OpenAI, Serper, Pexels, Unsplash ๋ชจ๋ ์ง์
Q: RAG ์ฟผ๋ฆฌ ์บ์ฑ์ ์ด๋ป๊ฒ ์๋ํ๋์?
A:
- ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ ๊ฐ์๋ฅผ MD5 ํด์๋ก ๋ณํํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์บ์
- ๋์ผ ์ง๋ฌธ์ 60% ๋น ๋ฅธ ์๋ต
- ์บ์ ํํธ/๋ฏธ์ค ํต๊ณ ์๋ ์ถ์
- ์ธ์ ๋์ ์ ์ง (ํ๋ก์ธ์ค ์ข ๋ฃ ์ ์ด๊ธฐํ)
Q: ์ค์ ์ ํ๊ฒฝ๋ณ๋ก ๋ค๋ฅด๊ฒ ํ๋ ค๋ฉด?
A: .env ํ์ผ์ ํ๊ฒฝ๋ณ๋ก ๋ถ๋ฆฌํ์ธ์:
# ๊ฐ๋ฐ ํ๊ฒฝ
.env.development
# ํ๋ก๋์
ํ๊ฒฝ
.env.production
# ์ฌ์ฉ
cp .env.production .env
lecture-forge create
๐ ๋ณ๊ฒฝ ์ด๋ ฅ
v0.2.6 (2026-02-12) - ๐ Critical Image Bug Fix
Critical Bug Fix:
- ๐ ์ด๋ฏธ์ง thumbnail ๋ฒ๊ทธ ์์ ํด๊ฒฐ: ํ์ง ๋ถ์ ์ค ์๋ณธ ์ด๋ฏธ์ง๊ฐ 200px๋ก ์ถ์๋๋ ์น๋ช
์ ๋ฒ๊ทธ ์์
- ๋ฌธ์ :
_analyze_image_content_fast()์์pil_image.thumbnail()ํธ์ถ ์ ์๋ณธ ์ด๋ฏธ์ง ์์ - ์ฆ์: ๋ชจ๋ PDF ์ถ์ถ ์ด๋ฏธ์ง๊ฐ ์ ํํ 200px ๋๋น๋ก ์ ์ฅ๋จ (์: 200x44, 200x89, 200x125)
- ํด๊ฒฐ: ๋ถ์ ์ ์ด๋ฏธ์ง ๋ณต์ฌ๋ณธ ์์ฑ (
pil_image.copy())์ผ๋ก ์๋ณธ ๋ณด์กด - ๊ฒฐ๊ณผ: 800x600 ์ด๋ฏธ์ง๋ ์ด์ 800x600 ๊ทธ๋๋ก ์ ์ฅ โ
- ๋ฌธ์ :
์ํฅ:
- โ PDF ์ด๋ฏธ์ง ์๋ณธ ํฌ๊ธฐ ์์ ๋ณด์กด
- โ IMAGE_MIN_WIDTH=500, IMAGE_MIN_HEIGHT=300 ํํฐ ์ ์ ์๋
- โ ๊ณ ํด์๋ ์ด๋ฏธ์ง ํ์ง ์์ ๋ณด์ฅ
- โ v0.2.5์ ์ด๋ฏธ์ง ํ์ง ๊ฐ์ ๊ธฐ๋ฅ์ด ์ด์ ์ ์ ์๋
๊ธฐ์ ์์ธ:
# ์์ ์ (๋ฒ๊ทธ - image_extractor.py:333):
pil_image.thumbnail((200, 200), Image.Resampling.LANCZOS) # โ ์๋ณธ ์์ !
# ์์ ํ (์ ์):
analysis_img = pil_image.copy() # โ
๋ณต์ฌ๋ณธ ์์ฑ
analysis_img.thumbnail((200, 200), Image.Resampling.LANCZOS) # โ
๋ณต์ฌ๋ณธ๋ง ์์
v0.2.5 (2026-02-12) - Image Quality & Resolution Improvements (Partial) ๐ผ๏ธ
์ฃผ์: v0.2.5์ ์ด๋ฏธ์ง ๊ฐ์ ๊ธฐ๋ฅ์ thumbnail ๋ฒ๊ทธ(v0.2.6์์ ์์ )๋ก ์ธํด ๋ถ๋ถ์ ์ผ๋ก๋ง ์๋ํ์ต๋๋ค.
์ด๋ฏธ์ง ํ์ง ํ์
- ๐จ ๊ณ ํ์ง WebP ์ ์ฅ: quality=95, method=6 ์ ์ฉ (์ด๋ฏธ์ง ์์ถ ์ ํ์ง ์์ค ๋ฐฉ์ง)
- ๐ Full HD ํด์๋: IMAGE_MAX_WIDTH 1200px โ 1920px (๊ณ ํด์๋ ์ง์)
- ๐ ์ต์ ํฌ๊ธฐ ๊ฐํ: IMAGE_MIN_WIDTH 200px โ 500px, IMAGE_MIN_HEIGHT 200px โ 300px
- โฌ๏ธ API ํ์ง ์
๊ทธ๋ ์ด๋:
- Unsplash "regular" (1080px) โ "full" (2400px)
- Pexels "large" (940px) โ "original" (์ ์ฒด ํฌ๊ธฐ)
์ด๋ฏธ์ง ํ์ ๊ฐ์
- ๐ฏ HTML ํ
ํ๋ฆฟ ์ต์ ํ:
w-fullโmax-w-full+min-width: 600px(์์ ์ด๋ฏธ์ง ๊ฐ์ ํ๋ ๋ฐฉ์ง) - โจ CSS ๋ ๋๋ง ํฅ์:
image-rendering: crisp-edges(๊ณ ํ์ง ๋ ๋๋ง) - ๐ฑ ๋ฐ์ํ ํฌ๊ธฐ ์กฐ์ : ๋ชจ๋ฐ์ผ/๋ฐ์คํฌํฑ ์ ์ํ ์ด๋ฏธ์ง ํฌ๊ธฐ
์ด๋ฏธ์ง ํธ์ง ๊ฐ์
- ๐ง VectorStore ์ด๊ธฐํ ์์ :
persist_directoryโcollection_nameํ๋ผ๋ฏธํฐ ์ฌ์ฉ - ๐ ํ์ผ์์คํ ํด๋ฐฑ ๊ฒ์: Vector DB ์คํจ ์ ํ์ด์ง ๊ธฐ๋ฐ ์ค์ฝ์ด๋ง์ผ๋ก ๋์ ๊ฒ์
- ๐ฏ ์ค๋งํธ ๋๋ ํ ๋ฆฌ ํ์ง:
./data/images์ฐ์ ํ์ (๊ฐ๋ฐ ๋ชจ๋ ์ง์)
Config ๊ฐ์
- โ๏ธ ๊ธฐ๋ณธ๊ฐ ์
๋ฐ์ดํธ:
.env.example๋ฐconfig.py์ต์ ํ
v0.2.2 (2026-02-11) - Documentation & Consistency Updates ๐
๋ฌธ์ํ
- ๐ ๋ฒ์ ์ ๋ณด ํต์ผ (setup.py, pyproject.toml, version.py, CLI, ๋ฌธ์)
- ๐ CLAUDE.md, README.md, INPUT_LIMITS_ANALYSIS.md ์ ๋ฐ์ดํธ
- โจ ์ฝ๋์ ๋ฌธ์ ์ผ์น์ฑ ๊ฐ์
v0.2.1 (2026-02-10) - Bug Fixes & Improvements ๐
๋ฒ๊ทธ ์์
- ๐ Visual score ํญ์ 0์ผ๋ก ํ์๋๋ ๋ฌธ์ ์์ (์ด๋ฏธ์ง ์นด์ดํ ๋ก์ง ์ถ๊ฐ)
- ๐ ํ์ง ํ๊ฐ ๋ฌดํ ๋ฐ๋ณต ๋ฌธ์ ํด๊ฒฐ (์น์ ๋ณ ์๊ณ๊ฐ ์ํ + ์กฐ๊ธฐ ์ข ๋ฃ)
- ๐ ์ฌ๋ผ์ด๋ orphaned heading ๋ฌธ์ ๊ฐ์ (look-ahead ๋ก์ง ์ ์ฉ)
๊ฐ์ ์ฌํญ
- โจ CLI ๋์๋ง ํ ์คํธ ๊ฐ๋ ์ฑ ํฅ์ (์ค๋ฐ๊ฟ ๊ฐ์ )
- โจ Reveal.js ํค๋ณด๋ ๋จ์ถํค ์ค๋ช ์ถ๊ฐ (--to-slides ๋์๋ง)
- โจ ์ฌ๋ผ์ด๋ ๊ตฌ์ฑ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ (max_items_per_slide 3โ4)
- โจ ํ์ง ํ๊ฐ ํจ์จ์ฑ ํฅ์ (3์ ๋ฏธ๋ง ๊ฐ์ ์ ์กฐ๊ธฐ ์ข ๋ฃ)
๋ฌธ์
- ๐ INPUT_LIMITS_ANALYSIS.md์ ๋ฉํฐ์์ค ์ ๋ต ์์ธ ๋ถ์ ์ถ๊ฐ (Section 8)
- ๐ README.md ๋ฐ CLAUDE.md v0.2.1 ์ ๋ณด ์ ๋ฐ์ดํธ
v0.2.0 (2026-02-09) - Enhanced Quality Release ๐
์ฑ๋ฅ ํฅ์
- โก RAG ์ฟผ๋ฆฌ ์บ์ฑ (60% ์ฑ๋ฅ ํฅ์)
- ๐ ์๋ API ์ฌ์๋ ๋ก์ง (์ง์ ๋ฐฑ์คํ)
ํ์ง ๊ฐ์
- ๐งช 77+ ๋จ์ ํ ์คํธ ์์ฑ (35%+ ์ปค๋ฒ๋ฆฌ์ง)
- ๐ง ํ์ ํํธ 75% ์ปค๋ฒ๋ฆฌ์ง (40% โ 75%)
- ๐ Config ๊ฒ์ฆ ๋ฐํ์ ์ด๋
- ๐ Bare except ์ํฐํจํด ์์
์ค์ ๊ด๋ฆฌ
- ๐ง Config ๋ฆฌํฉํ ๋ง: ๋ชจ๋ ํ๋์ฝ๋ฉ ์ ๊ฑฐ, .env ๊ธฐ๋ฐ ์ค์ ์์คํ ๋์
- โ๏ธ 15+ ํ๊ฒฝ๋ณ์: ๊ฒ์, ํฌ๋กค๋ง, ์ด๋ฏธ์ง, ํ์์์ ๋ฑ ๋ชจ๋ ์ค์ ์กฐ์ ๊ฐ๋ฅ
- ๐๏ธ ์ ์ฐํ ๋ฐฐํฌ: ๊ฐ๋ฐ/ํ๋ก๋์ ํ๊ฒฝ๋ณ ์ค์ ๋ถ๋ฆฌ ์ง์
๋ฌธ์
- ๐ CLAUDE.md, README.md, INPUT_LIMITS_ANALYSIS.md ์ ๋ฐ์ดํธ
- ๐ Config ๊ธฐ๋ฐ ์ค์ ๊ฐ์ด๋ ์ถ๊ฐ
v0.1.0 (2026-02-08) - Initial Production Release ๐
- ๐ค 10๊ฐ ์ ๋ฌธ ์์ด์ ํธ ์์คํ
- ๐ ๋ฉํฐ์์ค ์ปจํ ์ธ ์์ง (PDF, URL, ๊ฒ์)
- ๐ Location-based ์ด๋ฏธ์ง ๋งค์นญ (+750% ํ์ฉ๋ฅ )
- ๐๏ธ ChromaDB ๋ฒกํฐ DB ๊ธฐ๋ฐ ์ง์์ฐฝ๊ณ
- โ 6์ฐจ์ ํ์ง ํ๊ฐ ์์คํ
- ๐จ ๊ตฌ์กฐํ๋ HTML ์ถ๋ ฅ
- ๐ฌ Reveal.js ์ฌ๋ผ์ด๋ ๋ณํ
๐ค ๊ธฐ์ฌํ๊ธฐ
๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค! ๋ค์ ์ ์ฐจ๋ฅผ ๋ฐ๋ผ์ฃผ์ธ์:
- ์ด์ ์์ฑ: ๋ณ๊ฒฝ์ฌํญ์ ๋จผ์ ๋ ผ์
- ํฌํฌ & ๋ธ๋์น: feature ๋ธ๋์น ์์ฑ
- ํ ์คํธ ์์ฑ: ์ ๊ธฐ๋ฅ์ ๋ํ ํ ์คํธ ์ถ๊ฐ
- PR ์ ์ถ: ๋ณ๊ฒฝ์ฌํญ ์ค๋ช ๊ณผ ํจ๊ป ์ ์ถ
์์ธํ ๋ด์ฉ์ CONTRIBUTING.md๋ฅผ ์ฐธ์กฐํ์ธ์.
๐ ๋ผ์ด์ ์ค
MIT License - ์์ธํ ๋ด์ฉ์ LICENSE ์ฐธ์กฐ
๐ ์ง์ ๋ฐ ๋ฌธ์
- ์ด์ ํธ๋์ปค: GitHub Issues
- ํ๋ก์ ํธ ๊ฐ์ด๋: CLAUDE.md
- ๊ธฐ์ ๋ถ์: INPUT_LIMITS_ANALYSIS.md
- ํ ์คํธ ๊ฐ์ด๋: tests/README.md
๐ ๊ฐ์ฌ์ ๋ง
์ด ํ๋ก์ ํธ๋ ๋ค์ ์คํ์์ค ํ๋ก์ ํธ๋ค์ ํ์ฉํฉ๋๋ค:
- LangChain - Multi-Agent ํ๋ ์์ํฌ
- ChromaDB - ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- OpenAI - GPT-4o ๋ชจ๋ธ
- Serper - ๊ฒ์ API
- Pexels & Unsplash - ์ด๋ฏธ์ง API
Made with โค๏ธ by LectureForge Team
โญ ์ด ํ๋ก์ ํธ๊ฐ ๋์์ด ๋์๋ค๋ฉด GitHub Star๋ฅผ ๋๋ฌ์ฃผ์ธ์!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lecture_forge-0.2.6.tar.gz.
File metadata
- Download URL: lecture_forge-0.2.6.tar.gz
- Upload date:
- Size: 194.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5393c70cd1c416b6fed45ccf20f5a475eca1c25c5c48e8bdb944e2b72d27aa5
|
|
| MD5 |
37c10bfeed4c1853d64c58f62c0f971f
|
|
| BLAKE2b-256 |
1f3ed299e543265fd9d21700852c72cea2e14734e718dc0c2120d2d0d199c2b2
|
File details
Details for the file lecture_forge-0.2.6-py3-none-any.whl.
File metadata
- Download URL: lecture_forge-0.2.6-py3-none-any.whl
- Upload date:
- Size: 171.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
485397216cacf2275cd63b216f7e9e9ad11b723c6529ebc5763dce0cc36b632d
|
|
| MD5 |
2cd4c1b2df9f377c363ef0c672ce0097
|
|
| BLAKE2b-256 |
add713441254e67701a41113ddca6fe2703e37edb854563199ed97917e6c55f6
|