Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

61 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Backend-ai

Backend service dedicated to RAG chatbot functionalities using Langchain and OpenAI API

A. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

โ””โ”€โ”€ src
    โ”œโ”€โ”€ app
    โ”‚   โ”œโ”€โ”€ __init__.py 
    โ”‚   โ”œโ”€โ”€ config.py
    โ”‚   โ””โ”€โ”€ virtual_db.py // ๋ฐฑ ์—ฐ๋™์šฉ ๊ฐ€์ƒ db ์ค‘์ฒฉ ๊ฐ์ฒด
        โ””โ”€โ”€ sql_executor.py
        โ””โ”€โ”€ sql_queries.py
    โ”‚   โ””โ”€โ”€ service // ํด๋” - ์ง€์ธ 
    โ”‚   โ””โ”€โ”€ preprocess // ํด๋” - ์Šน์ฒ 
    โ”œโ”€โ”€ data 
    โ”‚   โ”œโ”€โ”€ db - ๋ฐฑ์—”๋“œ ์—ฐ๋™ ์ „์— ํ…Œ์ŠคํŠธ ์œ„ํ•ด ์‚ฌ์šฉํ•  ๊ฐ€์ƒ db (๋„์˜๋‹˜์ด ์—…๋ฐ์ดํŠธํ•˜๋Š” db์— ๋งž์ถฐ์„œ ๋ณ€๊ฒฝํ•˜๊ธฐ)
    โ”‚   โ”‚   โ”œโ”€โ”€ admin.json
    โ”‚   โ”‚   โ”œโ”€โ”€ flight.json
    โ”‚   โ”‚   โ”œโ”€โ”€ hotel.json
    โ”‚   โ”‚   โ”œโ”€โ”€ querylog.json
    โ”‚   โ”‚   โ”œโ”€โ”€ reservation.json
    โ”‚   โ”‚   โ””โ”€โ”€ user.json
    โ”‚   โ”œโ”€โ”€ processed
    โ”‚   โ””โ”€โ”€ raw
    โ”‚       โ””โ”€โ”€ // ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ 
    โ”œโ”€โ”€ evaluations ํด๋” 
    โ”œโ”€โ”€ main_preprocess.py // ์ „์ฒ˜๋ฆฌ ๋ฉ”์ธ ํ”Œ๋กœ์šฐ ์‹คํ–‰ ํด๋”
    โ”œโ”€โ”€ requirements.txt (์—ฌ๊ธฐ๋‹ค๊ฐ€ ์‹คํ–‰ ์‹œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก๋“ค ์ถ”๊ฐ€ํ•˜๊ธฐ)
    โ”œโ”€โ”€ main_service.py
    โ””โ”€โ”€ tests ํด๋”
        โ””โ”€โ”€ 
-- .env // ๊นƒ์— ์˜ฌ๋ฆฌ์ง€ ์•Š์„ ์˜ˆ์ • - ๊ฐ์ž ๋กœ์ปฌ์—์„œ ์ƒ์„ฑํ•ด์„œ ํ† ํฐ ๋ณ€์ˆ˜ ์ €์žฅํ•˜๊ธฐ

๊ตฌ์กฐ ์„ค๋ช…

src/app ํด๋”

  • preprocess ํด๋”
    • ์ž„๋ฒ ๋”ฉ, ๋ฒกํ„ฐ์Šคํ† ์–ด ์ƒ์„ฑ, ์ฒญํ‚น, ๋ฌธ์„œ ๋กœ๋“œ๋“ฑ ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋ฅผ ๋‹ด๋‹น
  • service ํด๋”
    • ์ฒด์ธ, ํ”„๋กฌํ”„ํŠธ, ๋ฆฌํŠธ๋ฆฌ๋ฒŒ ๋“ฑ์˜ ๊ฒ€์ƒ‰ ์˜์—ญ
  • init.py(๊ณต์šฉ)
    • ์—ญํ• :ย appย ํŒจํ‚ค์ง€๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ง•:ย ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํŒจํ‚ค์ง€๋กœ ์ธ์‹์‹œํ‚ต๋‹ˆ๋‹ค.
  • config.py(๊ณต์šฉ)
    • ์—ญํ• :ย ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฐ ์ƒ์ˆ˜ ๊ฐ’๋“ค์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์ฃผ์š” ๋‚ด์šฉ:
      • .envย ํŒŒ์ผ์„ ํ†ตํ•ดย OPENAI_API_KEY,ย VIRTUAL_DB_DIR,ย MODEL_NAMEย ๋“ฑ์˜ ์„ค์ •์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  • sql_executor.py (๊ณต์šฉ)
    • ์—ญํ• :ย ๊ฐ€์ƒ DB ๋ฐ์ดํ„ฐ์—์„œ SQL ์ฟผ๋ฆฌ ์‹คํ–‰์„ ํ‰๋‚ด ๋‚ด๋Š”(pseudo) ๋กœ์ง์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • ์ฃผ์š” ํ•จ์ˆ˜:
      • pseudo_execute_sql(query_key, db_data)
        • query_key์— ๋”ฐ๋ผ DB์˜ ํ˜ธํ…”, ํ•ญ๊ณตํŽธ, ์˜ˆ์•ฝ ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • sql_queries.py (๊ณต์šฉ)
    • ์—ญํ• :ย ์งˆ๋ฌธ ๋ถ„๋ฅ˜์— ๋”ฐ๋ฅธ SQL ์ฟผ๋ฆฌ ํ‚ค ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ์ฃผ์š” ๋‚ด์šฉ:
      • sql_query_mapย ๋”•์…”๋„ˆ๋ฆฌ
        • ์˜ˆ:ย "available_rooms": "SHOW_AVAILABLE_ROOMS",ย "customer_reservation": "SHOW_CUSTOMER_RESERVATION"ย ๋“ฑ.
  • virtual_db.py (๊ณต์šฉ)
    • ์—ญํ• :ย JSON ํŒŒ์ผ๋“ค์„ ๋กœ๋“œํ•˜์—ฌ ๊ฐ€์ƒ DB๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์ฃผ์š” ํ•จ์ˆ˜:
      • load_json_file(filename: str)
        • ๊ฐœ๋ณ„ JSON ํŒŒ์ผ์„ ์ฝ์–ด ํŒŒ์ด์ฌ ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
      • load_virtual_db()
        • ์—ฌ๋Ÿฌ JSON ํŒŒ์ผ์„ ์กฐํ•ฉํ•˜์—ฌ ๊ฐ€์ƒ DB(Hotel, Flight, Reservation, User ๋“ฑ)๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

src/data ํด๋”

  • db ํด๋”

    • ์—ญํ• :ย ๊ฐ€์ƒ DB ๋ฐ์ดํ„ฐ ํŒŒ์ผ๋“ค์ด ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
    • ๋„์˜๋‹˜์ด ์„ค๊ณ„ํ•œ ์Šคํ‚ค๋งˆ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์ฃผ์š” ํŒŒ์ผ:
      • admin.json: ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๊ด€๋ จ ์„ค์ •
      • flight.json: ํ•ญ๊ณตํŽธ ์ •๋ณด
      • hotel.json: ํ˜ธํ…” ์ •๋ณด
      • querylog.json: ์‚ฌ์šฉ์ž ์งˆ์˜ ๊ธฐ๋ก
      • reservation.json: ์˜ˆ์•ฝ ๋‚ด์—ญ ์ •๋ณด
      • user.json: ์‚ฌ์šฉ์ž ์ •๋ณด
  • processed ํด๋”

    • ์—ญํ• :ย ์ „์ฒ˜๋ฆฌ ํ›„ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ
  • raw ํด๋”

    • ์—ญํ• :ย ์›๋ณธ ๋ฌธ์„œ ํŒŒ์ผ๋“ค์ด ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
    • ํ˜ธํ…” ์˜ˆ์•ฝ ๊ด€๋ จ PDF ๋ฌธ์„œ ๋“ฑ

๊ธฐํƒ€ ์ฃผ์š” ํŒŒ์ผ

  • experiments ํด๋” (๊ณต์šฉ)
    • ์—ญํ• :ย ๋‹ค์–‘ํ•œ ์‹คํ—˜์  ์‹œ๋„๋‚˜ ํ”„๋กœํ† ํƒ€์ž… ์ฝ”๋“œ๊ฐ€ ์œ„์น˜ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค.
  • main_preprocess.py
    • ์—ญํ• :ย PDF ๋ฌธ์„œ๋ฅผ ๋กœ๋“œ, ํ…์ŠคํŠธ ์ฒญํฌ ๋ถ„ํ• , ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ ๋ฐ ๋ฒกํ„ฐ์Šคํ† ์–ด ์ €์žฅ ๊ณผ์ •์„ ์‹คํ–‰ํ•˜๋Š” ์ „์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. - ์ „์ฒ˜๋ฆฌ ๋ฉ”์ธ ํ”Œ๋กœ์šฐ ์‹คํ–‰ ํŒŒ์ผ
  • requirements.txt (๊ณต์šฉ)
    • ์—ญํ• :ย ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ Python ํŒจํ‚ค์ง€๋“ค์˜ ๋ชฉ๋ก์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • main_service.py
    • ์—ญํ• :ย ์ „์ฒ˜๋ฆฌ๋œ ๋ฒกํ„ฐ์Šคํ† ์–ด๋ฅผ ๋กœ๋“œํ•˜๊ณ , retriever์™€ ์ฒด์ธ๋“ค์„ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž ์งˆ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ตœ์ข… ๋‹ต๋ณ€์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฉ”์ธ ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. - ๊ฒ€์ƒ‰ ๋ฉ”์ธ ํ”Œ๋กœ์šฐ ์‹คํ–‰ ํŒŒ์ผ
  • tests (๊ณต์šฉ)
    • ์—ญํ• :ย ๊ฐ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์˜ˆ์‹œ
      • PDF ํŒŒ์ผ ๋กœ๋”ฉ ํ…Œ์ŠคํŠธ
      • ํ…์ŠคํŠธ ๋ถ„ํ•  ํ…Œ์ŠคํŠธ
      • ๊ฐ€์ƒ DB์˜ JSON ํŒŒ์ผ ๋กœ๋“œ ๋ฐ ํ•„์ˆ˜ ํ‚ค ๊ฒ€์ฆ

์„ค์น˜ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•

  1. ํŒŒ์ด์ฌ ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”
  • ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ

    python -m venv env
  • ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”

    • Windows

      env\Scripts\activate
    • macOS/Linux

      source env/bin/activate
  1. ํŒจํ‚ค์ง€ ์„ค์น˜

    • ๊ฐ€์ƒํ™˜๊ฒฝ์ด ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ cd src๋กœ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™ ํ›„, ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ ํŒจํ‚ค์ง€๋ฅผ ํ•œ ๋ฒˆ์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

      pip install -r requirements.txt
      
      // ํŒจํ‚ค์ง€ ์‚ญ์ œ
      pip uninstall -r requirements.txt -y
      

      ์ฐธ๊ณ ) numpy ๋ฒ„์ „ ์ถฉ๋Œ ๋•Œ๋ฌธ์—, numpy๋Š” ๋ณ„๋„๋กœ ๋ฒ„์ „์„ ์ง€์ •ํ•˜์—ฌ numpy==1.26.2๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

      ํ•„์ˆ˜

      • langchain
      • python-dotenv
      • langchain_community
      • langchain-openai
      • numpy==1.26.2
      • langsmith
      • openai

      ๋ณ€๋™ ๊ฐ€๋Šฅ

      • huggingface_hub (์ž„์‹œ๋กœ ํ—ˆ๊น…ํŽ˜์ด์‹œ ์ž„๋ฒ ๋”ฉ ์ง€์ •ํ•ด์„œ ์ถ”๊ฐ€ํ•จ)
      • pypdf
      • faiss-cpu
      • langchain-text
      • langchain-huggingface
  2. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

    • ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ(backed-ai/.env)์—ย .envย ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ ,ย OPENAI_API_KEYย ๋ฐย ๋žญ์Šค๋ฏธ์Šค ํ‚ค, VIRTUAL_DB_DIRย ๋“ฑ ํ•„์š”ํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    image

    .env ๊ตฌ์„ฑ ์˜ˆ์‹œ : ์ด์ค‘์—์„œ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ ๋“ฏ

  3. ์ „์ฒ˜๋ฆฌ

    • ์ „์ฒ˜๋ฆฌ ๋ฉ”์ธ ํ”Œ๋กœ์šฐ ์‹คํ–‰

      python main_preprocess.py
      
  4. ์‹œ์Šคํ…œ ์‹คํ–‰

    • ์„œ๋น„์Šค ๋ฉ”์ธ ํ”Œ๋กœ์šฐ ์‹คํ–‰

      python main_service.py
      

B. backend-ai ์ฝ”๋žฉ ์—ฐ๋™ ๊ฐ€์ด๋“œ

ํŒ€ ํ”„๋กœ์ ํŠธ ํ˜‘์—…์„ ์œ„ํ•ด, ์ฝ”๋žฉ์—์„œ jinjja-fun-trip ์กฐ์ง์˜ backend-ai ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํด๋ก (clone)ํ•˜๊ณ , ์›ํ•˜๋Š” ๋ธŒ๋žœ์น˜์— ์ฝ”๋“œ ์ปค๋ฐ‹ ๋ฐ ํ‘ธ์‰ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ฆฌ๋“œ๋ฏธ์ž…๋‹ˆ๋‹ค.

์ฃผ์˜

  • ํด๋ก ํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋‚ด ํŒŒ์ผ(backend-ai ํด๋” ๋‚ด ํŒŒ์ผ)

    ์‹ค์ œ ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ ์ˆ˜์ •์€ ํด๋ก ํ•œ backend-ai ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋‚ด๋ถ€์˜ ํŒŒ์ผ์—์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํŒ€์›์€ ์ž์‹ ์˜ ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ์ˆ˜์ •์„ ์œ„ํ•ด ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋‚ด์—์„œ ์ž‘์—…ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

  • ์—ฐ๋™์šฉ ์ฝ”๋žฉํŒŒ์ผ (backend-ai ํด๋” ๋‚ด ํŒŒ์ผ์ด ์•„๋‹Œ ์—ฐ๋™์„ ์œ„ํ•œ ๋ณ„๋„์˜ ํŒŒ์ผ)

    ์•„๋ž˜ ์ฝ”๋“œ๋Š” ์†Œ๊ฐœ๋œ ๊นƒํ—ˆ๋ธŒ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—ฐ๋™์šฉ.ipynb ํŒŒ์ผ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€์˜ ์—ฐ๋™ ๋ฐ ํ™˜๊ฒฝ ์„ค์ •์„ ์œ„ํ•œ ๋ณ„๋„์˜ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์„ ํ†ตํ•ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํด๋ก , ์ปค๋ฐ‹, ํ‘ธ์‰ฌ ๋ฐ Pull ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด ํŒŒ์ผ์€ ์ฝ”๋“œ ์ž‘์—…์„ ์œ„ํ•œ ์ฃผ์š” ํŒŒ์ผ์ด ์•„๋‹ˆ๋ฏ€๋กœ, ์ˆ˜์ • ์ž‘์—…์€ ํด๋ก ํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ง„ํ–‰ํ•ด ์ฃผ์„ธ์š”.

1. ์‚ฌ์ „ ์ค€๋น„์‚ฌํ•ญ

  • Google ๊ณ„์ • ๋ฐ Google Drive
    • ์ฝ”๋žฉ ์‚ฌ์šฉ์„ ์œ„ํ•ด Google Drive๋ฅผ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • GitHub ๊ณ„์ •
    • ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ ‘๊ทผ ๋ฐ ์ฝ”๋“œ ํ‘ธ์‰ฌ/ํ’€์„ ์œ„ํ•ด GitHub ๊ณ„์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • GitHub Personal Access Token ๋ฐœ๊ธ‰
    • ์•ˆ์ „ํ•œ ์ธ์ฆ์„ ์œ„ํ•ด ๊ฐœ์ธ ๊นƒํ—ˆ๋ธŒ ํ† ํฐ์ด ํ•„์š”ํ•˜๋ฉฐ, ์ด๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2. GitHub Personal Access Token (PAT) ๋ฐœ๊ธ‰ ๋ฐฉ๋ฒ•

  1. GitHub์— ๋กœ๊ทธ์ธํ•œ ํ›„, ์šฐ์ธก ์ƒ๋‹จ์˜ ํ”„๋กœํ•„ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๊ณ  Settings๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ขŒ์ธก ๋ฉ”๋‰ด์—์„œ Developer settings๋ฅผ ์„ ํƒํ•œ ํ›„, Personal access tokens > Tokens (classic) ๋ฉ”๋‰ด๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  3. Generate new token ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ƒˆ ํ† ํฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  4. ํ† ํฐ์— ์‚ฌ์šฉํ•  Note์™€ Expiration์„ ์„ค์ •ํ•˜๊ณ , ํ•„์š”ํ•œ scope (์˜ˆ: repo โ€“ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ ‘๊ทผ ๊ถŒํ•œ)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. (ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„๋™์•ˆ์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ํšจ ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. )
  5. Generate token์„ ํด๋ฆญํ•˜๋ฉด, ์ƒˆ๋กœ ๋ฐœ๊ธ‰๋œ ํ† ํฐ์„ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฐ ์‚ฌ์šฉ์ž ์„ค์ •

๋ณธ์ธ์˜ GitHub ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์•„๋ž˜์™€ ๊ฐ™์ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์…€์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import os
os.environ["GIT_TOKEN"] = "๋ฐœ๊ธ‰๋ฐ›์€_ํ† ํฐ๊ฐ’์„_์—ฌ๊ธฐ์—_์ž…๋ ฅ"
os.environ["GIT_USERNAME"] = "๋ณธ์ธ๊นƒํ—ˆ๋ธŒ์•„์ด๋””"
os.environ["GIT_EMAIL"] = "๋ณธ์ธ์ด๋ฉ”์ผ@example.com"

3.2. Git ์‚ฌ์šฉ์ž ์„ค์ •

์ฝ”๋žฉ ๋…ธํŠธ๋ถ ๋‚ด์—์„œ ์„ค์ •ํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์™€ Git ์„ค์ •์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

# ํ™˜๊ฒฝ๋ณ€์ˆ˜์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ
GIT_TOKEN = os.getenv("GIT_TOKEN")
GIT_USERNAME = os.getenv("GIT_USERNAME")
GIT_EMAIL = os.getenv("GIT_EMAIL")

# Git ์‚ฌ์šฉ์ž ์ •๋ณด ์„ค์ • 
!git config --global user.email "{GIT_EMAIL}"
!git config --global user.name "{GIT_USERNAME}"

4. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํด๋ก  ๋ฐ ์ž‘์—… ํ™˜๊ฒฝ ์„ค์ •

Google Drive๋ฅผ ๋งˆ์šดํŠธํ•˜๊ณ  ์ง€์ •ํ•œ ๊ฒฝ๋กœ์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํด๋ก ํ•˜๋Š” ์ „์ฒด ๊ณผ์ •์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

# Google Drive ๋งˆ์šดํŠธ
from google.colab import drive

ROOT = "/gdrive"
drive.mount(ROOT)

โ†’ Mounted at /gdrive

image
# Google Drive ๋‚ด์˜ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ ์„ค์ •
from os.path import join

MY_GOOGLE_DRIVE_PATH = 'My Drive/Colab Notebooks/'
PROJECT_PATH = join(ROOT, MY_GOOGLE_DRIVE_PATH)
print("PROJECT_PATH: ", PROJECT_PATH)

โ†’ PROJECT_PATH: /gdrive/My Drive/Colab Notebooks/

# GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ •๋ณด ์„ค์ •
GIT_ORGANIZATION = "jinjja-fun-trip"
GIT_REPOSITORY = "backend-ai"

# Git ํด๋ก ์šฉ URL ์ƒ์„ฑ
GIT_PATH = "https://" + GIT_TOKEN + "@github.com/" + GIT_ORGANIZATION + "/" + GIT_REPOSITORY + ".git"
print("GIT_PATH: ", GIT_PATH)
# ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ๋กœ ์ด๋™
%cd "{PROJECT_PATH}"

โ†’ /gdrive/My Drive/Colab Notebooks

image
# ์ด๋™ํ•œ ํ•ด๋‹น ๊ฒฝ๋กœ์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํด๋ก 
!git clone "{GIT_PATH}"
image

project path์— ๊นƒํ—ˆ๋ธŒ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€์‘๋˜๋Š” ํด๋” [backend-ai]๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ํด๋ก  ๋ฐ›์€ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™
%cd backend-ai/
image
# ๋ธŒ๋žœ์น˜ ํ™•์ธ ๋ฐ ์ƒํƒœ ์ฒดํฌ
!git branch
!git status
image
# ํด๋” ๊ตฌ์กฐ ํ™•์ธ์šฉ
!apt-get install tree
!tree

ํ•„์ˆ˜x : ํด๋”๊ตฌ์กฐ ํ™•์ธ์„ ์œ„ํ•ด tree๋ฅผ installํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

5. ์ฝ”๋“œ ์ปค๋ฐ‹, ํ‘ธ์‰ฌ ๋ฐ Pull ๋ฐ›๊ธฐ

5.1. ์ฝ”๋“œ ์ปค๋ฐ‹ ๋ฐ ํ‘ธ์‰ฌ

์ฝ”๋žฉ์— ํด๋ก ํ•œ ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. (backend-ai ํด๋” ๋‚ด ํŒŒ์ผ์—์„œ ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. )

image

์ž‘์—… ํ›„ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ GitHub์— ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด์„  ๊นƒํ—ˆ๋ธŒ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—ฐ๋™์šฉ.ipynb ํŒŒ์ผ์—์„œ GitHub ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์ปค๋ฐ‹, ํ‘ธ์‰ฌ ๋“ฑ์˜ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

# ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ์ถ”๊ฐ€
!git add .

# ์ปค๋ฐ‹ (์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ˆ˜์ • ๊ฐ€๋Šฅ)
!git commit -m "[chore] ์ปค๋ฐ‹ ํ…Œ์ŠคํŠธ"
image
# ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ‘ธ์‰ฌ
!git push
image

cf : ๋ธŒ๋žœ์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด !git checkout ๋ธŒ๋žœ์น˜๋ช… ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๊นƒํ—ˆ๋ธŒ์— ์ฝ”๋žฉ์—์„œ pushํ•œ ์ปค๋ฐ‹์ด ๋ฐ˜์˜๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

5.2. ์ตœ์‹  ๋ณ€๊ฒฝ์‚ฌํ•ญ Pull ๋ฐ›๊ธฐ

๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋ฐ˜์˜๋œ ์ตœ์‹  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

(+ ์ฝ”๋žฉ์ด ์•„๋‹Œ, backend-ai ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋น„์ฃผ์–ผ ์ŠคํŠœํ‹ฐ์˜ค ์ฝ”๋“œ ๋“ฑ์œผ๋กœ ์ž‘์—…ํ•ด์„œ ์›๊ฒฉ ์ €์žฅ์†Œ์— Pushํ•œ ์‚ฌํ•ญ๋„ pull ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. )

image
# ํ˜„์žฌ ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹  ๋ณ€๊ฒฝ์‚ฌํ•ญ Pull ๋ฐ›๊ธฐ
!git pull

# ๋˜๋Š”, ํŠน์ • ๋ธŒ๋žœ์น˜์—์„œ Pull ๋ฐ›์œผ๋ ค๋ฉด:
!git pull origin ๋ธŒ๋žœ์น˜๋ช…
image

๊นƒํ—ˆ๋ธŒ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—ฐ๋™์šฉ.ipynb ํŒŒ์ผ์—์„œ Pull ๋ช…๋ ์„ ์‹คํ–‰ํ•œ ํ›„์— ์ฝ”๋žฉ ์ƒ์˜ backend-ai ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•˜๋ฉด, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋ฐ˜์˜๋œ ์ตœ์‹  ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

About

Backend service dedicated to RAG chatbot functionalities using Langchain and OpenAI API

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages