Skip to content

CausalInferenceLab/Lang2SQL

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Lang2SQL

PseudoLab Discord Community Stars Badge Forks Badge Pull Requests Badge Issues Badge GitHub contributors PyPI version PyPI downloads Hits

์šฐ๋ฆฌ๋Š” ํ•จ๊ป˜ ์ฝ”๋“œ์™€ ์•„์ด๋””์–ด๋ฅผ ๋‚˜๋ˆ„๋ฉฐ ๋” ๋‚˜์€ ๋ฐ์ดํ„ฐ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์—ฌ์ •์„ ๋– ๋‚ฉ๋‹ˆ๋‹ค. ๐ŸŒ๐Ÿ’ก

"๋ชจ๋‘๊ฐ€ ๋” ๊ฐ€์น˜ ์žˆ๋Š” ์ผ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค."


๐Ÿš€ Lang2SQL์ด๋ž€?

Lang2SQL์€ ์ž์—ฐ์–ด ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”๋œ SQL ๋ฌธ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์˜คํ”ˆ์†Œ์Šค ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. LangGraph์™€ DataHub ํ†ตํ•ฉ์œผ๋กœ ๊ตฌ์ถ•๋˜์–ด, ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ์— ๋Œ€ํ•œ ๊นŠ์€ ์ง€์‹ ์—†์ด๋„ ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ์ž๋“ค์ด ํšจ์œจ์ ์ธ SQL ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

๐ŸŽฏ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๐Ÿ—ฃ๏ธ ์ž์—ฐ์–ด๋ฅผ SQL๋กœ ๋ณ€ํ™˜: ์ผ์ƒ ์–ธ์–ด๋ฅผ ์ •ํ™•ํ•œ SQL ์ฟผ๋ฆฌ๋กœ ๋ณ€ํ™˜
  • ๐Ÿ“Š ์Šค๋งˆํŠธ ํ…Œ์ด๋ธ” ๋ฐœ๊ฒฌ: ์˜๋ฏธ๋ก ์  ๊ฒ€์ƒ‰์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ จ ํ…Œ์ด๋ธ”์„ ์ž๋™์œผ๋กœ ์ฐพ๊ธฐ
  • ๐Ÿ” ์Šคํ‚ค๋งˆ ์ธ์‹: DataHub ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ์ •ํ™•ํ•œ ์ปฌ๋Ÿผ ๋งคํ•‘
  • ๐Ÿ› ๏ธ ์›น ์ธํ„ฐํŽ˜์ด์Šค: ๋Œ€ํ™”ํ˜• Streamlit ์•ฑ์„ ํ†ตํ•œ ์‚ฌ์šฉ
  • ๐Ÿ“ˆ ์‹œ๊ฐํ™”: ์ƒ์„ฑ๋œ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์–‘ํ•œ ์ฐจํŠธ์™€ ๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•…

๐Ÿค” ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ

์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐํŒ€ ๊ตฌ์„ฑ์›๋“ค์ด ์ž์ฃผ ์ง๋ฉดํ•˜๋Š” ๋ฌธ์ œ๋“ค:

  • ๐Ÿคฏ "ํ…Œ์ด๋ธ”์ด ๋„ˆ๋ฌด ๋งŽ์•„! ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์ง€?"
  • ๐Ÿง "์ด JOIN์ด ๋งž๋‚˜์š”?"
  • ๐ŸŒ "์ด ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด ๊ดœ์ฐฎ์„๊นŒ์š”?"
  • ๐Ÿ˜ฐ "์–ด๋–ป๊ฒŒ ์˜๋ฏธ์žˆ๋Š” ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ถ”์ถœํ•˜์ง€?"

Lang2SQL์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•˜์—ฌ ์ด๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค:

  • โœ… ์ž์—ฐ์–ด ์ž…๋ ฅ โ†’ ํ…Œ์ด๋ธ” ์ถ”์ฒœ
  • โœ… ์ ์ ˆํ•œ ์ปฌ๋Ÿผ ์กฐํ•ฉ์œผ๋กœ ์ž๋™ SQL ์ƒ์„ฑ
  • โœ… ๋ชจ๋ฒ” ์‚ฌ๋ก€ ๊ธฐ๋ฐ˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”

๐Ÿ“ฆ ์„ค์น˜ ๋ฐฉ๋ฒ•

๋น ๋ฅธ ์„ค์น˜

pip install lang2sql

์†Œ์Šค์—์„œ ์„ค์น˜

git clone https://github.com/CausalInferenceLab/lang2sql.git
cd lang2sql
pip install -r requirements.txt
python setup.py install

๐Ÿ› ๏ธ ์‚ฌ์šฉ๋ฒ•

๋ช…๋ น์ค„ ์ธํ„ฐํŽ˜์ด์Šค

Streamlit ์›น ์ธํ„ฐํŽ˜์ด์Šค ์‹คํ–‰:

lang2sql run-streamlit

์‚ฌ์šฉ์ž ์ •์˜ ํฌํŠธ ๋ฐ DataHub ์„œ๋ฒ„์™€ ํ•จ๊ป˜:

lang2sql --datahub_server http://your-datahub-server:8080 run-streamlit -p 8888

ํ™˜๊ฒฝ ์„ค์ •

  • ํ˜„์žฌ๋Š” pip ํŒจํ‚ค์ง€ ์„ค์น˜๋กœ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘์ด ์–ด๋ ค์šด ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.
  • .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ ์„ค์ • ๊ด€๋ฆฌ (.env.example ์ฐธ๊ณ )

๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜

Lang2SQL์€ LangGraph๋ฅผ ์‚ฌ์šฉํ•œ ๋‹ค๋‹จ๊ณ„ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

  1. ๐Ÿ“ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ: ์‚ฌ์šฉ์ž ์˜๋„ ํŒŒ์‹ฑ ๋ฐ ํ•ต์‹ฌ ์—”ํ‹ฐํ‹ฐ ์ถ”์ถœ
  2. ๐Ÿ” ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰: ์˜๋ฏธ๋ก ์  ์œ ์‚ฌ์„ฑ์„ ์‚ฌ์šฉํ•œ ๊ด€๋ จ ํ…Œ์ด๋ธ” ์ฐพ๊ธฐ (Vector Search)
  3. โš™๏ธ SQL ์ƒ์„ฑ: ์ตœ์ ํ™”๋œ SQL ์ฟผ๋ฆฌ ์ƒ์„ฑ
  4. ๐Ÿš€ ์ฟผ๋ฆฌ ์‹œ๊ฐํ™”: ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์‹œ๊ฐํ™” ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿง‘โ€๐Ÿ’ป ๊ธฐ์ˆ  ์Šคํƒ

  • LangGraph: LLM ์›Œํฌํ”Œ๋กœ์šฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
  • DataHub: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐ ํ™œ์šฉ
  • Streamlit: ๋Œ€ํ™”ํ˜• ์›น ์ธํ„ฐํŽ˜์ด์Šค

๐ŸŒŸ ๊ธฐ์—ฌ๊ฐ€ ํ•„์š”ํ•œ ์˜์—ญ (Help!)

Containerization

  • Docker๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜๊ณ , pip install lang2sql ์„ค์น˜ ํ›„ ๋‹จ์ผ ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ• ๋ฐ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ๊นŒ์ง€ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

Agentic ์•„ํ‚คํ…์ฒ˜ ๊ฐœ๋ฐœ

  • ์ฟผ๋ฆฌ ์ƒ์„ฑ ๊ณผ์ •์„ ์—์ด์ „ํ‹ฑํ•˜๊ฒŒ ๊ฐœ์„ ํ•˜์—ฌ ๋”์šฑ ์ง€๋Šฅ์ ์ด๊ณ  ์ž์œจ์ ์ธ SQL ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋””์Šค์ปค๋ฒ„๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Datahub ํ†ตํ•ฉ ๊ฐ•ํ™”

  • ํ˜„์žฌ Datahub์˜ Glossary์™€ ์ฟผ๋ฆฌ ์˜ˆ์‹œ๋ฅผ ์ฝ”๋“œ๋กœ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌ ์ƒ์„ฑ ๊ณผ์ •์— ๋”์šฑ ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ†ตํ•ฉํ•˜์—ฌ ์ปจํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ์ •ํ™•ํ•œ SQL ์ƒ์„ฑ์„ ์ง€์›ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

VectorDB ์œ ์—ฐ์„ฑ ๊ฐœ์„ 

  • ํ˜„์žฌ๋Š” Datahub๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ์— FAISS VectorDB๋ฅผ ์ƒ์„ฑํ•ด์•ผ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
  • ์ด ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถฐ์„œ Datahub ์—†์ด๋„ ๊ธฐ์กด์— ์ค€๋น„๋œ VectorDB๋งŒ ์žˆ์œผ๋ฉด ๋ฐ”๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์ถœ๋ ฅ ํฌ๋งท ๊ฐ•ํ™”

  • ํ˜„์žฌ Streamlit์„ ํ†ตํ•œ ์›น ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • CLI, JSON ๋“ฑ ๋‹ค์–‘ํ•œ ์ถœ๋ ฅ ํฌ๋งท์„ ์ง€์›ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ ์œ ์—ฐํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง / ๋กœ๊น… ๊ฐ•ํ™”

  • ํ”„๋กœ์ ํŠธ ์‚ฌ์šฉ ํŒจํ„ด๊ณผ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์ƒ์„ธํ•œ ๋กœ๊น… ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ง€์†์ ์ธ ๊ฐœ์„ ์ด ๊ฐ€๋Šฅํ•œ ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

๋ฌธ์„œํ™” ๊ฐ•ํ™”

  • ํ”„๋กœ์ ํŠธ ๊ธฐ์—ฌ ์žฅ๋ฒฝ์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ํฌ๊ด„์ ์ธ ๋ฌธ์„œํ™” ์ž‘์—…์ž…๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž ๊ฐ€์ด๋“œ, ํŠœํ† ๋ฆฌ์–ผ ๋“ฑ์„ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ธฐ์—ฌ์ž๋“ค์ด ์‰ฝ๊ฒŒ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์กฐ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์—ฌ๋Ÿฌ๋ถ„์ด ๋„์šธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ค:

๐Ÿ”ง ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •

  1. ์ €์žฅ์†Œ ํฌํฌํ•˜๊ธฐ
  2. ํฌํฌ ํด๋ก : git clone https://github.com/YOUR_USERNAME/lang2sql.git
  3. ์˜์กด์„ฑ ์„ค์น˜: pip install -r requirements.txt
  4. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ: git checkout -b feature/amazing-feature
  5. ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ปค๋ฐ‹: git commit -m 'Add amazing feature'
  6. ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ: git push origin feature/amazing-feature
  7. Pull Request ์—ด๊ธฐ

๐Ÿ› ์ด์Šˆ ์‹ ๊ณ 

๋ฒ„๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๊ฑฐ๋‚˜ ๊ธฐ๋Šฅ ์š”์ฒญ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ๋‹ค์Œ ์ •๋ณด์™€ ํ•จ๊ป˜ ์ด์Šˆ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”:

  • ๋ฌธ์ œ/๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์„ค๋ช…
  • ์žฌํ˜„ ๋‹จ๊ณ„ (๋ฒ„๊ทธ์˜ ๊ฒฝ์šฐ)
  • ์˜ˆ์ƒ ๋™์ž‘ vs ์‹ค์ œ ๋™์ž‘
  • ํ™˜๊ฒฝ ์„ธ๋ถ€์‚ฌํ•ญ

๐Ÿ“‹ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ

  • pre-commit ํ™œ์„ฑํ™”
  • ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ
  • ํ•„์š”์‹œ ๋ฌธ์„œ ์—…๋ฐ์ดํŠธ
  • ์›์ž์ ์ด๊ณ  ์ž˜ ์„ค๋ช…๋œ ์ปค๋ฐ‹ ์œ ์ง€

๐ŸŽ“ ํ•™์Šต ์ž๋ฃŒ


๐Ÿ† Our Team

Role Name Skills Interests
Project Manager ์ด๋™์šฑ Python LLM, Open Source, Causal Inference
AI Engineer ๋ฌธ์ฐฌ๊ตญ Python LLM, Agentic RAG, Open Source
Data Analytics Engineer ๋ฐ•๊ฒฝํƒœ Python LLM-based Engineering
AI Engineer ์†๋ด‰๊ท  Python LLM, RAG, AI Planning
Data Scientist ์•ˆ์žฌ์ผ Python LLM, Data Analysis, RAG
ML Engineer ์ดํ˜ธ๋ฏผ Python Multi-Agent Systems
AI Engineer ์ตœ์„ธ์˜ Python LLM, RAG, Multi-Agent
Full-Stack Developer ํ™ฉ์œค์ง„ NextJs React LLM Orchestration

๐Ÿš€ ๋ฐฐํฌ ๋ฐ ๋ฆด๋ฆฌ์Šค

์ˆ˜๋™ ๋นŒ๋“œ

python setup.py sdist bdist_wheel
twine upload dist/*

์ž๋™ ๋ฆด๋ฆฌ์Šค

v* ํ˜•์‹์˜ ํƒœ๊ทธ๋ฅผ ํ‘ธ์‹œํ•˜์—ฌ ์ž๋™ PyPI ๋ฐฐํฌ ํŠธ๋ฆฌ๊ฑฐ:

git tag v1.0.0
git push origin v1.0.0

์ฐธ๊ณ : GitHub Secrets์— PYPI_API_TOKEN ์„ค์ • ํ•„์š”.


๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง

Lang2SQL์€ ๊ฐ€์งœ์—ฐ๊ตฌ์†Œ์˜ ์ธ๊ณผ์ถ”๋ก ํŒ€์—์„œ ๊ฐœ๋ฐœ์ค‘์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.


๐Ÿ“„ ๋ผ์ด์„ ์Šค


๐ŸŒ ๊ฐ€์งœ์—ฐ๊ตฌ์†Œ ์†Œ๊ฐœ

๊ฐ€์งœ์—ฐ๊ตฌ์†Œ๋Š” ๋จธ์‹ ๋Ÿฌ๋‹๊ณผ AI ๊ธฐ์ˆ  ๋ฐœ์ „์— ์ค‘์ ์„ ๋‘” ๋น„์˜๋ฆฌ ์กฐ์ง์ž…๋‹ˆ๋‹ค. ๊ณต์œ , ๋™๊ธฐ๋ถ€์—ฌ, ๊ทธ๋ฆฌ๊ณ  ํ˜‘์—…์˜ ๊ธฐ์จ์ด๋ผ๋Š” ํ•ต์‹ฌ ๊ฐ€์น˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์˜ํ–ฅ๋ ฅ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

์ „ ์„ธ๊ณ„ 5,000๋ช… ์ด์ƒ์˜ ์—ฐ๊ตฌ์ž๋“ค๊ณผ ํ•จ๊ป˜, ์šฐ๋ฆฌ๋Š” AI ์ง€์‹์˜ ๋ฏผ์ฃผํ™”์™€ ์—ด๋ฆฐ ํ˜‘์—…์„ ํ†ตํ•œ ํ˜์‹  ์ด‰์ง„์— ์ „๋…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์ฐธ์—ฌํ•˜์„ธ์š”:


๐ŸŽฏ ๊ธฐ์—ฌ์ž๋“ค


โญ ์ด ์ €์žฅ์†Œ๊ฐ€ ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์Šคํƒ€๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!

"์šฐ๋ฆฌ๋Š” ํ•จ๊ป˜ ์ฝ”๋“œ์™€ ์•„์ด๋””์–ด๋ฅผ ๋‚˜๋ˆ„๋ฉฐ ๋” ๋‚˜์€ ๋ฐ์ดํ„ฐ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ์—ฌ์ •์„ ๋– ๋‚ฉ๋‹ˆ๋‹ค. ๐ŸŒ๐Ÿ’ก"

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 7