Skip to content

jhpark-coder/devmate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DevMate πŸ€–

개발자의 곡식 λ¬Έμ„œ λ©”μ΄νŠΈ - μ˜μ–΄ λ¬Έμ„œλ₯Ό ν•œκ΅­μ–΄λ‘œ, λ³΅μž‘ν•œ κ°œλ…μ„ μ‰½κ²Œ

Python License Status


πŸ“‹ ν”„λ‘œμ νŠΈ κ°œμš”

DevMateλŠ” κ°œλ°œμžκ°€ 기술 곡식 λ¬Έμ„œλ₯Ό λΉ λ₯΄κ³  μ‰½κ²Œ 이해할 수 μžˆλ„λ‘ λ•λŠ” RAG 기반 AI μ±—λ΄‡μž…λ‹ˆλ‹€.

ν•΄κ²°ν•˜λŠ” 문제

  • ❌ μ˜μ–΄ μž₯λ²½: 곡식 λ¬Έμ„œ λŒ€λΆ€λΆ„μ΄ μ˜μ–΄λ‘œ μž‘μ„±λ¨
  • ❌ 정보 κ³ΌλΆ€ν•˜: λ°©λŒ€ν•œ λ¬Έμ„œμ—μ„œ ν•„μš”ν•œ 정보 μ°ΎκΈ° 어렀움
  • ❌ λ§₯락 λΆ€μž¬: κΈ°μ‘΄ 검색은 λ‹¨νŽΈμ  결과만 제곡
  • ❌ μ‹€μ „ 예제 λΆ€μ‘±: 이둠은 μžˆμ§€λ§Œ μ½”λ“œ μ˜ˆμ‹œ λΆ€μ‘±

우리의 μ†”λ£¨μ…˜

  • βœ… λŒ€ν™”ν˜• 검색: λ§₯락을 μ΄ν•΄ν•˜κ³  단계별 μ„€λͺ… 제곡
  • βœ… ν•œμ˜ 병행: ν•œκ΅­μ–΄ λ‹΅λ³€ + 영문 원문 병행 ν‘œμ‹œ
  • βœ… μ½”λ“œ 쀑심: μ‹€ν–‰ κ°€λŠ₯ν•œ 예제 μš°μ„  제곡
  • βœ… 좜처 λͺ…ν™•: Hallucination λ°©μ§€λ₯Ό μœ„ν•œ 좜처 ν‘œμ‹œ

🎯 μ£Όμš” κΈ°λŠ₯

Phase 1 (MVP) βœ…

  • PDF λ¬Έμ„œ μ—…λ‘œλ“œ & μžλ™ 인덱싱
  • μžμ—°μ–΄ μ§ˆμ˜μ‘λ‹΅
  • 좜처 ν‘œμ‹œ (top-3 κ΄€λ ¨ λ¬Έμ„œ)
  • FAISS 벑터 검색

Phase 2 (μ‚¬μš©μ„±) πŸ”„

  • λŒ€ν™” νžˆμŠ€ν† λ¦¬ μ €μž₯ & λ§₯락 μœ μ§€
  • Streamlit μ›Ή μΈν„°νŽ˜μ΄μŠ€
  • μ—¬λŸ¬ λ¬Έμ„œ λ™μ‹œ 검색
  • SQLite 기반 데이터 관리

Phase 3 (차별화) 🎯

  • ν•œμ˜ 병행 λ‹΅λ³€ λͺ¨λ“œ
  • μ½”λ“œ 블둝 Syntax Highlighting
  • ν”„λ‘¬ν”„νŠΈ μ΅œμ ν™” (λ‹΅λ³€ ν’ˆμ§ˆ κ°œμ„ )
  • λΉ„μš©/μ„±λŠ₯ λͺ¨λ‹ˆν„°λ§

Phase 4 (배포) πŸš€

  • Streamlit Cloud 배포
  • μ™„μ „ν•œ λ¬Έμ„œν™”
  • 데λͺ¨ μ‹œλ‚˜λ¦¬μ˜€

πŸ—οΈ 기술 μŠ€νƒ

Core

  • LLM: OpenAI GPT-3.5-turbo
  • Framework: LangChain
  • Vector DB: FAISS (페이슀뢁)
  • Embeddings: OpenAI text-embedding-ada-002

Backend

  • API: FastAPI
  • DB: SQLite (aiosqlite)
  • ORM: SQLAlchemy 2.0 (async)

Frontend

  • UI: Streamlit
  • Syntax Highlighting: Pygments

DevOps

  • Version Control: Git
  • Deployment: Streamlit Cloud
  • Monitoring: Custom logging + metrics

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

devmate/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ domain/              # 도메인 λͺ¨λΈ (μ—”ν‹°ν‹°)
β”‚   β”œβ”€β”€ application/         # λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 (μœ μŠ€μΌ€μ΄μŠ€)
β”‚   β”œβ”€β”€ infrastructure/      # μ™ΈλΆ€ 연동 (DB, LLM, 벑터 μŠ€ν† μ–΄)
β”‚   β”œβ”€β”€ api/                 # REST API (FastAPI)
β”‚   └── ui/                  # μ›Ή UI (Streamlit)
β”‚
β”œβ”€β”€ tests/
β”‚   β”œβ”€β”€ unit/                # λ‹¨μœ„ ν…ŒμŠ€νŠΈ
β”‚   β”œβ”€β”€ integration/         # 톡합 ν…ŒμŠ€νŠΈ
β”‚   └── e2e/                 # E2E ν…ŒμŠ€νŠΈ
β”‚
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ documents/           # μ—…λ‘œλ“œλœ λ¬Έμ„œ
β”‚   β”œβ”€β”€ vector_store/        # FAISS 인덱슀
β”‚   └── database/            # SQLite DB
β”‚
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ DESIGN.md            # 섀계 λ¬Έμ„œ
β”‚   β”œβ”€β”€ ARCHITECTURE.md      # μ•„ν‚€ν…μ²˜ λ¬Έμ„œ
β”‚   └── IMPLEMENTATION.md    # κ΅¬ν˜„ κ°€μ΄λ“œ
β”‚
β”œβ”€β”€ .env.example             # ν™˜κ²½ λ³€μˆ˜ ν…œν”Œλ¦Ώ
β”œβ”€β”€ requirements.txt         # μ˜μ‘΄μ„±
└── README.md                # ν”„λ‘œμ νŠΈ μ†Œκ°œ (이 파일)

μžμ„Έν•œ μ•„ν‚€ν…μ²˜λŠ” ARCHITECTURE.md μ°Έκ³ 


πŸš€ λΉ λ₯Έ μ‹œμž‘

1. 사전 μ€€λΉ„

2. μ„€μΉ˜

# 1. λ ˆν¬μ§€ν† λ¦¬ 클둠
git clone https://github.com/your-username/devmate.git
cd devmate

# 2. κ°€μƒν™˜κ²½ 생성 & ν™œμ„±ν™”
python -m venv venv
# Windows:
venv\Scripts\activate
# Mac/Linux:
source venv/bin/activate

# 3. μ˜μ‘΄μ„± μ„€μΉ˜
pip install -r requirements.txt

# 4. ν™˜κ²½ λ³€μˆ˜ μ„€μ •
cp .env.example .env
# .env 파일 νŽΈμ§‘: OPENAI_API_KEY=your-key-here

# 5. DB μ΄ˆκΈ°ν™”
python scripts/init_db.py

3. μ‹€ν–‰

# 방법 1: Streamlit UI (ꢌμž₯)
streamlit run app/streamlit_app.py

# 방법 2: FastAPI μ„œλ²„
uvicorn app.main:app --reload
# API λ¬Έμ„œ: http://localhost:8000/docs

4. μ‚¬μš© 방법

  1. λΈŒλΌμš°μ €μ—μ„œ http://localhost:8501 접속
  2. PDF λ¬Έμ„œ μ—…λ‘œλ“œ (예: FastAPI 곡식 λ¬Έμ„œ)
  3. 인덱싱 μ™„λ£Œ λŒ€κΈ° (μ•½ 30초)
  4. 질문 μž…λ ₯: "FastAPIμ—μ„œ JWT 인증 μ–΄λ–»κ²Œ ν•΄?"
  5. λ‹΅λ³€ + 좜처 확인

πŸ“Š μ„±λŠ₯ μ§€ν‘œ

λͺ©ν‘œ

  • 응닡 μ‹œκ°„: < 3초 (95th percentile)
  • 정확도: μ‚¬μš©μž λ§Œμ‘±λ„ 80%+ (5점 척도 4점 이상)
  • λΉ„μš©: μ§ˆλ¬Έλ‹Ή < $0.01

ν˜„μž¬ (Phase 1)

  • 평균 응닡 μ‹œκ°„: ~2.5초
  • 토큰 λΉ„μš©: μ§ˆλ¬Έλ‹Ή 평균 $0.002
  • 인덱싱 속도: 10νŽ˜μ΄μ§€ PDF β†’ 30초

πŸ§ͺ ν…ŒμŠ€νŠΈ

# 전체 ν…ŒμŠ€νŠΈ
pytest

# 컀버리지 포함
pytest --cov=app --cov-report=html

# νŠΉμ • ν…ŒμŠ€νŠΈλ§Œ
pytest tests/unit/test_models.py -v

# E2E ν…ŒμŠ€νŠΈ
pytest tests/e2e/ -v -s

πŸ“– λ¬Έμ„œ


πŸ—ΊοΈ λ‘œλ“œλ§΅

Phase 1 (μ™„λ£Œ)

  • βœ… κΈ°λ³Έ RAG νŒŒμ΄ν”„λΌμΈ
  • βœ… 단일 λ¬Έμ„œ 검색
  • βœ… 좜처 ν‘œμ‹œ

Phase 2 (μ§„ν–‰ 쀑)

  • πŸ”„ λŒ€ν™” λ§₯락 μœ μ§€
  • πŸ”„ Streamlit UI
  • πŸ”„ λ©€ν‹° λ¬Έμ„œ 검색

Phase 3 (μ˜ˆμ •)

  • ν•œμ˜ 병행 λ‹΅λ³€
  • μ½”λ“œ ν•˜μ΄λΌμ΄νŒ…
  • μ„±λŠ₯ μ΅œμ ν™”

ν–₯ν›„ κ³„νš

  • λ‹€κ΅­μ–΄ 지원 (일본어, 쀑ꡭ어)
  • μŒμ„± μž…λ ₯/좜λ ₯
  • 이미지 포함 PDF 처리
  • Pinecone 톡합 (ν΄λΌμš°λ“œ 벑터 DB)
  • μ‚¬μš©μž 인증/κΆŒν•œ 관리

🀝 κΈ°μ—¬

이슈 제보, κΈ°λŠ₯ μ œμ•ˆ, PR ν™˜μ˜ν•©λ‹ˆλ‹€!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ λΌμ΄μ„ μŠ€

MIT License - 자유둭게 μ‚¬μš©ν•˜μ„Έμš”!


πŸ‘€ μž‘μ„±μž

λ‹Ήμ‹ μ˜ 이름


πŸ™ κ°μ‚¬μ˜ 말

  • LangChain - LLM μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ ˆμž„μ›Œν¬
  • FastAPI - ν˜„λŒ€μ μΈ Python μ›Ή ν”„λ ˆμž„μ›Œν¬
  • Streamlit - λΉ λ₯Έ 데이터 μ•± ꡬ좕
  • FAISS - 벑터 μœ μ‚¬λ„ 검색

πŸ“ž 문의

μ§ˆλ¬Έμ΄λ‚˜ μ œμ•ˆμ΄ μžˆμœΌμ‹œλ©΄ 이슈λ₯Ό μƒμ„±ν•΄μ£Όμ„Έμš”!


⭐ 이 ν”„λ‘œμ νŠΈκ°€ 도움이 λ˜μ…¨λ‹€λ©΄ Starλ₯Ό λˆŒλŸ¬μ£Όμ„Έμš”!

About

DevMate - AI-powered documentation assistant for developers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages