Skip to content

YBIGTA/26th-summer-MedicationAgent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’Š Medication Agent - AI ๊ธฐ๋ฐ˜ ์•ฝ๋ฌผ ์ •๋ณด ์ฑ—๋ด‡

AI์™€ LangChain์„ ํ™œ์šฉํ•œ ํ•œ๊ตญ ์•ฝ๋ฌผ ์ •๋ณด ๊ฒ€์ƒ‰ ๋ฐ ๋ณต์•ฝ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์•ฝ๋ฌผ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์„ ํ•˜๋ฉด AI๊ฐ€ ์•ฝ๋ฌผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๊ฐœ์ธ๋ณ„ ๋ณต์•ฝ ์ผ์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

1. AI ์•ฝ๋ฌผ ์ •๋ณด ๊ฒ€์ƒ‰

  • ์•ฝ๋ฌผ ํšจ๋Šฅ, ์šฉ๋ฒ•, ์ฃผ์˜์‚ฌํ•ญ, ๋ถ€์ž‘์šฉ ๋“ฑ ์ƒ์„ธ ์ •๋ณด ์ œ๊ณต
  • ์•ฝ๋ฌผ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ ์ •๋ณด ๊ฒ€์ƒ‰
  • ์ž์—ฐ์–ด๋กœ ์•ฝ๋ฌผ ๊ด€๋ จ ์งˆ๋ฌธ์— ๋‹ต๋ณ€

2. ๋ณต์•ฝ ์ผ์ • ๊ด€๋ฆฌ

  • ๊ฐœ์ธ๋ณ„ ๋ณต์•ฝ ์ฒดํฌ๋ฆฌ์ŠคํŠธ ์ƒ์„ฑ
  • ์‹์ „/์‹ํ›„ ๋ณต์šฉ ์‹œ๊ฐ„ ์„ค์ •
  • ์ฃผ๊ฐ„ ๋ณต์•ฝ ์ผ์ • ์บ˜๋ฆฐ๋” ์ƒ์„ฑ
  • ๋ณต์•ฝ ์•Œ๋ฆผ ๋ฐ ์ถ”์ 

3. ๋ชจ๋“ˆํ™”๋œ ์•„ํ‚คํ…์ฒ˜

  • config.py: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • ๋ฐ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ด€๋ฆฌ
  • langchain_agent.py: AI ์—์ด์ „ํŠธ ๋ฐ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ
  • medication_tools.py: ๋ณต์•ฝ ๊ด€๋ฆฌ ๋„๊ตฌ ๋ฐ ์ฟผ๋ฆฌ ๋ถ„๋ฅ˜
  • ui_components.py: Streamlit UI ์ปดํฌ๋„ŒํŠธ ๋ฐ ์„ธ์…˜ ๊ด€๋ฆฌ
  • calendar_utils.py: ์บ˜๋ฆฐ๋” ์ƒ์„ฑ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ ๊ธฐ๋Šฅ
  • medication_db.py: PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™

๐Ÿ—๏ธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๐Ÿ“ Medication Agent
โ”œโ”€โ”€ ๐Ÿ“ langchain_version/          # LangChain ๊ธฐ๋ฐ˜ ๊ตฌํ˜„
โ”‚   โ”œโ”€โ”€ app.py                     # ๋ฉ”์ธ Streamlit ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
โ”‚   โ”œโ”€โ”€ config.py                  # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • ๋ฐ ์ƒ์ˆ˜
โ”‚   โ”œโ”€โ”€ langchain_agent.py         # LangChain ์—์ด์ „ํŠธ ๋ฐ ๋„๊ตฌ ๊ด€๋ฆฌ
โ”‚   โ”œโ”€โ”€ medication_db.py           # PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ
โ”‚   โ”œโ”€โ”€ medication_tools.py        # ๋ณต์•ฝ ๊ด€๋ฆฌ ๋„๊ตฌ ๋ฐ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ
โ”‚   โ”œโ”€โ”€ ui_components.py           # Streamlit UI ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”œโ”€โ”€ calendar_utils.py          # ์บ˜๋ฆฐ๋” ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜
โ”‚   โ”œโ”€โ”€ requirements.txt           # Python ์˜์กด์„ฑ
โ”‚   โ””โ”€โ”€ README.md                  # LangChain ๋ฒ„์ „ ์ƒ์„ธ ์„ค๋ช…
โ”œโ”€โ”€ ๐Ÿ“ fastapi_version/            # FastAPI ๊ธฐ๋ฐ˜ ๊ตฌํ˜„ (ํ–ฅํ›„ ์ถ”๊ฐ€ ์˜ˆ์ •)
โ”œโ”€โ”€ ๐Ÿ“„ all_drug_data.json          # ํ•œ๊ตญ ์•ฝ๋ฌผ ์ •๋ณด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
โ””โ”€โ”€ ๐Ÿ“„ README.md                   # ํ”„๋กœ์ ํŠธ ์ „์ฒด ๊ฐœ์š”

๐Ÿ“‹ ๋ชจ๋“ˆ๋ณ„ ์ƒ์„ธ ๊ธฐ๋Šฅ

config.py

  • ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋กœ๋“œ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • ๊ด€๋ฆฌ
  • OpenAI, Qdrant, Supabase ์—ฐ๊ฒฐ ์ •๋ณด
  • UI ์„ค์ •, ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ, ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ •์˜

langchain_agent.py

  • OpenAI GPT ๋ชจ๋ธ ๋ฐ ์ž„๋ฒ ๋”ฉ ์ดˆ๊ธฐํ™”
  • Qdrant ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋ฐ ๊ฒ€์ƒ‰
  • LangChain ์—์ด์ „ํŠธ ๋ฐ QA ์ฒด์ธ ์ƒ์„ฑ
  • ์•ฝ๋ฌผ ์ •๋ณด ๊ฒ€์ƒ‰ ๋„๊ตฌ ๊ตฌํ˜„

medication_tools.py

  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์˜๋„ ๋ถ„๋ฅ˜ (์ถ”๊ฐ€/์กฐํšŒ/์ˆ˜์ •/์‚ญ์ œ/์งˆ๋ฌธ/์ผ์ •)
  • ๋ณต์•ฝ ์ฒดํฌ๋ฆฌ์ŠคํŠธ CRUD ์ž‘์—…
  • AI ์—์ด์ „ํŠธ๋ฅผ ํ†ตํ•œ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ
  • ๋ณต์•ฝ ์ผ์ • ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ

ui_components.py

  • Streamlit ์„ธ์…˜ ์ƒํƒœ ๊ด€๋ฆฌ
  • ์‚ฌ์ด๋“œ๋ฐ”, ์ฑ„ํŒ… ์ธํ„ฐํŽ˜์ด์Šค, ํผ UI ๋ Œ๋”๋ง
  • ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ์‹œ์Šคํ…œ ์ดˆ๊ธฐํ™”
  • ๋ฉ”์‹œ์ง€ ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ

calendar_utils.py

  • AI ์‘๋‹ต์—์„œ ์บ˜๋ฆฐ๋” JSON ํŒŒ์‹ฑ
  • ์ฃผ๊ฐ„ ๋ณต์•ฝ ์ผ์ • ์ด๋ฒคํŠธ ์ƒ์„ฑ
  • iCal ํ˜•์‹ ์บ˜๋ฆฐ๋” ๋‚ด๋ณด๋‚ด๊ธฐ
  • ์‹œ๊ฐ„๋Œ€ ์ฒ˜๋ฆฌ ๋ฐ ๋‚ ์งœ ๋ณ€ํ™˜

medication_db.py

  • PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ด€๋ฆฌ
  • ์‚ฌ์šฉ์ž ๋ฐ ๋ณต์•ฝ ์ •๋ณด CRUD ์ž‘์—…
  • Supabase ์—ฐ๋™ ๋ฐ ๋ฐ์ดํ„ฐ ์˜์†์„ฑ

๐Ÿ”ง ๊ธฐ์ˆ  ์Šคํƒ

Backend

  • Python 3.8+: ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • LangChain: AI ์ฒด์ธ ๋ฐ ๋„๊ตฌ ๊ด€๋ฆฌ
  • OpenAI GPT: ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ๋ฐ ์‘๋‹ต ์ƒ์„ฑ
  • Qdrant: ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (์•ฝ๋ฌผ ์ •๋ณด ๊ฒ€์ƒ‰)

Frontend

  • Streamlit: ์›น ์ธํ„ฐํŽ˜์ด์Šค
  • HTML/CSS: ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ์Šคํƒ€์ผ๋ง

Database

  • PostgreSQL: ์‚ฌ์šฉ์ž ์ •๋ณด ๋ฐ ๋ณต์•ฝ ๋ฐ์ดํ„ฐ ์ €์žฅ
  • Supabase: ํด๋ผ์šฐ๋“œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค

AI/ML

  • OpenAI Embeddings: ํ…์ŠคํŠธ ๋ฒกํ„ฐํ™”
  • RAG (Retrieval-Augmented Generation): ์ •ํ™•ํ•œ ์ •๋ณด ๊ฒ€์ƒ‰ ๋ฐ ์ƒ์„ฑ

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

LangChain ๋ฒ„์ „ ์‹คํ–‰

# ์ €์žฅ์†Œ ํด๋ก 
git clone [repository-url]

# ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™”
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# ์˜์กด์„ฑ ์„ค์น˜
pip install -r langchain_version/requirements.txt

# ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • (.env ํŒŒ์ผ ์ƒ์„ฑ)
QDRANT_URL=your_qdrant_url
QDRANT_API_KEY=your_qdrant_api_key
OPENAI_API_KEY=your_openai_api_key
SUPABASE_DB_URL=your_supabase_db_url

# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
cd langchain_version
streamlit run app.py

๐Ÿ“ฑ ์‚ฌ์šฉ๋ฒ•

1. ์•ฝ๋ฌผ ์ •๋ณด ๊ฒ€์ƒ‰

  • "ํƒ€์ด๋ ˆ๋†€์˜ ํšจ๋Šฅ์ด ๋ญ”๊ฐ€์š”?"
  • "์™€ํŒŒ๋ฆฐ๊ณผ ํ•จ๊ป˜ ๋ณต์šฉํ•˜๋ฉด ์•ˆ ๋˜๋Š” ์•ฝ์ด ์žˆ๋‚˜์š”?"
  • "์•„์„ธํŠธ์•„๋ฏธ๋…ธํŽœ์˜ ๋ถ€์ž‘์šฉ์€?"
  • "ํ˜ˆ์••์•ฝ ์ฃผ์˜์‚ฌํ•ญ์ด ๊ถ๊ธˆํ•ด์š”"

2. ๋ณต์•ฝ ์ผ์ • ๊ด€๋ฆฌ

  • ์‚ฌ์šฉ์ž ๊ณ„์ • ์ƒ์„ฑ
  • ๋ณต์šฉ ์ค‘์ธ ์•ฝ๋ฌผ ์ •๋ณด ์ž…๋ ฅ
  • ์‹์ „/์‹ํ›„ ๋ณต์šฉ ์‹œ๊ฐ„ ์„ค์ •
  • ์ฃผ๊ฐ„ ๋ณต์•ฝ ์ผ์ • ํ™•์ธ

3. ์บ˜๋ฆฐ๋” ๋‚ด๋ณด๋‚ด๊ธฐ

  • ๋ณต์•ฝ ์ผ์ •์„ iCal ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ
  • ๊ฐœ์ธ ์บ˜๋ฆฐ๋” ์•ฑ์— ๋™๊ธฐํ™”

๐Ÿ” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ

Users ํ…Œ์ด๋ธ”

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

User Medications ํ…Œ์ด๋ธ”

CREATE TABLE user_medications (
    id SERIAL PRIMARY KEY,
    user_id INTEGER REFERENCES users(id),
    medication_name VARCHAR(200) NOT NULL,
    morning BOOLEAN DEFAULT FALSE,
    lunch BOOLEAN DEFAULT FALSE,
    dinner BOOLEAN DEFAULT FALSE,
    before_meal BOOLEAN DEFAULT FALSE,
    after_meal BOOLEAN DEFAULT FALSE,
    start_date DATE NOT NULL,
    end_date DATE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

1. ์ •ํ™•ํ•œ ์•ฝ๋ฌผ ์ •๋ณด ์ œ๊ณต

  • ํ•œ๊ตญ ์‹์•ฝ์ฒ˜ ๊ณต์‹ ์•ฝ๋ฌผ ์ •๋ณด ํ™œ์šฉ
  • AI ๊ธฐ๋ฐ˜ ์ž์—ฐ์–ด ๊ฒ€์ƒ‰์œผ๋กœ ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ ํ–ฅ์ƒ
  • ์ตœ์‹  ์•ฝ๋ฌผ ์ •๋ณด ์ž๋™ ์—…๋ฐ์ดํŠธ

2. ๊ฐœ์ธํ™”๋œ ๋ณต์•ฝ ๊ด€๋ฆฌ

  • ์‚ฌ์šฉ์ž๋ณ„ ๋งž์ถคํ˜• ๋ณต์•ฝ ์ผ์ •
  • ๋ณต์šฉ ์‹œ๊ฐ„ ์•Œ๋ฆผ ๋ฐ ์ถ”์ 
  • ๋ณต์•ฝ ์ด๋ ฅ ๊ด€๋ฆฌ

3. ์˜๋ฃŒ์ง„๊ณผ์˜ ์†Œํ†ต ์ง€์›

  • ๋ณต์•ฝ ์ •๋ณด๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌ
  • ์˜์‚ฌ ์ƒ๋‹ด ์‹œ ์ฐธ๊ณ  ์ž๋ฃŒ ์ œ๊ณต
  • ๋ณต์šฉ ์ค‘ ์ด์ƒ ๋ฐ˜์‘ ๊ธฐ๋ก

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

  1. ์ด ์ €์žฅ์†Œ๋ฅผ ํฌํฌํ•ฉ๋‹ˆ๋‹ค
  2. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค (git checkout -b feature/amazing-feature)
  3. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค (git commit -m 'Add some amazing feature')
  4. ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œํ•ฉ๋‹ˆ๋‹ค (git push origin feature/amazing-feature)
  5. Pull Request๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค

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

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

โš ๏ธ ๋ฉด์ฑ… ์กฐํ•ญ

์ค‘์š”: ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ต์œก ๋ฐ ์ฐธ๊ณ  ๋ชฉ์ ์œผ๋กœ๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์˜ํ•™์  ์กฐ์–ธ์ด๋‚˜ ์ง„๋‹จ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•ฝ๋ฌผ ๋ณต์šฉ๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒฐ์ •์€ ๋ฐ˜๋“œ์‹œ ์˜์‚ฌ๋‚˜ ์•ฝ์‚ฌ์™€ ์ƒ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๐Ÿ“ž ๋ฌธ์˜

ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด๋‚˜ ์ œ์•ˆ์‚ฌํ•ญ์ด ์žˆ์œผ์‹œ๋ฉด ์ด์Šˆ๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ์„ธ์š”.


YBIGTA 26๊ธฐ ์—ฌ๋ฆ„๋ฐฉํ•™ ํ”„๋กœ์ ํŠธ

About

26th-summer-MedicationAgent

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages