RAG, LangChain, LangGraph, LangSmith๋ฅผ ํ์ฉํ ๊ธ์ต ๋ถ์ AI ์์คํ ์ ๋๋ค.
- ์ง๋ฅํ ์ฟผ๋ฆฌ ๋ถ์: LLM ๊ธฐ๋ฐ ์๋ ํ์ ๋ฐ ๋ณต์ก๋ ํ๊ฐ
- 11๊ฐ ์ ๋ฌธ ์์ด์ ํธ: Query Analyzer, Data, Analysis, News, Knowledge, Visualization, Response + 4๊ฐ ๋ฉํ ์์ด์ ํธ
- ๋ณ๋ ฌ ์คํ ์ต์ ํ: ๋ ๋ฆฝ์ ์์ ๋์ ์ฒ๋ฆฌ๋ก ์ต๋ 50% ์๊ฐ ๋จ์ถ
- ๋์ ์ํฌํ๋ก์ฐ: ์ฟผ๋ฆฌ ๋ณต์ก๋์ ๋ฐ๋ผ ์๋์ผ๋ก ์ต์ ๊ฒฝ๋ก ์ ํ
- ์ ๋ขฐ๋ ํ๊ฐ: ์๋ต ํ์ง์ A~F ๋ฑ๊ธ์ผ๋ก ์ค์๊ฐ ํ๊ฐ
- Pinecone ๋ฒกํฐ DB: 4,961๊ฐ ๊ธ์ต ๋ฌธ์ ์๋ฒ ๋ฉ, ์๋ฏธ ๊ธฐ๋ฐ ๊ฒ์
- Neo4j ์ง์ ๊ทธ๋ํ: 30,000+ ๊ด๊ณ (SIMILAR_TO, SAME_CATEGORY, MENTIONS)
- ํ๊ตญ์ด ์๋ฒ ๋ฉ: kakaobank/kf-deberta-base ๋ชจ๋ธ (768์ฐจ์)
- ๋งค์ผ๊ฒฝ์ RSS: ๊ฒฝ์ /์ฆ๊ถ/๊ตญ์ /์ ์น ๋ด์ค ์๋ ์์ง ๋ฐ ์๋ฒ ๋ฉ
- ์ค์๊ฐ ๋ด์ค: Google RSS + ์๋ ๋ฒ์ญ (์์ดโํ๊ตญ์ด)
- ์ค์๊ฐ ์ฃผ๊ฐ: Yahoo Finance API (58๊ฐ ํ๊ตญ/๋ฏธ๊ตญ ์ฃผ์ ์ข ๋ชฉ)
- ์ฌ๋ฌด ์งํ: PER, PBR, ROE, ๋ฐฐ๋น์์ต๋ฅ , ์๊ฐ์ด์ก
- ๋ด์ค ๋ถ์: ๋งค์ผ๊ฒฝ์ KG + Google RSS ํตํฉ
- ์ฐจํธ ์๊ฐํ: matplotlib ๊ธฐ๋ฐ ์ฃผ๊ฐ/๊ฑฐ๋๋ ์ฐจํธ
- ๋์ ์ค์ : YAML ๊ธฐ๋ฐ ์ข ๋ชฉ ์ค์ ์ผ๋ก ์ฌ์ด ํ์ฅ
- ์ค์๊ฐ ์ถ์ : ๋ชจ๋ ์ฟผ๋ฆฌ์ ์๋ต์ ์ ์ฒด ๋ผ์ดํ์ฌ์ดํด ์ถ์
- ์ฑ๋ฅ ๋ฉํธ๋ฆญ: ์๋ต ์๊ฐ, ์ฑ๊ณต๋ฅ , ์๋ฌ์จ ๋์๋ณด๋
- ์ํฌํ๋ก์ฐ ์๊ฐํ: LangGraph ์คํ ํ๋ฆ ๋ฐ ์์ด์ ํธ ๊ฒฝ๋ก
- ๋น์ฉ ์ต์ ํ: Gemini 2.0 Flash Exp ์ฌ์ฉ์ผ๋ก ์ ๋น์ฉ ๊ณ ์ฑ๋ฅ
์ฌ์ฉ์ ์ฟผ๋ฆฌ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ FastAPI Router โ
โ (chat.py - API ์๋ํฌ์ธํธ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ChatbotService (์ง์
์ ) โ
โ - ์ํฌํ๋ก์ฐ ์ ํ ๋ฐ ๋ชจ๋ํฐ๋ง ํตํฉ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ FinancialWorkflow (๋ฉ์ธ ๋ผ์ฐํฐ) โ
โ - WorkflowRouter๋ก LangGraph ์ํฌํ๋ก์ฐ ์คํ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ง WorkflowRouter (LangGraph ๊ธฐ๋ฐ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 1. QueryAnalyzerAgent - ์ฟผ๋ฆฌ ์๋ & ๋ณต์ก๋ ๋ถ์ โ
โ 2. ServicePlannerAgent - ๋ณ๋ ฌ/์์ฐจ ์คํ ์ ๋ต ์๋ฆฝ โจ โ
โ 3. ParallelExecutor - ์์ด์ ํธ ๋์ ์คํ โก โ
โ 4. ์ ๋ฌธ ์์ด์ ํธ๋ค (Data/Analysis/News/Knowledge/Viz) โ
โ 5. ResultCombinerAgent - LLM ๊ธฐ๋ฐ ๊ฒฐ๊ณผ ํตํฉ ๐ โ
โ 6. ConfidenceCalculatorAgent - ์ ๋ขฐ๋ ํ๊ฐ ๐ โ
โ 7. ResponseAgent - ์ต์ข
์๋ต ์์ฑ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ์ํฌํ๋ก์ฐ ์ปดํฌ๋ํธ โ
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโค
โFinancialData โ NewsService โ Analysis โ Pinecone โ
โService โ โ Service โ RAG โ
โ(yfinance) โ(MK+Google) โ โ โ
โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๋ฐ์ดํฐ ๊ณ์ธต โ
โโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโค
โ Pinecone โ Neo4j โ Yahoo โ Google โ
โ ๋ฒกํฐ DB โ ์ง์๊ทธ๋ํ โ Finance โ RSS โ
โ(4,961 docs)โ(30K+ ๊ด๊ณ) โ(์ค์๊ฐ ์ฃผ๊ฐ) โ(์ค์๊ฐ ๋ด์ค) โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ
BE-LLM/
โโโ app/
โ โโโ main.py # FastAPI ์ ํ๋ฆฌ์ผ์ด์
โ โโโ config.py # ํ๊ฒฝ ์ค์ ๊ด๋ฆฌ
โ โ
โ โโโ routers/ # ๐ API ๋ผ์ฐํฐ
โ โ โโโ chat.py # ์ฑํ
API ์๋ํฌ์ธํธ
โ โ
โ โโโ schemas/ # ๐ ๋ฐ์ดํฐ ์คํค๋ง
โ โ โโโ chat_schema.py # ์ฑํ
์์ฒญ/์๋ต
โ โ โโโ user_schema.py # ์ฌ์ฉ์ ํ๋กํ
โ โ
โ โโโ services/ # ๐ง ๋น์ฆ๋์ค ๋ก์ง
โ โ โโโ chatbot/ # ๐ค ์ฑ๋ด ์๋น์ค
โ โ โ โโโ chatbot_service.py # ๋ฉ์ธ ์ง์
์
โ โ โ โโโ financial_workflow.py # ์ํฌํ๋ก์ฐ ํตํฉ
โ โ โ
โ โ โโโ langgraph_enhanced/ # ๐ง ๋ฉํ ์์ด์ ํธ ์์คํ
โ โ โ โโโ workflow_router.py # LangGraph ์ํฌํ๋ก์ฐ ๋ผ์ฐํฐ
โ โ โ โโโ llm_manager.py # LLM ํตํฉ ๊ด๋ฆฌ (Gemini ์ ์ฉ)
โ โ โ โโโ agents/ # 11๊ฐ ์์ด์ ํธ
โ โ โ โโโ base_agent.py # ๋ฒ ์ด์ค ํด๋์ค
โ โ โ โโโ query_analyzer.py # ์ฟผ๋ฆฌ ๋ถ์
โ โ โ โโโ data_agent.py # ๋ฐ์ดํฐ ์กฐํ
โ โ โ โโโ analysis_agent.py # ํฌ์ ๋ถ์ (RAG+Neo4j)
โ โ โ โโโ news_agent.py # ๋ด์ค ์์ง
โ โ โ โโโ knowledge_agent.py # ๊ธ์ต ์ง์ ๊ต์ก
โ โ โ โโโ visualization_agent.py # ์ฐจํธ ์์ฑ
โ โ โ โโโ response_agent.py # ์ต์ข
์๋ต
โ โ โ โโโ service_planner.py # ์๋น์ค ์ ๋ต ์๋ฆฝ โจ
โ โ โ โโโ parallel_executor.py # ๋ณ๋ ฌ ์คํ โก
โ โ โ โโโ result_combiner.py # ๊ฒฐ๊ณผ ํตํฉ ๐
โ โ โ โโโ confidence_calculator.py # ์ ๋ขฐ๋ ๊ณ์ฐ ๐
โ โ โ โโโ fallback_agent.py # ํด๋ฐฑ ์ฒ๋ฆฌ
โ โ โ โโโ investment_intent_detector.py
โ โ โ
โ โ โโโ workflow_components/ # โ๏ธ ์ํฌํ๋ก์ฐ ์ปดํฌ๋ํธ
โ โ โ โโโ financial_data_service.py # ๊ธ์ต ๋ฐ์ดํฐ ์กฐํ
โ โ โ โโโ analysis_service.py # ๋ฐ์ดํฐ ๋ถ์
โ โ โ โโโ news_service.py # ๋ด์ค ํตํฉ ์๋น์ค
โ โ โ โโโ mk_rss_scraper.py # ๋งค์ผ๊ฒฝ์ RSS + Neo4j
โ โ โ โโโ google_rss_translator.py # Google RSS + ๋ฒ์ญ
โ โ โ โโโ data_agent_service.py # ๋ฐ์ดํฐ ์์ด์ ํธ
โ โ โ โโโ visualization_service.py # ์ฐจํธ ์๊ฐํ
โ โ โ โโโ response_generator_service.py # ์๋ต ์์ฑ
โ โ โ
โ โ โโโ portfolio/ # ๐ผ ํฌํธํด๋ฆฌ์ค
โ โ โ โโโ portfolio_advisor.py # ํฌํธํด๋ฆฌ์ค ์ ์
โ โ โ
โ โ โโโ pinecone_rag_service.py # Pinecone RAG
โ โ โโโ pinecone_config.py # Pinecone ์ค์
โ โ โโโ monitoring_service.py # LangSmith ๋ชจ๋ํฐ๋ง
โ โ โโโ user_service.py # ์ฌ์ฉ์ ๊ด๋ฆฌ
โ โ
โ โโโ utils/ # ๐ ๏ธ ์ ํธ๋ฆฌํฐ
โ โโโ stock_utils.py # ์ฃผ์ ์ฌ๋ณผ ๋งคํ
โ โโโ stock_config_loader.py # YAML ๋์ ๋ก๋ฉ
โ โโโ common_utils.py # ๊ณตํต ์ ํธ
โ โโโ formatters/ # ํฌ๋งทํฐ
โ โ โโโ formatters.py
โ โโโ external/ # ์ธ๋ถ API
โ โ โโโ external_api_service.py
โ โโโ visualization/ # ์๊ฐํ
โ โโโ chart_display.py
โ
โโโ config/ # โ๏ธ ์ค์ ํ์ผ
โ โโโ stocks.yaml # 58๊ฐ ์ข
๋ชฉ ์ค์ (๋์ )
โ
โโโ docs/ # ๐ ๋ฌธ์
โ โโโ AGENT_SYSTEM_GUIDE.md # ์์ด์ ํธ ์์คํ
๊ฐ์ด๋
โ โโโ WORKFLOW_TREE.md # ์ํฌํ๋ก์ฐ ํธ๋ฆฌ
โ โโโ DEPLOYMENT_CHECKLIST.md # ๋ฐฐํฌ ์ฒดํฌ๋ฆฌ์คํธ
โ
โโโ tests/ # ๐งช ํ
์คํธ
โ โโโ test_langgraph_enhanced.py # LangGraph ํ
์คํธ
โ โโโ test_chatbot_workflow.py # ์ํฌํ๋ก์ฐ ํ
์คํธ
โ โโโ test_stock_utils_integration.py # ์ฃผ์ ์ ํธ ํ
์คํธ
โ โโโ performance_test/ # ์ฑ๋ฅ ๋ฒค์น๋งํฌ
โ โ โโโ simple_benchmark.py
โ โ โโโ benchmark_analysis.md
โ โโโ examples/ # ์์ ์ฝ๋
โ โโโ data_agent_example.py
โ
โโโ requirements.txt # ์์กด์ฑ (79๊ฐ ํจํค์ง)
โโโ daily_news_updater.py # ์ผ์ผ ๋ด์ค ์
๋ฐ์ดํธ ์คํฌ๋ฆฝํธ
โโโ chat_terminal.py # ํฐ๋ฏธ๋ ์ฑํ
์ธํฐํ์ด์ค
โโโ run_server.py # ์๋ฒ ์คํ ์คํฌ๋ฆฝํธ
โโโ ARCHITECTURE.md # ์์คํ
์ํคํ
์ฒ ๋ฌธ์
โโโ TODO.md # ์์
๋ชฉ๋ก
โโโ README.md # ์ด ํ์ผ
pip install -r requirements.txt.env ํ์ผ์ ์์ฑํ๊ณ ๋ค์ ๋ณ์๋ค์ ์ค์ ํ์ธ์:
# Google AI API Key (Gemini)
GOOGLE_API_KEY=your_google_api_key_here
# LangSmith ์ค์ (์ ํ)
LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_API_KEY=your_langsmith_api_key_here
LANGCHAIN_PROJECT=financial-chatbot
# Neo4j Aura ์ค์ (๋งค์ผ๊ฒฝ์ ๋ด์ค ์ง์๊ทธ๋ํ)
NEO4J_URI=neo4j+s://xxxxx.databases.neo4j.io
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_neo4j_aura_password
# Pinecone ์ค์ (RAG ๋ฒกํฐ DB)
PINECONE_API_KEY=your_pinecone_api_key_here
PINECONE_INDEX_NAME=finance-rag-index
EMBEDDING_MODEL_NAME=kakaobank/kf-deberta-base
BATCH_SIZE=32
MAX_LENGTH=256
TOP_K=10uvicorn app.main:app --reload --host 0.0.0.0 --port 8000curl -X POST "http://localhost:8000/api/v1/chat" \
-H "Content-Type: application/json" \
-d '{
"user_id": 1,
"session_id": "session_123",
"message": "์ผ์ฑ์ ์ ์ฃผ๊ฐ ๋ถ์ํด์ค"
}'curl -X GET "http://localhost:8000/api/v1/chat/history/session_123"curl -X GET "http://localhost:8000/api/v1/chat/metrics"curl -X GET "http://localhost:8000/api/v1/chat/report"์ฌ์ฉ์: "์ผ์ฑ์ ์ ์ฃผ๊ฐ ์๋ ค์ค"
์ฑ๋ด: "๐ ์ผ์ฑ์ ์ (005930.KS) ์ค์๊ฐ ์ ๋ณด
ํ์ฌ๊ฐ: 75,000์
์ ์ผ๋๋น: +1,500์ (+2.04%)
๊ฑฐ๋๋: 12,345,678์ฃผ
..."
์ฌ์ฉ์: "์ผ์ฑ์ ์ ํฌ์ ๋ถ์ํด์ค"
์ฑ๋ด: "๐ ํฌ์ ๋ถ์ ๊ฒฐ๊ณผ:
๐ ๊ธ์ ์ ์ ํธ: ์ ์ผ ๋๋น +2.04% ์์น
๐ฅ ๋์ ๊ด์ฌ๋: ๊ฑฐ๋๋ 12,345,678์ฃผ (ํ์ ๋๋น ๋์)
๐ฐ ์ ํ๊ฐ: PER 12.5 (ํฌ์ ๋งค๋ ฅ๋ ๋์)
๐ข ์นํฐ: Technology
..."
์ฌ์ฉ์: "PER์ด ๋ญ๊ฐ์?"
์ฑ๋ด: "๐ ๊ธ์ต ์ง์:
PER (Price-to-Earnings Ratio)๋ ์ฃผ๊ฐ์์ต๋น์จ์ ์๋ฏธํฉ๋๋ค.
- ๊ณ์ฐ๋ฒ: ์ฃผ๊ฐ รท ์ฃผ๋น์์ด์ต(EPS)
- ์๋ฏธ: ํ์ฌ ์ฃผ๊ฐ๊ฐ 1๋
์์ด์ต์ ๋ช ๋ฐฐ์ธ์ง ๋ํ๋
- ํด์: ๋ฎ์์๋ก ์ ํ๊ฐ, ๋์์๋ก ๊ณ ํ๊ฐ
- ์ผ๋ฐ์ ๊ธฐ์ค: 15 ์ดํ ์ ํ๊ฐ, 25 ์ด์ ๊ณ ํ๊ฐ
..."
- FastAPI: ๊ณ ์ฑ๋ฅ ๋น๋๊ธฐ ์น ํ๋ ์์ํฌ
- LangChain: LLM ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ (0.3.27)
- LangGraph: ์ํ ๊ธฐ๋ฐ ์ํฌํ๋ก์ฐ ๊ด๋ฆฌ (0.6.7)
- LangSmith: LLM ๋ชจ๋ํฐ๋ง ๋ฐ ๋๋ฒ๊น (0.4.29)
- Google Gemini: 2.0 Flash Exp ๋ชจ๋ธ (์ ๋น์ฉ ๊ณ ์ฑ๋ฅ, 4M ํ ํฐ ์ปจํ ์คํธ)
- Sentence Transformers: kakaobank/kf-deberta-base (ํ๊ตญ์ด ๊ธ์ต ํนํ ์๋ฒ ๋ฉ, 768์ฐจ์)
- PyTorch: 2.8.0 (๋ชจ๋ธ ์ถ๋ก )
- Transformers: 4.56.2 (HuggingFace)
- Pinecone: ํด๋ผ์ฐ๋ ๋ฒกํฐ DB (4,961๊ฐ ๊ธ์ต ๋ฌธ์ RAG)
- Neo4j Aura: ๊ทธ๋ํ DB + GDS (30,000+ ๋ด์ค ๊ด๊ณ)
- yfinance: ์ค์๊ฐ ์ฃผ์ ๋ฐ์ดํฐ (Yahoo Finance API)
- matplotlib: ์ฐจํธ ์๊ฐํ
- feedparser: RSS ํผ๋ ํ์ฑ (๋งค์ผ๊ฒฝ์ )
- deep-translator: ์๋ ๋ฒ์ญ (์์ดโํ๊ตญ์ด)
- BeautifulSoup4: ์น ์คํฌ๋ํ
- PyYAML: ๋์ ์ข ๋ชฉ ์ค์
- APScheduler: ์ค์ผ์ค๋ง (์ผ์ผ ๋ด์ค ์ ๋ฐ์ดํธ)
- python-dotenv: ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ
- ์ค์๊ฐ ์ฟผ๋ฆฌ ์ถ์
- ์๋ต ํ์ง ๋ถ์
- ์๋ฌ ํจํด ๊ฐ์ง
- ์ฑ๋ฅ ๋ฉํธ๋ฆญ ์๊ฐํ
- ํ๊ท ์๋ต ์๊ฐ
- ์ฟผ๋ฆฌ ์ฑ๊ณต๋ฅ
- ์ฌ์ฉ์ ๋ง์กฑ๋
- ์๋ฌ ๋ฐ์๋ฅ
โ ์๋ฃ๋ ์์ :
-
๋ฉํ ์์ด์ ํธ ์์คํ ์์ฑ (11๊ฐ ์์ด์ ํธ)
- ServicePlannerAgent: ๋ณ๋ ฌ/์์ฐจ ์คํ ์ ๋ต ์๋ฆฝ
- ParallelExecutor: ๋ ๋ฆฝ์ ์์ ๋์ ์ฒ๋ฆฌ๋ก 50% ์๊ฐ ๋จ์ถ
- ResultCombinerAgent: LLM ๊ธฐ๋ฐ ์ง๋ฅํ ๊ฒฐ๊ณผ ํตํฉ
- ConfidenceCalculatorAgent: A~F ๋ฑ๊ธ ์ ๋ขฐ๋ ํ๊ฐ
-
Neo4j ์ง์๊ทธ๋ํ ํตํฉ
- ๋งค์ผ๊ฒฝ์ RSS ์๋ ์์ง (5๊ฐ ์นดํ ๊ณ ๋ฆฌ)
- 30,000+ ๊ด๊ณ ๊ตฌ์ถ (SIMILAR_TO, SAME_CATEGORY, MENTIONS)
- KF-DeBERTa ์๋ฒ ๋ฉ ๊ฒ์ (์ฝ์ฌ์ธ ์ ์ฌ๋)
-
์ค์๊ฐ ๋ด์ค ๋ฒ์ญ ์์คํ
- Google RSS ์ค์๊ฐ ๊ฒ์
- ์๋ ํ๊ตญ์ด ๋ฒ์ญ (deep-translator)
- ๋งค์ผ๊ฒฝ์ + Google RSS ํตํฉ
-
๋์ ์ข ๋ชฉ ์ค์
- YAML ๊ธฐ๋ฐ ์ข ๋ชฉ ๊ด๋ฆฌ (stocks.yaml)
- 58๊ฐ ํ๊ตญ/๋ฏธ๊ตญ ์ฃผ์ ์ข ๋ชฉ
- ๋ฐํ์ ๋์ ๋ก๋ฉ
-
์ฝ๋ ์ต์ ํ
- requirements.txt ์ ๋ฆฌ (79๊ฐ ํจํค์ง)
- Gemini ์ ์ฉ LLM ๊ด๋ฆฌ์
- ํด๋ฐฑ ์์คํ ๊ตฌ์ถ
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
ํ๋ก์ ํธ์ ๋ํ ๋ฌธ์์ฌํญ์ด ์์ผ์๋ฉด ์ด์๋ฅผ ์์ฑํด ์ฃผ์ธ์.