deepwiki-open / README.kr.md
bhavinmatariya's picture
Initial complete codebase with Git LFS for binary files
8e0dd55
# DeepWiki-Open
![DeepWiki Banner](screenshots/Deepwiki.png)
**DeepWiki**๋Š” ์ œ๊ฐ€ ์ง์ ‘ ๊ตฌํ˜„ํ•œ ํ”„๋กœ์ ํŠธ๋กœ, GitHub, GitLab ๋˜๋Š” BitBucket ์ €์žฅ์†Œ์— ๋Œ€ํ•ด ์•„๋ฆ„๋‹ต๊ณ  ๋Œ€ํ™”ํ˜• ์œ„ํ‚ค๋ฅผ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค! ์ €์žฅ์†Œ ์ด๋ฆ„๋งŒ ์ž…๋ ฅํ•˜๋ฉด DeepWiki๊ฐ€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:
1. ์ฝ”๋“œ ๊ตฌ์กฐ ๋ถ„์„
2. ํฌ๊ด„์ ์ธ ๋ฌธ์„œ ์ƒ์„ฑ
3. ๋ชจ๋“  ์ž‘๋™ ๋ฐฉ์‹์„ ์„ค๋ช…ํ•˜๋Š” ์‹œ๊ฐ์  ๋‹ค์ด์–ด๊ทธ๋žจ ์ƒ์„ฑ
4. ์ด๋ฅผ ์‰ฝ๊ฒŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„ํ‚ค๋กœ ์ •๋ฆฌ
[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://buymeacoffee.com/sheing)
[![Twitter/X](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://x.com/sashimikun_void)
[![Discord](https://img.shields.io/badge/Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.com/invite/VQMBGR8u5v)
[English](./README.md) | [็ฎ€ไฝ“ไธญๆ–‡](./README.zh.md) | [็น้ซ”ไธญๆ–‡](./README.zh-tw.md) | [ๆ—ฅๆœฌ่ชž](./README.ja.md) | [Espaรฑol](./README.es.md) | [ํ•œ๊ตญ์–ด](./README.kr.md) | [Tiแบฟng Viแป‡t](./README.vi.md) | [Portuguรชs Brasileiro](./README.pt-br.md) | [Franรงais](./README.fr.md) | [ะ ัƒััะบะธะน](./README.ru.md)
## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ
- **์ฆ‰์‹œ ๋ฌธ์„œํ™”**: ์–ด๋–ค GitHub, GitLab ๋˜๋Š” BitBucket ์ €์žฅ์†Œ๋“  ๋ช‡ ์ดˆ ๋งŒ์— ์œ„ํ‚ค๋กœ ๋ณ€ํ™˜
- **๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ ์ง€์›**: ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผ
- **์Šค๋งˆํŠธ ๋ถ„์„**: AI ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ๊ตฌ์กฐ ๋ฐ ๊ด€๊ณ„ ์ดํ•ด
- **์•„๋ฆ„๋‹ค์šด ๋‹ค์ด์–ด๊ทธ๋žจ**: ์•„ํ‚คํ…์ฒ˜์™€ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์‹œ๊ฐํ™”ํ•˜๋Š” ์ž๋™ Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ
- **์‰ฌ์šด ํƒ์ƒ‰**: ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์œ„ํ‚ค ํƒ์ƒ‰ ๊ฐ€๋Šฅ
- **Ask ๊ธฐ๋Šฅ**: RAG ๊ธฐ๋ฐ˜ AI์™€ ์ €์žฅ์†Œ์— ๋Œ€ํ•ด ๋Œ€ํ™”ํ•˜๋ฉฐ ์ •ํ™•ํ•œ ๋‹ต๋ณ€ ์–ป๊ธฐ
- **DeepResearch**: ๋ณต์žกํ•œ ์ฃผ์ œ๋ฅผ ์ฒ ์ €ํžˆ ์กฐ์‚ฌํ•˜๋Š” ๋‹ค์ค‘ ํ„ด ์—ฐ๊ตฌ ํ”„๋กœ์„ธ์Šค
- **๋‹ค์–‘ํ•œ ๋ชจ๋ธ ์ œ๊ณต์ž ์ง€์›**: Google Gemini, OpenAI, OpenRouter, ๋กœ์ปฌ Ollama ๋ชจ๋ธ ์ง€์›
## ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘ (์ดˆ๊ฐ„๋‹จ!)
### ์˜ต์…˜ 1: Docker ์‚ฌ์šฉ
```bash
# ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/AsyncFuncAI/deepwiki-open.git
cd deepwiki-open
# API ํ‚ค๋ฅผ ํฌํ•จํ•œ .env ํŒŒ์ผ ์ƒ์„ฑ
echo "GOOGLE_API_KEY=your_google_api_key" > .env
echo "OPENAI_API_KEY=your_openai_api_key" >> .env
# ์„ ํƒ ์‚ฌํ•ญ: OpenRouter ๋ชจ๋ธ ์‚ฌ์šฉ ์‹œ API ํ‚ค ์ถ”๊ฐ€
echo "OPENROUTER_API_KEY=your_openrouter_api_key" >> .env
# Docker Compose๋กœ ์‹คํ–‰
docker-compose up
```
> ๐Ÿ’ก **API ํ‚ค๋Š” ์–ด๋””์„œ ์–ป๋‚˜์š”:**
> - [Google AI Studio](https://makersuite.google.com/app/apikey)์—์„œ Google API ํ‚ค ๋ฐ›๊ธฐ
> - [OpenAI ํ”Œ๋žซํผ](https://platform.openai.com/api-keys)์—์„œ OpenAI API ํ‚ค ๋ฐ›๊ธฐ
### ์˜ต์…˜ 2: ์ˆ˜๋™ ์„ค์ • (๊ถŒ์žฅ)
#### 1๋‹จ๊ณ„: API ํ‚ค ์„ค์ •
ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— `.env` ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋‹ค์Œ ํ‚ค๋“ค์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”:
```
GOOGLE_API_KEY=your_google_api_key
OPENAI_API_KEY=your_openai_api_key
# ์„ ํƒ ์‚ฌํ•ญ: OpenRouter ๋ชจ๋ธ ์‚ฌ์šฉ ์‹œ ์ถ”๊ฐ€
OPENROUTER_API_KEY=your_openrouter_api_key
```
#### 2๋‹จ๊ณ„: ๋ฐฑ์—”๋“œ ์‹œ์ž‘
```bash
# Python ์˜์กด์„ฑ ์„ค์น˜
pip install -r api/requirements.txt
# API ์„œ๋ฒ„ ์‹คํ–‰
python -m api.main
```
#### 3๋‹จ๊ณ„: ํ”„๋ก ํŠธ์—”๋“œ ์‹œ์ž‘
```bash
# JavaScript ์˜์กด์„ฑ ์„ค์น˜
npm install
# ๋˜๋Š”
yarn install
# ์›น ์•ฑ ์‹คํ–‰
npm run dev
# ๋˜๋Š”
yarn dev
```
#### 4๋‹จ๊ณ„: DeepWiki ์‚ฌ์šฉํ•˜๊ธฐ!
1. ๋ธŒ๋ผ์šฐ์ €์—์„œ [http://localhost:3000](http://localhost:3000) ์—ด๊ธฐ
2. GitHub, GitLab ๋˜๋Š” Bitbucket ์ €์žฅ์†Œ ์ž…๋ ฅ (์˜ˆ: `https://github.com/openai/codex`, `https://github.com/microsoft/autogen`, `https://gitlab.com/gitlab-org/gitlab`, `https://bitbucket.org/redradish/atlassian_app_versions`)
3. ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ์ธ ๊ฒฝ์šฐ "+ ์•ก์„ธ์Šค ํ† ํฐ ์ถ”๊ฐ€" ํด๋ฆญ ํ›„ GitHub ๋˜๋Š” GitLab ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ ์ž…๋ ฅ
4. "Generate Wiki" ํด๋ฆญ ํ›„ ๋งˆ๋ฒ•์„ ์ง€์ผœ๋ณด๊ธฐ!
## ๐Ÿ” ์ž‘๋™ ๋ฐฉ์‹
DeepWiki๋Š” AI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:
1. GitHub, GitLab ๋˜๋Š” Bitbucket ์ €์žฅ์†Œ ๋ณต์ œ ๋ฐ ๋ถ„์„ (ํ† ํฐ ์ธ์ฆ์ด ํ•„์š”ํ•œ ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ ํฌํ•จ)
2. ์Šค๋งˆํŠธ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์ฝ”๋“œ ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ
3. ๋ฌธ๋งฅ ์ธ์ง€ AI๋กœ ๋ฌธ์„œ ์ƒ์„ฑ (Google Gemini, OpenAI, OpenRouter ๋˜๋Š” ๋กœ์ปฌ Ollama ๋ชจ๋ธ ์‚ฌ์šฉ)
4. ์ฝ”๋“œ ๊ด€๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์‹œ๊ฐ์  ๋‹ค์ด์–ด๊ทธ๋žจ ์ƒ์„ฑ
5. ๋ชจ๋“  ๊ฒƒ์„ ๊ตฌ์กฐํ™”๋œ ์œ„ํ‚ค๋กœ ์ •๋ฆฌ
6. Ask ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์ €์žฅ์†Œ์™€์˜ ์ง€๋Šฅํ˜• Q&A ์ง€์›
7. DeepResearch๋กœ ์‹ฌ์ธต ์—ฐ๊ตฌ ๊ธฐ๋Šฅ ์ œ๊ณต
```mermaid
graph TD
A[์‚ฌ์šฉ์ž๊ฐ€ GitHub/GitLab/Bitbucket ์ €์žฅ์†Œ ์ž…๋ ฅ] --> AA{๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ์ธ๊ฐ€?}
AA -->|์˜ˆ| AB[์•ก์„ธ์Šค ํ† ํฐ ์ถ”๊ฐ€]
AA -->|์•„๋‹ˆ์˜ค| B[์ €์žฅ์†Œ ๋ณต์ œ]
AB --> B
B --> C[์ฝ”๋“œ ๊ตฌ์กฐ ๋ถ„์„]
C --> D[์ฝ”๋“œ ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ]
D --> M{๋ชจ๋ธ ์ œ๊ณต์ž ์„ ํƒ}
M -->|Google Gemini| E1[Gemini๋กœ ์ƒ์„ฑ]
M -->|OpenAI| E2[OpenAI๋กœ ์ƒ์„ฑ]
M -->|OpenRouter| E3[OpenRouter๋กœ ์ƒ์„ฑ]
M -->|๋กœ์ปฌ Ollama| E4[Ollama๋กœ ์ƒ์„ฑ]
E1 --> E[๋ฌธ์„œ ์ƒ์„ฑ]
E2 --> E
E3 --> E
E4 --> E
D --> F[์‹œ๊ฐ์  ๋‹ค์ด์–ด๊ทธ๋žจ ์ƒ์„ฑ]
E --> G[์œ„ํ‚ค๋กœ ์ •๋ฆฌ]
F --> G
G --> H[๋Œ€ํ™”ํ˜• DeepWiki]
classDef process stroke-width:2px;
classDef data stroke-width:2px;
classDef result stroke-width:2px;
classDef decision stroke-width:2px;
class A,D data;
class AA,M decision;
class B,C,E,F,G,AB,E1,E2,E3,E4 process;
class H result;
```
## ๐Ÿ› ๏ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ
```
deepwiki/
โ”œโ”€โ”€ api/ # ๋ฐฑ์—”๋“œ API ์„œ๋ฒ„
โ”‚ โ”œโ”€โ”€ main.py # API ์ง„์ž…์ 
โ”‚ โ”œโ”€โ”€ api.py # FastAPI ๊ตฌํ˜„
โ”‚ โ”œโ”€โ”€ rag.py # Retrieval Augmented Generation
โ”‚ โ”œโ”€โ”€ data_pipeline.py # ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚ โ””โ”€โ”€ requirements.txt # Python ์˜์กด์„ฑ
โ”‚
โ”œโ”€โ”€ src/ # ํ”„๋ก ํŠธ์—”๋“œ Next.js ์•ฑ
โ”‚ โ”œโ”€โ”€ app/ # Next.js ์•ฑ ๋””๋ ‰ํ† ๋ฆฌ
โ”‚ โ”‚ โ””โ”€โ”€ page.tsx # ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŽ˜์ด์ง€
โ”‚ โ””โ”€โ”€ components/ # React ์ปดํฌ๋„ŒํŠธ
โ”‚ โ””โ”€โ”€ Mermaid.tsx # Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ ๋ Œ๋”๋Ÿฌ
โ”‚
โ”œโ”€โ”€ public/ # ์ •์  ์ž์‚ฐ
โ”œโ”€โ”€ package.json # JavaScript ์˜์กด์„ฑ
โ””โ”€โ”€ .env # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (์ง์ ‘ ์ƒ์„ฑ)
```
## ๐Ÿ› ๏ธ ๊ณ ๊ธ‰ ์„ค์ •
### ํ™˜๊ฒฝ ๋ณ€์ˆ˜
| ๋ณ€์ˆ˜๋ช… | ์„ค๋ช… | ํ•„์ˆ˜ | ๋น„๊ณ  |
|----------|-------------|----------|------|
| `GOOGLE_API_KEY` | AI ์ƒ์„ฑ์šฉ Google Gemini API ํ‚ค | ์˜ˆ |
| `OPENAI_API_KEY` | ์ž„๋ฒ ๋”ฉ์šฉ OpenAI API ํ‚ค | ์˜ˆ |
| `OPENROUTER_API_KEY` | ๋Œ€์ฒด ๋ชจ๋ธ์šฉ OpenRouter API ํ‚ค | ์•„๋‹ˆ์˜ค | OpenRouter ๋ชจ๋ธ ์‚ฌ์šฉ ์‹œ ํ•„์š” |
| `PORT` | API ์„œ๋ฒ„ ํฌํŠธ (๊ธฐ๋ณธ๊ฐ’: 8001) | ์•„๋‹ˆ์˜ค | API์™€ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๊ฐ™์€ ๋จธ์‹ ์—์„œ ํ˜ธ์ŠคํŒ… ์‹œ `SERVER_BASE_URL`์˜ ํฌํŠธ๋„ ๋ณ€๊ฒฝ ํ•„์š” |
| `SERVER_BASE_URL` | API ์„œ๋ฒ„ ๊ธฐ๋ณธ URL (๊ธฐ๋ณธ๊ฐ’: http://localhost:8001) | ์•„๋‹ˆ์˜ค |
### ์„ค์ • ํŒŒ์ผ
DeepWiki๋Š” ์‹œ์Šคํ…œ์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด JSON ์„ค์ • ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:
1. **`generator.json`**: ํ…์ŠคํŠธ ์ƒ์„ฑ ๋ชจ๋ธ ์„ค์ •
- ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ์ œ๊ณต์ž(Google, OpenAI, OpenRouter, Ollama) ์ •์˜
- ๊ฐ ์ œ๊ณต์ž์˜ ๊ธฐ๋ณธ ๋ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ์ง€์ •
- temperature์™€ top_p ๊ฐ™์€ ๋ชจ๋ธ๋ณ„ ๋งค๊ฐœ๋ณ€์ˆ˜ ํฌํ•จ
2. **`embedder.json`**: ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ๋ฐ ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ์„ค์ •
- ๋ฒกํ„ฐ ์ €์žฅ์†Œ์šฉ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ์ •์˜
- RAG๋ฅผ ์œ„ํ•œ ๊ฒ€์ƒ‰๊ธฐ ์„ค์ • ํฌํ•จ
- ๋ฌธ์„œ ์ฒญํ‚น์„ ์œ„ํ•œ ํ…์ŠคํŠธ ๋ถ„ํ• ๊ธฐ ์„ค์ • ์ง€์ •
3. **`repo.json`**: ์ €์žฅ์†Œ ์ฒ˜๋ฆฌ ์„ค์ •
- ํŠน์ • ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ์™ธํ•˜๋Š” ํŒŒ์ผ ํ•„ํ„ฐ ํฌํ•จ
- ์ €์žฅ์†Œ ํฌ๊ธฐ ์ œํ•œ ๋ฐ ์ฒ˜๋ฆฌ ๊ทœ์น™ ์ •์˜
๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์€ `api/config/` ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. `DEEPWIKI_CONFIG_DIR` ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์น˜๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
### Docker ์„ค์ •
Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DeepWiki๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
```bash
# GitHub ์ปจํ…Œ์ด๋„ˆ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ
docker pull ghcr.io/asyncfuncai/deepwiki-open:latest
# ํ™˜๊ฒฝ ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
docker run -p 8001:8001 -p 3000:3000 \
-e GOOGLE_API_KEY=your_google_api_key \
-e OPENAI_API_KEY=your_openai_api_key \
-e OPENROUTER_API_KEY=your_openrouter_api_key \
-v ~/.adalflow:/root/.adalflow \
ghcr.io/asyncfuncai/deepwiki-open:latest
```
์ด ๋ช…๋ น์–ด๋Š” ๋˜ํ•œ ํ˜ธ์ŠคํŠธ์˜ `~/.adalflow`๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ `/root/.adalflow`์— ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:
- ๋ณต์ œ๋œ ์ €์žฅ์†Œ (`~/.adalflow/repos/`)
- ํ•ด๋‹น ์ €์žฅ์†Œ์˜ ์ž„๋ฒ ๋”ฉ ๋ฐ ์ธ๋ฑ์Šค (`~/.adalflow/databases/`)
- ์ƒ์„ฑ๋œ ์œ„ํ‚ค์˜ ์บ์‹œ (`~/.adalflow/wikicache/`)
์ด๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ค‘์ง€๋˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋˜์–ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
๋˜๋Š” ์ œ๊ณต๋œ `docker-compose.yml` ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์„ธ์š”:
```bash
# API ํ‚ค๊ฐ€ ํฌํ•จ๋œ .env ํŒŒ์ผ์„ ๋จผ์ € ํŽธ์ง‘
docker-compose up
```
(`docker-compose.yml` ํŒŒ์ผ์€ ์œ„์˜ `docker run` ๋ช…๋ น์–ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ์ง€์†์„ฑ์„ ์œ„ํ•ด `~/.adalflow`๋ฅผ ๋งˆ์šดํŠธํ•˜๋„๋ก ๋ฏธ๋ฆฌ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.)
#### Docker์—์„œ .env ํŒŒ์ผ ์‚ฌ์šฉํ•˜๊ธฐ
.env ํŒŒ์ผ์„ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:
```bash
# API ํ‚ค๊ฐ€ ํฌํ•จ๋œ .env ํŒŒ์ผ ์ƒ์„ฑ
echo "GOOGLE_API_KEY=your_google_api_key" > .env
echo "OPENAI_API_KEY=your_openai_api_key" >> .env
echo "OPENROUTER_API_KEY=your_openrouter_api_key" >> .env
# .env ํŒŒ์ผ์„ ๋งˆ์šดํŠธํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
docker run -p 8001:8001 -p 3000:3000 \
-v $(pwd)/.env:/app/.env \
-v ~/.adalflow:/root/.adalflow \
ghcr.io/asyncfuncai/deepwiki-open:latest
```
์ด ๋ช…๋ น์–ด๋Š” ๋˜ํ•œ ํ˜ธ์ŠคํŠธ์˜ `~/.adalflow`๋ฅผ ์ปจํ…Œ์ด๋„ˆ์˜ `/root/.adalflow`์— ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:
- ๋ณต์ œ๋œ ์ €์žฅ์†Œ (`~/.adalflow/repos/`)
- ํ•ด๋‹น ์ €์žฅ์†Œ์˜ ์ž„๋ฒ ๋”ฉ ๋ฐ ์ธ๋ฑ์Šค (`~/.adalflow/databases/`)
- ์ƒ์„ฑ๋œ ์œ„ํ‚ค์˜ ์บ์‹œ (`~/.adalflow/wikicache/`)
์ด๋ฅผ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ค‘์ง€๋˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋˜์–ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
#### ๋กœ์ปฌ์—์„œ Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œํ•˜๊ธฐ
๋กœ์ปฌ์—์„œ Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด:
```bash
# ์ €์žฅ์†Œ ํด๋ก 
git clone https://github.com/AsyncFuncAI/deepwiki-open.git
cd deepwiki-open
# Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ
docker build -t deepwiki-open .
# ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
docker run -p 8001:8001 -p 3000:3000 \
-e GOOGLE_API_KEY=your_google_api_key \
-e OPENAI_API_KEY=your_openai_api_key \
-e OPENROUTER_API_KEY=your_openrouter_api_key \
deepwiki-open
```
### API ์„œ๋ฒ„ ์ƒ์„ธ ์ •๋ณด
API ์„œ๋ฒ„๋Š” ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:
- ์ €์žฅ์†Œ ๋ณต์ œ ๋ฐ ์ธ๋ฑ์‹ฑ
- RAG (Retrieval Augmented Generation)
- ์ŠคํŠธ๋ฆฌ๋ฐ ์ฑ„ํŒ… ์™„์„ฑ
์ž์„ธํ•œ ๋‚ด์šฉ์€ [API README](./api/README.md)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
## ๐Ÿค– ์ œ๊ณต์ž ๊ธฐ๋ฐ˜ ๋ชจ๋ธ ์„ ํƒ ์‹œ์Šคํ…œ
DeepWiki๋Š” ์ด์ œ ์—ฌ๋Ÿฌ LLM ์ œ๊ณต์ž๋ฅผ ์ง€์›ํ•˜๋Š” ์œ ์—ฐํ•œ ์ œ๊ณต์ž ๊ธฐ๋ฐ˜ ๋ชจ๋ธ ์„ ํƒ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค:
### ์ง€์›๋˜๋Š” ์ œ๊ณต์ž ๋ฐ ๋ชจ๋ธ
- **Google**: ๊ธฐ๋ณธ๊ฐ’ `gemini-2.5-flash`, ๋˜ํ•œ `gemini-2.5-flash-lite`, `gemini-2.5-pro` ๋“ฑ๋„ ์ง€์›
- **OpenAI**: ๊ธฐ๋ณธ๊ฐ’ `gpt-5-nano`, ๋˜ํ•œ `gpt-5`, `4o` ๋“ฑ๋„ ์ง€์›
- **OpenRouter**: Claude, Llama, Mistral ๋“ฑ ํ†ตํ•ฉ API๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ์ ‘๊ทผ ๊ฐ€๋Šฅ
- **Ollama**: `llama3`์™€ ๊ฐ™์€ ๋กœ์ปฌ์—์„œ ์‹คํ–‰๋˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ชจ๋ธ ์ง€์›
### ํ™˜๊ฒฝ ๋ณ€์ˆ˜
๊ฐ ์ œ๊ณต์ž๋Š” ํ•ด๋‹น API ํ‚ค ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:
```
# API ํ‚ค
GOOGLE_API_KEY=๊ท€ํ•˜์˜_๊ตฌ๊ธ€_API_ํ‚ค # Google Gemini ๋ชจ๋ธ์— ํ•„์š”
OPENAI_API_KEY=๊ท€ํ•˜์˜_OpenAI_ํ‚ค # OpenAI ๋ชจ๋ธ์— ํ•„์š”
OPENROUTER_API_KEY=๊ท€ํ•˜์˜_OpenRouter_ํ‚ค # OpenRouter ๋ชจ๋ธ์— ํ•„์š”
# OpenAI API ๊ธฐ๋ณธ URL ๊ตฌ์„ฑ
OPENAI_BASE_URL=https://์‚ฌ์šฉ์ž์ •์˜_API_์—”๋“œํฌ์ธํŠธ.com/v1 # ์„ ํƒ ์‚ฌํ•ญ, ์‚ฌ์šฉ์ž ์ •์˜ OpenAI API ์—”๋“œํฌ์ธํŠธ์šฉ
```
### ์„œ๋น„์Šค ์ œ๊ณต์ž๋ฅผ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ชจ๋ธ ์„ ํƒ
์‚ฌ์šฉ์ž ์ •์˜ ๋ชจ๋ธ ์„ ํƒ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค ์ œ๊ณต์ž๋ฅผ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค:
- ๊ท€ํ•˜๋Š” ์กฐ์ง ๋‚ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์–‘ํ•œ AI ๋ชจ๋ธ ์„ ํƒ ์˜ต์…˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
- ๊ท€ํ•˜๋Š” ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ๋น ๋ฅด๊ฒŒ ์ง„ํ™”ํ•˜๋Š” LLM ํ™˜๊ฒฝ์— ์‹ ์†ํ•˜๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
- ๊ท€ํ•˜๋Š” ์‚ฌ์ „ ์ •์˜๋œ ๋ชฉ๋ก์— ์—†๋Š” ํŠน์ˆ˜ํ•˜๊ฑฐ๋‚˜ ๋ฏธ์„ธ ์กฐ์ •๋œ ๋ชจ๋ธ์„ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
์„œ๋น„์Šค ์ œ๊ณต์ž๋Š” ์‚ฌ์ „ ์ •์˜๋œ ์˜ต์…˜์—์„œ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ํ”„๋ก ํŠธ์—”๋“œ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ชจ๋ธ ์‹๋ณ„์ž๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋ชจ๋ธ ์ œ๊ณต์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
### ๊ธฐ์—… ์ „์šฉ ์ฑ„๋„์„ ์œ„ํ•œ ๊ธฐ๋ณธ URL ๊ตฌ์„ฑ
OpenAI ํด๋ผ์ด์–ธํŠธ์˜ base_url ๊ตฌ์„ฑ์€ ์ฃผ๋กœ ๋น„๊ณต๊ฐœ API ์ฑ„๋„์ด ์žˆ๋Š” ๊ธฐ์—… ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€:
- ๋น„๊ณต๊ฐœ ๋˜๋Š” ๊ธฐ์—… ์ „์šฉ API ์—”๋“œํฌ์ธํŠธ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
- ์กฐ์ง์ด ์ž์ฒด ํ˜ธ์ŠคํŒ…๋˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐฐํฌ๋œ LLM ์„œ๋น„์Šค ์‚ฌ์šฉ ๊ฐ€๋Šฅ
- ์„œ๋“œํŒŒํ‹ฐ OpenAI API ํ˜ธํ™˜ ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ ์ง€์›
**์ถœ์‹œ ์˜ˆ์ •**: ํ–ฅํ›„ ์—…๋ฐ์ดํŠธ์—์„œ DeepWiki๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์—์„œ ์ž์‹ ์˜ API ํ‚ค๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•˜๋Š” ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋น„๊ณต๊ฐœ ์ฑ„๋„์ด ์žˆ๋Š” ๊ธฐ์—… ๊ณ ๊ฐ์€ DeepWiki ๋ฐฐํฌ์™€ ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ณต์œ ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ธฐ์กด API ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
## ๐Ÿ”Œ OpenRouter ํ†ตํ•ฉ
DeepWiki๋Š” ์ด์ œ [OpenRouter](https://openrouter.ai/)๋ฅผ ๋ชจ๋ธ ์ œ๊ณต์ž๋กœ ์ง€์›ํ•˜์—ฌ, ๋‹จ์ผ API๋ฅผ ํ†ตํ•ด ์ˆ˜๋ฐฑ ๊ฐœ์˜ AI ๋ชจ๋ธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
- **๋‹ค์–‘ํ•œ ๋ชจ๋ธ ์˜ต์…˜**: OpenAI, Anthropic, Google, Meta, Mistral ๋“ฑ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ์ด์šฉ ๊ฐ€๋Šฅ
- **๊ฐ„ํŽธํ•œ ์„ค์ •**: OpenRouter API ํ‚ค๋งŒ ์ถ”๊ฐ€ํ•˜๊ณ  ์›ํ•˜๋Š” ๋ชจ๋ธ ์„ ํƒ
- **๋น„์šฉ ํšจ์œจ์„ฑ**: ์˜ˆ์‚ฐ๊ณผ ์„ฑ๋Šฅ์— ๋งž๋Š” ๋ชจ๋ธ ์„ ํƒ ๊ฐ€๋Šฅ
- **์†์‰ฌ์šด ์ „ํ™˜**: ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ๊ฐ„ ์ „ํ™˜ ๊ฐ€๋Šฅ
### DeepWiki์—์„œ OpenRouter ์‚ฌ์šฉ๋ฒ•
1. **API ํ‚ค ๋ฐ›๊ธฐ**: [OpenRouter](https://openrouter.ai/) ๊ฐ€์ž… ํ›„ API ํ‚ค ํš๋“
2. **ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ถ”๊ฐ€**: `.env` ํŒŒ์ผ์— `OPENROUTER_API_KEY=your_key` ์ถ”๊ฐ€
3. **UI์—์„œ ํ™œ์„ฑํ™”**: ํ™ˆํŽ˜์ด์ง€์—์„œ "Use OpenRouter API" ์˜ต์…˜ ์ฒดํฌ
4. **๋ชจ๋ธ ์„ ํƒ**: GPT-4o, Claude 3.5 Sonnet, Gemini 2.0 ๋“ฑ ์ธ๊ธฐ ๋ชจ๋ธ ์„ ํƒ
OpenRouter๋Š” ํŠนํžˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค:
- ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜์ง€ ์•Š๊ณ  ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ์‹œ๋„
- ์ง€์—ญ ์ œํ•œ์ด ์žˆ๋Š” ๋ชจ๋ธ ์ ‘๊ทผ
- ๋ชจ๋ธ ์ œ๊ณต์ž๋ณ„ ์„ฑ๋Šฅ ๋น„๊ต
- ๋น„์šฉ๊ณผ ์„ฑ๋Šฅ ์ตœ์ ํ™”
## ๐Ÿค– Ask ๋ฐ DeepResearch ๊ธฐ๋Šฅ
### Ask ๊ธฐ๋Šฅ
Ask ๊ธฐ๋Šฅ์€ Retrieval Augmented Generation (RAG)์„ ์‚ฌ์šฉํ•ด ์ €์žฅ์†Œ์™€ ๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
- **๋ฌธ๋งฅ ์ธ์ง€ ๋‹ต๋ณ€**: ์ €์žฅ์†Œ ๋‚ด ์‹ค์ œ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •ํ™•ํ•œ ๋‹ต๋ณ€ ์ œ๊ณต
- **RAG ๊ธฐ๋ฐ˜**: ๊ด€๋ จ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๊ฒ€์ƒ‰ํ•ด ๊ทผ๊ฑฐ ์žˆ๋Š” ๋‹ต๋ณ€ ์ƒ์„ฑ
- **์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ**: ๋‹ต๋ณ€ ์ƒ์„ฑ ๊ณผ์ •์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธ ๊ฐ€๋Šฅ
- **๋Œ€ํ™” ๊ธฐ๋ก ์œ ์ง€**: ์งˆ๋ฌธ ๊ฐ„ ๋ฌธ๋งฅ์„ ์œ ์ง€ํ•ด ๋” ์ผ๊ด€๋œ ๋Œ€ํ™” ๊ฐ€๋Šฅ
### DeepResearch ๊ธฐ๋Šฅ
DeepResearch๋Š” ๋‹ค์ค‘ ํ„ด ์—ฐ๊ตฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ €์žฅ์†Œ ๋ถ„์„์„ ํ•œ์ธต ์‹ฌํ™”ํ•ฉ๋‹ˆ๋‹ค:
- **์‹ฌ์ธต ์กฐ์‚ฌ**: ์—ฌ๋Ÿฌ ์—ฐ๊ตฌ ๋ฐ˜๋ณต์„ ํ†ตํ•ด ๋ณต์žกํ•œ ์ฃผ์ œ ์ฒ ์ €ํžˆ ํƒ๊ตฌ
- **๊ตฌ์กฐํ™”๋œ ํ”„๋กœ์„ธ์Šค**: ์—ฐ๊ตฌ ๊ณ„ํš, ์—…๋ฐ์ดํŠธ, ์ตœ์ข… ๊ฒฐ๋ก  ๋‹จ๊ณ„๋กœ ์ง„ํ–‰
- **์ž๋™ ์—ฐ์† ์ง„ํ–‰**: AI๊ฐ€ ์ตœ๋Œ€ 5ํšŒ ๋ฐ˜๋ณตํ•ด ์—ฐ๊ตฌ๋ฅผ ๊ณ„์† ์ง„ํ–‰
- **์—ฐ๊ตฌ ๋‹จ๊ณ„**:
1. **์—ฐ๊ตฌ ๊ณ„ํš**: ์ ‘๊ทผ๋ฒ•๊ณผ ์ดˆ๊ธฐ ๋ฐœ๊ฒฌ ์‚ฌํ•ญ ๊ฐœ์š” ์ž‘์„ฑ
2. **์—ฐ๊ตฌ ์—…๋ฐ์ดํŠธ**: ์ด์ „ ๋ฐ˜๋ณต ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ƒˆ๋กœ์šด ํ†ต์ฐฐ ์ถ”๊ฐ€
3. **์ตœ์ข… ๊ฒฐ๋ก **: ๋ชจ๋“  ๋ฐ˜๋ณต์„ ์ข…ํ•ฉํ•œ ํฌ๊ด„์  ๋‹ต๋ณ€ ์ œ๊ณต
DeepResearch๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์งˆ๋ฌธ ์ œ์ถœ ์ „ Ask ์ธํ„ฐํŽ˜์ด์Šค์—์„œ "Deep Research" ์Šค์œ„์น˜๋ฅผ ์ผœ์„ธ์š”.
## ๐Ÿ“ฑ ์Šคํฌ๋ฆฐ์ƒท
![DeepWiki Main Interface](screenshots/Interface.png)
*DeepWiki์˜ ๋ฉ”์ธ ์ธํ„ฐํŽ˜์ด์Šค*
![Private Repository Support](screenshots/privaterepo.png)
*๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ ์ ‘๊ทผ*
![DeepResearch Feature](screenshots/DeepResearch.png)
*DeepResearch๋Š” ๋ณต์žกํ•œ ์ฃผ์ œ์— ๋Œ€ํ•ด ๋‹ค์ค‘ ํ„ด ์กฐ์‚ฌ๋ฅผ ์ˆ˜ํ–‰*
### ๋ฐ๋ชจ ์˜์ƒ
[![DeepWiki Demo Video](https://img.youtube.com/vi/zGANs8US8B4/0.jpg)](https://youtu.be/zGANs8US8B4)
*DeepWiki ์ž‘๋™ ์˜์ƒ ๋ณด๊ธฐ!*
## โ“ ๋ฌธ์ œ ํ•ด๊ฒฐ
### API ํ‚ค ๋ฌธ์ œ
- **"ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ˆ„๋ฝ"**: `.env` ํŒŒ์ผ์ด ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— ์žˆ๊ณ  ํ•„์š”ํ•œ API ํ‚ค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
- **"API ํ‚ค๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์Œ"**: ํ‚ค๋ฅผ ์ •ํ™•ํžˆ ๋ณต์‚ฌํ–ˆ๋Š”์ง€, ๊ณต๋ฐฑ์ด ์—†๋Š”์ง€ ํ™•์ธ
- **"OpenRouter API ์˜ค๋ฅ˜"**: OpenRouter API ํ‚ค๊ฐ€ ์œ ํšจํ•˜๊ณ  ์ถฉ๋ถ„ํ•œ ํฌ๋ ˆ๋”ง์ด ์žˆ๋Š”์ง€ ํ™•์ธ
### ์—ฐ๊ฒฐ ๋ฌธ์ œ
- **"API ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Œ"**: API ์„œ๋ฒ„๊ฐ€ ํฌํŠธ 8001์—์„œ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธ
- **"CORS ์˜ค๋ฅ˜"**: API๊ฐ€ ๋ชจ๋“  ์ถœ์ฒ˜๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๋ฅผ ๊ฐ™์€ ๋จธ์‹ ์—์„œ ์‹คํ–‰ํ•ด ๋ณด์„ธ์š”
### ์ƒ์„ฑ ๋ฌธ์ œ
- **"์œ„ํ‚ค ์ƒ์„ฑ ์˜ค๋ฅ˜"**: ์•„์ฃผ ํฐ ์ €์žฅ์†Œ๋Š” ๋จผ์ € ์ž‘์€ ์ €์žฅ์†Œ๋กœ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”
- **"์ž˜๋ชป๋œ ์ €์žฅ์†Œ ํ˜•์‹"**: ์œ ํšจํ•œ GitHub, GitLab ๋˜๋Š” Bitbucket URL ํ˜•์‹์ธ์ง€ ํ™•์ธ
- **"์ €์žฅ์†Œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Œ"**: ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ๋ผ๋ฉด ์ ์ ˆํ•œ ๊ถŒํ•œ์˜ ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ž…๋ ฅํ–ˆ๋Š”์ง€ ํ™•์ธ
- **"๋‹ค์ด์–ด๊ทธ๋žจ ๋ Œ๋”๋ง ์˜ค๋ฅ˜"**: ์•ฑ์ด ์ž๋™์œผ๋กœ ๋‹ค์ด์–ด๊ทธ๋žจ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋ ค ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค
### ์ผ๋ฐ˜์ ์ธ ํ•ด๊ฒฐ๋ฒ•
1. **์„œ๋ฒ„ ๋‘˜ ๋‹ค ์žฌ์‹œ์ž‘**: ๊ฐ„๋‹จํ•œ ์žฌ์‹œ์ž‘์œผ๋กœ ๋Œ€๋ถ€๋ถ„ ๋ฌธ์ œ ํ•ด๊ฒฐ
2. **์ฝ˜์†” ๋กœ๊ทธ ํ™•์ธ**: ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์˜ค๋ฅ˜ ํ™•์ธ
3. **API ๋กœ๊ทธ ํ™•์ธ**: API ์‹คํ–‰ ํ„ฐ๋ฏธ๋„์—์„œ Python ์˜ค๋ฅ˜ ํ™•์ธ
## ๐Ÿค ๊ธฐ์—ฌ
๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ๋‹ค์Œ์„ ์ž์œ ๋กญ๊ฒŒ ํ•ด์ฃผ์„ธ์š”:
- ๋ฒ„๊ทธ๋‚˜ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์œ„ํ•œ ์ด์Šˆ ์—ด๊ธฐ
- ์ฝ”๋“œ ๊ฐœ์„ ์„ ์œ„ํ•œ ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ์ œ์ถœ
- ํ”ผ๋“œ๋ฐฑ๊ณผ ์•„์ด๋””์–ด ๊ณต์œ 
## ๐Ÿ“„ ๋ผ์ด์„ ์Šค
์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ์žˆ์Šต๋‹ˆ๋‹ค - ์ž์„ธํ•œ ๋‚ด์šฉ์€ [LICENSE](LICENSE) ํŒŒ์ผ ์ฐธ๊ณ .
## โญ ์Šคํƒ€ ํžˆ์Šคํ† ๋ฆฌ
[![Star History Chart](https://api.star-history.com/svg?repos=AsyncFuncAI/deepwiki-open&type=Date)](https://star-history.com/#AsyncFuncAI/deepwiki-open&Date)