AI์ LangChain์ ํ์ฉํ ํ๊ตญ ์ฝ๋ฌผ ์ ๋ณด ๊ฒ์ ๋ฐ ๋ณต์ฝ ๊ด๋ฆฌ ์์คํ ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ฝ๋ฌผ์ ๋ํ ์ง๋ฌธ์ ํ๋ฉด AI๊ฐ ์ฝ๋ฌผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฒ์ํ์ฌ ์ ํํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ , ๊ฐ์ธ๋ณ ๋ณต์ฝ ์ผ์ ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์ฝ๋ฌผ ํจ๋ฅ, ์ฉ๋ฒ, ์ฃผ์์ฌํญ, ๋ถ์์ฉ ๋ฑ ์์ธ ์ ๋ณด ์ ๊ณต
- ์ฝ๋ฌผ ๊ฐ ์ํธ์์ฉ ์ ๋ณด ๊ฒ์
- ์์ฐ์ด๋ก ์ฝ๋ฌผ ๊ด๋ จ ์ง๋ฌธ์ ๋ต๋ณ
- ๊ฐ์ธ๋ณ ๋ณต์ฝ ์ฒดํฌ๋ฆฌ์คํธ ์์ฑ
- ์์ /์ํ ๋ณต์ฉ ์๊ฐ ์ค์
- ์ฃผ๊ฐ ๋ณต์ฝ ์ผ์ ์บ๋ฆฐ๋ ์์ฑ
- ๋ณต์ฝ ์๋ฆผ ๋ฐ ์ถ์
- 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 # ํ๋ก์ ํธ ์ ์ฒด ๊ฐ์
- ํ๊ฒฝ๋ณ์ ๋ก๋ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ๊ด๋ฆฌ
- OpenAI, Qdrant, Supabase ์ฐ๊ฒฐ ์ ๋ณด
- UI ์ค์ , ํ๋กฌํํธ ํ ํ๋ฆฟ, ์๋ฌ ๋ฉ์์ง ์ ์
- OpenAI GPT ๋ชจ๋ธ ๋ฐ ์๋ฒ ๋ฉ ์ด๊ธฐํ
- Qdrant ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ฐ ๊ฒ์
- LangChain ์์ด์ ํธ ๋ฐ QA ์ฒด์ธ ์์ฑ
- ์ฝ๋ฌผ ์ ๋ณด ๊ฒ์ ๋๊ตฌ ๊ตฌํ
- ์ฌ์ฉ์ ์ ๋ ฅ ์๋ ๋ถ๋ฅ (์ถ๊ฐ/์กฐํ/์์ /์ญ์ /์ง๋ฌธ/์ผ์ )
- ๋ณต์ฝ ์ฒดํฌ๋ฆฌ์คํธ CRUD ์์
- AI ์์ด์ ํธ๋ฅผ ํตํ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ
- ๋ณต์ฝ ์ผ์ ์์ฑ ๋ฐ ๊ด๋ฆฌ
- Streamlit ์ธ์ ์ํ ๊ด๋ฆฌ
- ์ฌ์ด๋๋ฐ, ์ฑํ ์ธํฐํ์ด์ค, ํผ UI ๋ ๋๋ง
- ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ์์คํ ์ด๊ธฐํ
- ๋ฉ์์ง ํ์คํ ๋ฆฌ ๊ด๋ฆฌ
- AI ์๋ต์์ ์บ๋ฆฐ๋ JSON ํ์ฑ
- ์ฃผ๊ฐ ๋ณต์ฝ ์ผ์ ์ด๋ฒคํธ ์์ฑ
- iCal ํ์ ์บ๋ฆฐ๋ ๋ด๋ณด๋ด๊ธฐ
- ์๊ฐ๋ ์ฒ๋ฆฌ ๋ฐ ๋ ์ง ๋ณํ
- PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ด๋ฆฌ
- ์ฌ์ฉ์ ๋ฐ ๋ณต์ฝ ์ ๋ณด CRUD ์์
- Supabase ์ฐ๋ ๋ฐ ๋ฐ์ดํฐ ์์์ฑ
- Python 3.8+: ๋ฉ์ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- LangChain: AI ์ฒด์ธ ๋ฐ ๋๊ตฌ ๊ด๋ฆฌ
- OpenAI GPT: ์์ฐ์ด ์ฒ๋ฆฌ ๋ฐ ์๋ต ์์ฑ
- Qdrant: ๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค (์ฝ๋ฌผ ์ ๋ณด ๊ฒ์)
- Streamlit: ์น ์ธํฐํ์ด์ค
- HTML/CSS: ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์คํ์ผ๋ง
- PostgreSQL: ์ฌ์ฉ์ ์ ๋ณด ๋ฐ ๋ณต์ฝ ๋ฐ์ดํฐ ์ ์ฅ
- Supabase: ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค
- OpenAI Embeddings: ํ ์คํธ ๋ฒกํฐํ
- RAG (Retrieval-Augmented Generation): ์ ํํ ์ ๋ณด ๊ฒ์ ๋ฐ ์์ฑ
# ์ ์ฅ์ ํด๋ก
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- "ํ์ด๋ ๋์ ํจ๋ฅ์ด ๋ญ๊ฐ์?"
- "์ํ๋ฆฐ๊ณผ ํจ๊ป ๋ณต์ฉํ๋ฉด ์ ๋๋ ์ฝ์ด ์๋์?"
- "์์ธํธ์๋ฏธ๋ ธํ์ ๋ถ์์ฉ์?"
- "ํ์์ฝ ์ฃผ์์ฌํญ์ด ๊ถ๊ธํด์"
- ์ฌ์ฉ์ ๊ณ์ ์์ฑ
- ๋ณต์ฉ ์ค์ธ ์ฝ๋ฌผ ์ ๋ณด ์ ๋ ฅ
- ์์ /์ํ ๋ณต์ฉ ์๊ฐ ์ค์
- ์ฃผ๊ฐ ๋ณต์ฝ ์ผ์ ํ์ธ
- ๋ณต์ฝ ์ผ์ ์ iCal ํ์์ผ๋ก ๋ด๋ณด๋ด๊ธฐ
- ๊ฐ์ธ ์บ๋ฆฐ๋ ์ฑ์ ๋๊ธฐํ
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);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
);- ํ๊ตญ ์์ฝ์ฒ ๊ณต์ ์ฝ๋ฌผ ์ ๋ณด ํ์ฉ
- AI ๊ธฐ๋ฐ ์์ฐ์ด ๊ฒ์์ผ๋ก ์ฌ์ฉ์ ํธ์์ฑ ํฅ์
- ์ต์ ์ฝ๋ฌผ ์ ๋ณด ์๋ ์ ๋ฐ์ดํธ
- ์ฌ์ฉ์๋ณ ๋ง์ถคํ ๋ณต์ฝ ์ผ์
- ๋ณต์ฉ ์๊ฐ ์๋ฆผ ๋ฐ ์ถ์
- ๋ณต์ฝ ์ด๋ ฅ ๊ด๋ฆฌ
- ๋ณต์ฝ ์ ๋ณด๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌ
- ์์ฌ ์๋ด ์ ์ฐธ๊ณ ์๋ฃ ์ ๊ณต
- ๋ณต์ฉ ์ค ์ด์ ๋ฐ์ ๊ธฐ๋ก
- ์ด ์ ์ฅ์๋ฅผ ํฌํฌํฉ๋๋ค
- ์๋ก์ด ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค (
git checkout -b feature/amazing-feature) - ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํฉ๋๋ค (
git commit -m 'Add some amazing feature') - ๋ธ๋์น์ ํธ์ํฉ๋๋ค (
git push origin feature/amazing-feature) - Pull Request๋ฅผ ์์ฑํฉ๋๋ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
์ค์: ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ต์ก ๋ฐ ์ฐธ๊ณ ๋ชฉ์ ์ผ๋ก๋ง ์ ๊ณต๋ฉ๋๋ค. ์ํ์ ์กฐ์ธ์ด๋ ์ง๋จ์ ๋์ฒดํ ์ ์์ต๋๋ค. ์ฝ๋ฌผ ๋ณต์ฉ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๊ฒฐ์ ์ ๋ฐ๋์ ์์ฌ๋ ์ฝ์ฌ์ ์์ํ์๊ธฐ ๋ฐ๋๋๋ค.
ํ๋ก์ ํธ์ ๋ํ ์ง๋ฌธ์ด๋ ์ ์์ฌํญ์ด ์์ผ์๋ฉด ์ด์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
YBIGTA 26๊ธฐ ์ฌ๋ฆ๋ฐฉํ ํ๋ก์ ํธ