AI-powered lecture material generator with multilingual support using LangChain
Project description
LectureForge ๐
AI-Powered Lecture Material Generator using Multi-Agent Pipeline System
๐ v0.3.2 Beta Release | Multilingual + Enhanced RAG Quality ๐๐ฏ
PDF, ์นํ์ด์ง, ์ธํฐ๋ท ๊ฒ์์์ ์ ๋ณด๋ฅผ ์์งํ์ฌ ๊ณ ํ์ง ๊ฐ์์๋ฃ๋ฅผ ์๋ ์์ฑํ๋ AI ์์คํ ์ ๋๋ค.
ํต์ฌ ํต๊ณ: 10๊ฐ ์์ด์ ํธ | 9๊ฐ ๋๊ตฌ | 7๊ฐ CLI ๋ช ๋ น | 89๊ฐ ํ ์คํธ (50%+ ์ปค๋ฒ๋ฆฌ์ง) | ~$0.035/60๋ถ ๊ฐ์ | Python 3.11-3.13
๋ฐ์ดํฐ ์์น: ~/Documents/LectureForge/ (์ผ๋ฐ ํด๋, Finder/ํ์๊ธฐ์์ ๋ฐ๋ก ์ ๊ทผ)
๐ ๋ชฉ์ฐจ
โจ ์ฃผ์ ๊ธฐ๋ฅ
์ปจํ ์ธ ์์ฑ
- ๐ ๋ฉํฐ์์ค ์์ง: PDF, URL, ์น ๊ฒ์์ ํตํ ํฌ๊ด์ ์ ๋ณด ์์ง
- ๐ Location-based ์ด๋ฏธ์ง ๋งค์นญ: RAG ์ปจํ ์คํธ ๊ธฐ๋ฐ ์๋ ์ด๋ฏธ์ง ๋ฐฐ์น (+750% ํ์ฉ๋ฅ )
- ๐ผ๏ธ ๋ํํ ์ด๋ฏธ์ง ํธ์ง: ์์ฑ๋ ๊ฐ์์ ์ด๋ฏธ์ง ์ญ์ /๊ต์ฒด (Vector DB ๊ธฐ๋ฐ ๋์ ๊ฒ์)
- ๐จ ๊ตฌ์กฐํ๋ HTML ์ถ๋ ฅ: Mermaid ๋ค์ด์ด๊ทธ๋จ, ๊ฒ์ ์ธ๋ฑ์ค, ์ฝ๋ ํ์ด๋ผ์ดํ
- ๐ฌ ํ๋ ์ ํ ์ด์ ์ฌ๋ผ์ด๋: Reveal.js ๊ธฐ๋ฐ ์๋ ๋ณํ (v0.3.0 ๋ํญ ๊ฐ์ )
ํ์ง ๋ณด์ฆ
- โ 6์ฐจ์ ํ์ง ํ๊ฐ: ์์ฑ๋, ํ๋ฆ, ์๊ฐ, ๋์ด๋, ์๊ฐ์๋ฃ, ์ ํ์ฑ
- ๐ ์๋ ๊ฐ์ : ํ์ง ๊ธฐ์ค ๋ฏธ๋ฌ ์ ์ต๋ 3ํ ์๋ ์์
- ๐งช ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง: 89๊ฐ ํ ์คํธ ํจ์ (20๊ฐ ํ์ผ, 50%+ ์ปค๋ฒ๋ฆฌ์ง)
์ง์ ๊ด๋ฆฌ
- ๐๏ธ RAG ๊ธฐ๋ฐ ์ง์์ฐฝ๊ณ : ChromaDB ๋ฒกํฐ DB๋ก ๋ํํ Q&A ์ง์
- ๐ ๋ค๊ตญ์ด ์ง์: ํ์ ํผํฉ PDF ์ง์, ์๋ ์ธ์ด ๊ฐ์ง, Cross-lingual ๊ฒ์ (v0.3.2+)
- ๐ฏ ๊ณ ๊ธ RAG ํ์ง (v0.3.2+):
- Chain of Thought ์ถ๋ก ์ผ๋ก ์ ํํ ๋ต๋ณ
- ๋ค์์ฑ ๊ธฐ๋ฐ ์ฌ๋ญํน (์ต๋ 4๊ฐ source ํ์ฉ)
- ๋ต๋ณ ํ์ฒ๋ฆฌ ๋ฐ ์๋ ํ์ฅ
- ๋์ ์ ๋ขฐ๋ ์ ์ (High/Medium/Low)
- โก ์ฟผ๋ฆฌ ์บ์ฑ: ๋์ผ ์ง๋ฌธ 60% ๋น ๋ฅธ ์๋ต
- ๐ฌ ์์ค ์ธ์ฉ: ์๋ ์ฐธ์กฐ ๋ฐ ํ์ด์ง ๋ฒํธ ์ ๊ณต
์์ ์ฑ & ์ฑ๋ฅ
- ๐ ์๋ ์ฌ์๋: API ์คํจ ์ ์ง์ ๋ฐฑ์คํ (์ต๋ 3ํ)
- ๐ฐ ๋น์ฉ ์ถ์ : ์ค์๊ฐ ํ ํฐ ์ฌ์ฉ๋ ๋ฐ ๋น์ฉ ์ถ์
- ๐ง ํ์ ํํธ: 75% ํ์ ์์ ์ฑ
- ๐ฏ ์์ธ ์ฒ๋ฆฌ: ๊ตฌ์กฐํ๋ ์์ธ ์์คํ (9๊ฐ ์นดํ ๊ณ ๋ฆฌ)
- ๐ ํ๋กฌํํธ ๊ด๋ฆฌ: ํ ํ๋ฆฟ ๊ธฐ๋ฐ ํ๋กฌํํธ ์์คํ
๐ ์ต๊ทผ ๊ฐ์ ์ฌํญ
v0.3.2 (2026-02-14) - ๋ค๊ตญ์ด ์ง์ + RAG ํ์ง ๊ฐํ ๐๐ฏ
๋ค๊ตญ์ด ์ง์:
- ์๋ ์ธ์ด ๊ฐ์ง: ๊ฐ chunk๋ง๋ค ์ธ์ด ์๋ ๊ฐ์ง (ํ๊ตญ์ด, ์์ด ๋ฑ)
- Cross-lingual ๊ฒ์: ํ๊ตญ์ด๋ก ์ง๋ฌธ โ ์์ด ๋ฌธ์๋ ๊ฒ์
- Dual Query: ์๋ณธ + ๋ฒ์ญ ์ฟผ๋ฆฌ ๋์ ์คํ
- ์ง๋ฅํ ์ฌ๋ญํน: ๊ฐ์ ์ธ์ด ์ฐ์ ์์ + ๊ต์ฐจ ์ธ์ด ๊ฒฐ๊ณผ ํฌํจ
- ํผํฉ ์ธ์ด PDF ์ง์: ํ์ ํผํฉ PDF๋ ์๋ฒฝ ์ฒ๋ฆฌ
- ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ: ๊ธฐ์กด Vector DB์ ์ธ์ด ๋ฉํ๋ฐ์ดํฐ ์๋ ์ถ๊ฐ
RAG ๋ต๋ณ ํ์ง ๊ฐํ:
- ๊ฒ์ ๋ฒ์ +60%: 5๊ฐ โ 8๊ฐ chunks๋ก ํ๋
- ๊ณ ๊ธ ํ๋กฌํํธ: Chain of Thought ์ถ๋ก , ๊ตฌ์กฐํ๋ ๋ต๋ณ ์์ฑ
- ๋ค์์ฑ ์ฌ๋ญํน: Source-Page ๋ค์์ฑ ๋ณด์ฅ (์ต๋ 2๊ฐ/source-page)
- ๋ต๋ณ ํ์ฒ๋ฆฌ: ์งง์ ๋ต๋ณ ์๋ ํ์ฅ, ๋ถ๋ถ ์ ๋ณด ์ถ์ถ
- ์ ๋ขฐ๋ ์ ์: ๋์ ๊ณ์ฐ ๋ฐ ์์ ์ฝ๋ฉ (High/Medium/Low)
ํจ๊ณผ:
- โ ๋ต๋ณ ์์ฑ๋ +50%, Source ๋ค์์ฑ +100%
- โ ๋ถ์์ ๋ต๋ณ์จ -67% (15% โ 5%)
- โ ์๋ฌธ PDF์ ํ๊ตญ์ด ์ง๋ฌธ ๊ฐ๋ฅ (vice versa)
์ฌ์ฉ ์์:
You: ํ์ด์ฌ ๋ฐ์ฝ๋ ์ดํฐ๋ ๋ฌด์์ธ๊ฐ์?
๐ Detected: Korean | ๐ Cross-lingual search
โจ Searching 8 chunks with diversity ranking...
AI: ํ์ด์ฌ ๋ฐ์ฝ๋ ์ดํฐ๋ ํจ์๋ ๋ฉ์๋๋ฅผ ์์ ํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค.
**ํต์ฌ ๊ฐ๋
:**
1. **ํจ์๋ฅผ ์ธ์๋ก ๋ฐ์ ์ ํจ์๋ฅผ ๋ฐํ**ํ๋ ๊ณ ์ฐจ ํจ์์
๋๋ค
2. **@syntax**๋ฅผ ์ฌ์ฉํด ๊ฐ๊ฒฐํ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค
3. **ํก๋จ ๊ด์ฌ์ฌ**(๋ก๊น
, ์ธ์ฆ, ์บ์ฑ)๋ฅผ ๋ถ๋ฆฌํ๋๋ฐ ์ ์ฉํฉ๋๋ค
**์์ ์ฝ๋:**
[... ์ฝ๋ ์์ ...]
๐ Sources: 3๊ฐ ๋ฌธ์ (ํ์ด์ง 45, 67, 89)
๐ฏ Confidence: High (92%)
v0.3.1 (2026-02-13) - ๐ User-Friendly Directories
์ฌ์ฉ์ ์นํ์ ๋๋ ํ ๋ฆฌ:
- ๐ ํ๋ โ ์ผ๋ฐ ํด๋:
~/.lecture-forge/โ~/Documents/LectureForge/- Finder/ํ์๊ธฐ์์ ๋ฐ๋ก ํ์ธ ๊ฐ๋ฅ
- ๋๋๊ทธ์ค๋๋กญ์ผ๋ก ํ์ผ ๊ด๋ฆฌ ๊ฐํธ
- iCloud/OneDrive ๋๊ธฐํ ๊ฐ๋ฅ
- ๐ home ์ปค๋งจ๋ ์ถ๊ฐ: ๋น ๋ฅธ ํด๋ ์ ๊ทผ
lecture-forge home outputs- ๊ฐ์ ๊ฒฐ๊ณผ๋ฌผlecture-forge home kb- ์ต์ ์ง์๋ฒ ์ด์คlecture-forge home env- .env ํธ์ง
- ๐ ์๋ ๋ง์ด๊ทธ๋ ์ด์ : ๊ธฐ์กด ๋ฐ์ดํฐ ์๋ ์ด๋
v0.3.0 (2026-02-12) - ํ๋ ์ ํ ์ด์ ์ต์ ํ ๐ฏ
- ์ฌ๋ผ์ด๋ ๊ตฌ์ฑ ๊ฐ์ : ํ๋ ์ ํ
์ด์
์ ์ต์ ํ
- ์ฌ๋ผ์ด๋๋น ํญ๋ชฉ ์ ๊ฐ์ (4๊ฐ โ 3๊ฐ)
- ๊ธด ๋ฆฌ์คํธ ์๋ ๋ถํ (์ต๋ 5๊ฐ์ฉ)
- ๋ ผ๋ฆฌ์ ์ฌ๋ผ์ด๋ ๊ตฌ์ฑ (ํ ์ฃผ์ = ํ ์ฌ๋ผ์ด๋)
- ์คํ์ผ ๊ฐ์ : ์ ๋ฌธ์ ์ธ ๋์์ธ ์์คํ
- ์ ๋ชฉ ํฌ๊ธฐ/์์ ๊ณ์ธตํ
- ํ์ดํฌ๊ทธ๋ํผ ์ต์ ํ
- ์ฝ๋ ๋ธ๋ก ์ ์ฒด๊ฐ
- Mermaid ๋ค์ด์ด๊ทธ๋จ: ๋ฌธ์ ์๊ฐํ ๊ฐ์
- ์์คํ ์ํคํ ์ฒ, ์์ธ ๊ณ์ธต, ํ์ง ํ๊ฐ ๋ฑ
์ด์ ๋ฒ์ ํ์ด๋ผ์ดํธ
- v0.2.7: ์์ธ ์ฒ๋ฆฌ ์์คํ , ํ ํ๋ฆฟ ๊ธฐ๋ฐ ํ๋กฌํํธ
- v0.2.0-0.2.6: RAG ์บ์ฑ, ์๋ ์ฌ์๋, ํ ์คํธ ๊ฐํ, Config ๋ฆฌํฉํ ๋ง
๐ ๋น ๋ฅธ ์์
1๏ธโฃ ์ค์น
# Python 3.11-3.13 ํ๊ฒฝ ์์ฑ (3.11 ๊ถ์ฅ)
conda create -n lecture-forge python=3.11
conda activate lecture-forge
# ํจํค์ง ์ค์น
pip install -e .
# ์น ์คํฌ๋ํ์ฉ ๋ธ๋ผ์ฐ์ ์ค์น
playwright install
Python ๋ฒ์ ํธํ์ฑ:
- โ Python 3.11-3.12: ์์ ์ง์ (ํ๋ก๋์ ์ฌ์ฉ ๊ถ์ฅ)
- โ ๏ธ Python 3.13: ์คํ์ ์ง์ (๋๋ถ๋ถ์ ๊ธฐ๋ฅ ์๋, ์ผ๋ถ ์์กด์ฑ ํ ์คํธ ํ์)
- ์ต์ ๊ธฐ๋ฅ๊ณผ ์์ ์ฑ์ ์ํด Python 3.11 ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
2๏ธโฃ ํ๊ฒฝ ์ค์
๋ฐฉ๋ฒ 1: ๋ํํ ์ค์ (๊ถ์ฅ โญ)
# ๋ํํ ์ค์ ๋ง๋ฒ์ฌ ์คํ
lecture-forge init
์ด ๋ช ๋ น์ด๋ ๋ค์์ ์ํํฉ๋๋ค:
- โ
ํ๋ซํผ๋ณ ์ต์ ์์น์
.envํ์ผ ์๋ ์์ฑ- Windows:
%USERPROFILE%\Documents\LectureForge\.env - Mac/Linux:
~/Documents/LectureForge/.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 |
| home | ํด๋ ์ด๊ธฐ (v0.3.1+) | outputs, data, kb, env |
๋น ๋ฅธ ์คํ ์์
# ๐ ์ด๊ธฐ ์ค์ (์ฒ์ ํ ๋ฒ๋ง)
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
# ๐ ํด๋ ์ด๊ธฐ (๊ฐ์ ๊ฒฐ๊ณผ๋ฌผ ํ์ธ)
lecture-forge home outputs
๋ช ๋ น์ด ์์ธ ๊ฐ์ด๋
๐ init - ์ด๊ธฐ ์ค์
๊ธฐ๋ณธ ์ฌ์ฉ:
lecture-forge init
๋ํํ ๋ง๋ฒ์ฌ๊ฐ API ํค ์
๋ ฅ์ ์๋ดํ๊ณ ์๋์ผ๋ก .env ํ์ผ์ ์์ฑํฉ๋๋ค.
์ต์ :
| ์ต์ | ์ค๋ช | ์ฌ์ฉ ์ |
|---|---|---|
--path PATH |
์ปค์คํ ๋๋ ํ ๋ฆฌ ์ง์ | --path /custom/path |
๊ธฐ๋ณธ ์ ์ฅ ์์น:
- Windows:
C:\Users\<username>\Documents\LectureForge\.env - Mac/Linux:
~/Documents/LectureForge/.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๊ฐ ์ ๋ฌธ ์์ด์ ํธ)
flowchart TD
CLI["๐ฅ๏ธ CLI Interface<br/>์
๋ ฅ ์์ง, ์งํ ์ํฉ, Q&A ์ธํฐ๋์
"]
Orchestrator["โ๏ธ Pipeline Orchestrator<br/>์์ด์ ํธ ์กฐ์จ ๋ฐ ํ์คํฌ ๊ด๋ฆฌ"]
Phase12["๐ Phase 1-2<br/>Collection & Analysis"]
KB["๐๏ธ Knowledge Base<br/>Vector DB + RAG Caching"]
Phase34["โ๏ธ Phase 3-4<br/>Generation & Quality QA"]
Output["๐ค Output<br/>HTML + Slides"]
CLI --> Orchestrator
Orchestrator --> Phase12
Orchestrator --> KB
Phase12 -->|์ ์ฅ| KB
KB -->|RAG Query| Phase34
Phase34 -->|RAG Query| KB
Phase34 --> Output
style CLI fill:#e1f5ff
style Orchestrator fill:#fff4e1
style Phase12 fill:#e8f5e9
style KB fill:#f3e5f5
style Phase34 fill:#fff9c4
style Output fill:#ffebee
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์ฐจ์)
%%{init: {'theme':'base', 'themeVariables': { 'pie1':'#e8f5e9', 'pie2':'#bbdefb', 'pie3':'#fff9c4', 'pie4':'#f8bbd0', 'pie5':'#ffccbc', 'pie6':'#d1c4e9'}}}%%
pie title ํ์ง ํ๊ฐ ๊ฐ์ค์น ๋ถํฌ
"๋ด์ฉ ์์ฑ๋ (ํ์ต ๋ชฉํ)" : 25
"๋
ผ๋ฆฌ์ ํ๋ฆ (์ฐ๊ฒฐ์ฑ)" : 20
"๋์ด๋ ์ ํฉ์ฑ (๋ ๋ฒจ)" : 20
"์๊ฐ์๋ฃ ํ์ง (์ด๋ฏธ์ง)" : 15
"์๊ฐ ์ ํฉ์ฑ (๋ถ๋)" : 10
"๊ธฐ์ ์ ์ ํ์ฑ (๊ฒ์ฆ)" : 10
| ์ฐจ์ | ๊ฐ์ค์น | ํ๊ฐ ๊ธฐ์ค | ์ธ๋ถ ํญ๋ชฉ |
|---|---|---|---|
| ๐ ๋ด์ฉ ์์ฑ๋ | 25% | ํ์ต ๋ชฉํ ๋ฌ์ฑ๋ | ์ฃผ์ ์ปค๋ฒ๋ฆฌ์ง, ๊น์ด, ์์ |
| ๐ ๋ ผ๋ฆฌ์ ํ๋ฆ | 20% | ์น์ ๊ฐ ์ฐ๊ฒฐ์ฑ | ๊ตฌ์กฐ, ์ ๊ฐ, ์์ง์ฑ |
| ๐ฏ ๋์ด๋ ์ ํฉ์ฑ | 20% | ์๊ฐ์ ๋ ๋ฒจ ์ผ์น | ์ฉ์ด, ๋ณต์ก๋, ์ฌ์ ์ง์ |
| ๐ผ๏ธ ์๊ฐ์๋ฃ ํ์ง | 15% | ์ด๋ฏธ์ง/๋ค์ด์ด๊ทธ๋จ ์ถฉ๋ถ์ฑ | ๊ด๋ จ์ฑ, ํ์ง, ๋ฐฐ์น |
| โฑ๏ธ ์๊ฐ ์ ํฉ์ฑ | 10% | ๊ฐ์ ์๊ฐ vs ๋ถ๋ | ๋จ์ด ์, ๋ฐ๋, ํ์ด์ฑ |
| โ ๊ธฐ์ ์ ์ ํ์ฑ | 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.3.1 (2026-02-13) - ๐ User-Friendly Directories
์ฌ์ฉ์ ์นํ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ:
- ๐ ํ๋ โ ์ผ๋ฐ ๋๋ ํ ๋ฆฌ:
~/.lecture-forge/โ~/Documents/LectureForge/- Finder/ํ์๊ธฐ์์ ๋ฐ๋ก ํ์ธ ๊ฐ๋ฅ
- ๋๋๊ทธ์ค๋๋กญ์ผ๋ก ํ์ผ ๊ด๋ฆฌ
- iCloud/OneDrive ๋๊ธฐํ ๊ฐ๋ฅ
- ๐ home ์ปค๋งจ๋ ์ถ๊ฐ: ๋น ๋ฅธ ํด๋ ์ ๊ทผ
lecture-forge home- ๋ฉ์ธ ํด๋ ์ด๊ธฐlecture-forge home outputs- ๊ฐ์ ๊ฒฐ๊ณผ๋ฌผlecture-forge home data- ๋ฐ์ดํฐ ํด๋lecture-forge home kb- ์ต์ ์ง์๋ฒ ์ด์คlecture-forge home env- .env ํธ์ง
- ๐ ์๋ ๋ง์ด๊ทธ๋ ์ด์ : ๊ธฐ์กด ๋ฐ์ดํฐ ์๋ ์ด๋ (ํ์ ํธํ)
์ํฅ:
- โ ์ผ๋ฐ ์ฌ์ฉ์ ์ ๊ทผ์ฑ ๋ํญ ํฅ์
- โ ๊ธฐ์กด ์ฌ์ฉ์ ํฌ๋ช ํ ๋ง์ด๊ทธ๋ ์ด์
- โ ํฌ๋ก์ค ํ๋ซํผ ์ง์ (macOS/Windows/Linux)
v0.3.0 (2026-02-12) - ๐ฏ Presentation Optimization
์ฌ๋ผ์ด๋ ์์ฑ ๋ํญ ๊ฐ์ :
- ๐ฏ ๋
ผ๋ฆฌ์ ๊ตฌ์ฑ: ํ๋ ์ ํ
์ด์
์ต์ ํ
- ์ฌ๋ผ์ด๋๋น ํญ๋ชฉ ์: 4โ3 (33% ๊ฐ์)
- ๊ธด ๋ฆฌ์คํธ ์๋ ๋ถํ (์ต๋ 5๊ฐ์ฉ)
- ์๋ธ์น์ โ ๋ ๋ฆฝ ์ ๋ชฉ ์ฌ๋ผ์ด๋
- ์์ ๋ชฉ โ ์ฌ๋ผ์ด๋ ํ์ดํ
- ์ฝ๋ ์ฌ๋ผ์ด๋ ์ ๋ชฉ ์๋ ์ถ๊ฐ
- ๐จ ์คํ์ผ ํฅ์: ์ ๋ฌธ์ ๋์์ธ
- ์ ๋ชฉ ํฌ๊ธฐ ๊ณ์ธตํ (2.5em/2em/1.6em)
- ์์ ๊ณ์ธตํ (์งํ/์ค๊ฐ/๋ฐ์ ํ์)
- ํ์ดํฌ๊ทธ๋ํผ ์ต์ ํ
- ์ฝ๋ ๋ธ๋ก ์ ์ฒด๊ฐ
- ๐ Mermaid ๋ค์ด์ด๊ทธ๋จ: ๋ฌธ์ ์๊ฐํ
- ๋ชจ๋ ํ ์คํธ ๋ค์ด์ด๊ทธ๋จ โ Mermaid
- ์์คํ ์ํคํ ์ฒ, ์์ธ ๊ณ์ธต, ํ์ง ํ๊ฐ ๋ฑ
์์ธ ์ฒ๋ฆฌ & ํ๋กฌํํธ ๊ด๋ฆฌ (v0.2.7 ํตํฉ):
- ๐ฏ ์์ธ ์ฒ๋ฆฌ ์์คํ : ๊ตฌ์กฐํ๋ ๊ณ์ธต (9๊ฐ ์นดํ ๊ณ ๋ฆฌ, 349์ค)
- ๐ ํ๋กฌํํธ ๊ด๋ฆฌ: ํ ํ๋ฆฟ ๊ธฐ๋ฐ ์์คํ (176์ค)
- โ๏ธ ์ฝํ ์ธ ์์ฑ: ์์ธํ ํ๋กฌํํธ ๊ฐ์ด๋๋ผ์ธ
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.1-0.2.5 (2026-02-10~12) - ๋ฒ๊ทธ ์์ ๋ฐ ํ์ง ๊ฐ์
์ฃผ์ ๊ฐ์ :
- ๐ Visual score, ํ์ง ํ๊ฐ, ์ฌ๋ผ์ด๋ ์์ฑ ๋ฒ๊ทธ ์์
- ๐จ ์ด๋ฏธ์ง ํ์ง ํฅ์ (Full HD, ๊ณ ํ์ง WebP)
- ๐ ๋ฌธ์ ์ ๋ฐ์ดํธ ๋ฐ ์ผ๊ด์ฑ ๊ฐ์
- โ๏ธ Config ์ต์ ํ
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.3.2.tar.gz.
File metadata
- Download URL: lecture_forge-0.3.2.tar.gz
- Upload date:
- Size: 221.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1692d76d475eab0345b707ad6712a7481a71eacd8bd5863f4cbc5f1da0bf1592
|
|
| MD5 |
7edd70a13cd44732c9cfda537ceb11fd
|
|
| BLAKE2b-256 |
ab5a62bbf4017f10be0b057939ed79c1b96d06f339498d34553262ddc3495a18
|
File details
Details for the file lecture_forge-0.3.2-py3-none-any.whl.
File metadata
- Download URL: lecture_forge-0.3.2-py3-none-any.whl
- Upload date:
- Size: 193.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
001b9d7a3ce6fee6965044e394a71bc74c01fbf1e57dae6ab6098af284e85af2
|
|
| MD5 |
0edec9677767d11a1a13578ca8c4d8a9
|
|
| BLAKE2b-256 |
ed500cfb9fec1fa79ff9aee48b90dfcef383e1fb1cd4c61a4d74047532de8a66
|