Skip to content

YBIGTA/26th-conference-Plantmate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌱 식물 친ꡬ AI - Plant Persona Agent

LangGraph와 OpenAIλ₯Ό ν™œμš©ν•œ 터미널 기반 식물 페λ₯΄μ†Œλ‚˜ AI μ±„νŒ…λ΄‡μž…λ‹ˆλ‹€. μ‹€μ œ 식물과 λŒ€ν™”ν•˜λŠ” κ²ƒμ²˜λŸΌ μžμ—°μŠ€λŸ½κ³  μž¬λ―ΈμžˆλŠ” λŒ€ν™”λ₯Ό ν„°λ―Έλ„μ—μ„œ λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€!

✨ μ£Όμš” κΈ°λŠ₯

🧠 LangGraph 기반 AI Orchestrator

  • AI 기반 질의 뢄석: GPTκ°€ μ‚¬μš©μž μ§ˆλ¬Έμ„ μ΄ν•΄ν•˜κ³  ν•„μš”ν•œ 도ꡬλ₯Ό μ§€λŠ₯적으둜 선택
  • 동적 μ›Œν¬ν”Œλ‘œμš°: AI νŒλ‹¨μ— λ”°λ₯Έ μœ μ—°ν•œ 도ꡬ μ‘°ν•© 및 μ‹€ν–‰
  • μΆ”λ‘  κ³Όμ • 제곡: AI의 도ꡬ 선택 μ΄μœ μ™€ 신뒰도 점수 제곡

πŸ”§ Tool 1: ν™˜κ²½ 데이터 뢄석기

  • μ‹€μ‹œκ°„ ν™˜κ²½ λͺ¨λ‹ˆν„°λ§: μ˜¨λ„, μŠ΅λ„, ν† μ–‘μˆ˜λΆ„, 광도 데이터 뢄석
  • 건강 μƒνƒœ 평가: ν™˜κ²½ 쑰건을 λ°”νƒ•μœΌλ‘œ 식물 건강도 μžλ™ 평가
  • λ§žμΆ€ν˜• ꢌμž₯사항: ν˜„μž¬ μƒνƒœμ— λ”°λ₯Έ ꡬ체적인 관리 μ‘°μ–Έ 제곡

🌐 Tool 2: μ›Ή 검색 μ—”μ§„

  • μ΅œμ‹  정보 검색: 식물 κ΄€λ ¨ μ΅œμ‹  λ‰΄μŠ€, νŠΈλ Œλ“œ, 연ꡬ κ²°κ³Ό 검색
  • μ‹€μ‹œκ°„ 정보 μ—…λ°μ΄νŠΈ: μ‹œμŠ€ν…œ 내뢀에 μ—†λŠ” μ΅œμ‹  정보 제곡
  • λ‹€μ–‘ν•œ μ†ŒμŠ€ ν™œμš©: μ›Ήμƒμ˜ λ‹€μ–‘ν•œ 식물 관리 정보 μˆ˜μ§‘

πŸ“š Tool 3: 식물 지식 RAG μ‹œμŠ€ν…œ

  • μ „λ¬Έ 지식 λ°μ΄ν„°λ² μ΄μŠ€: 식물 백과사전, 관리 κ°€μ΄λ“œ λ“± 체계적인 정보 μ €μž₯
  • 벑터 μœ μ‚¬λ„ 검색: TF-IDF 기반 의미둠적 κ²€μƒ‰μœΌλ‘œ κ΄€λ ¨ 정보 μΆ”μΆœ
  • μΉ΄ν…Œκ³ λ¦¬λ³„ λΆ„λ₯˜: 꽃, λ‹€μœ‘μ‹λ¬Ό, ν—ˆλΈŒ, 관엽식물 λ“± 체계적인 정보 관리

🎭 식물 페λ₯΄μ†Œλ‚˜

  • μ‚΄μ•„μžˆλŠ” 식물 μ—­ν• : 1인칭 μ‹œμ μ—μ„œ 감정과 μƒνƒœλ₯Ό ν‘œν˜„
  • ν’λΆ€ν•œ 감정 ν‘œν˜„: 기쁨, κ±±μ •, 만쑱 λ“± λ‹€μ–‘ν•œ 감정을 이λͺ¨μ§€λ‘œ ν‘œν˜„
  • μΉœκ·Όν•œ λŒ€ν™” μŠ€νƒ€μΌ: 반말과 애ꡐλ₯Ό ν†΅ν•œ μžμ—°μŠ€λŸ¬μš΄ μ†Œν†΅

πŸ’¬ 터미널 μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€

  • μ‹€μ‹œκ°„ λŒ€ν™”: 터미널 기반 μžμ—°μŠ€λŸ¬μš΄ μ±„νŒ… ν™˜κ²½
  • ν™˜κ²½ 데이터 톡합: μ‹€μ‹œκ°„ ν™˜κ²½ 정보와 ν•¨κ»˜ λŒ€ν™”
  • 건강 λͺ¨λ‹ˆν„°λ§: 식물 μƒνƒœμ™€ ꢌμž₯사항을 ν…μŠ€νŠΈλ‘œ 제곡

πŸ› οΈ 기술 μŠ€νƒ

  • AI Framework: LangGraph, LangChain
  • LLM: OpenAI GPT-3.5-turbo
  • Interface: Terminal-based Chat
  • Data Processing: Pandas, NumPy
  • Web Scraping: Requests, BeautifulSoup4
  • Vector Search: Scikit-learn, TF-IDF
  • Environment: Python 3.8+

πŸ“Š μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜

μ‚¬μš©μž 질의
    ↓
🧠 Orchestrator (LangGraph Agent)
    ↓
질의 뢄석 β†’ ν•„μš”ν•œ 도ꡬ κ²°μ •
    ↓               ↓
볡합 μ›Œν¬ν”Œλ‘œμš°    단일 도ꡬ 호좜
    ↓               ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ πŸ”§ Tool 1: ν™˜κ²½ 데이터 뢄석     β”‚
β”‚ 🌐 Tool 2: μ›Ή 검색 μ—”μ§„        β”‚  
β”‚ πŸ“š Tool 3: 식물 지식 RAG       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
    ↓
정보 톡합 및 뢄석
    ↓
🎭 식물 페λ₯΄μ†Œλ‚˜ 응닡 생성
    ↓
πŸ’¬ 터미널 μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€

πŸš€ μ„€μΉ˜ 및 μ‹€ν–‰

1. ν”„λ‘œμ νŠΈ 클둠

git clone <repository-url>
cd real

2. κ°€μƒν™˜κ²½ μ„€μ •

python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

3. νŒ¨ν‚€μ§€ μ„€μΉ˜

pip install -r requirements.txt

4. ν™˜κ²½λ³€μˆ˜ μ„€μ •

.env νŒŒμΌμ„ μƒμ„±ν•˜κ³  OpenAI API ν‚€λ₯Ό μΆ”κ°€ν•˜μ„Έμš”:

OPENAI_API_KEY=your_openai_api_key_here

5. 데이터 μ€€λΉ„

data/ 폴더에 λ‹€μŒ Excel νŒŒμΌλ“€μ΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ„Έμš”:

  • Environment Temperature.xlsx
  • Environment Humidity.xlsx
  • Environment Light Intensity.xlsx
  • Soil Moisture.xlsx

6. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰

터미널 μ±„νŒ… (메인)

python chat_agent.py

데이터 뢄석 ν…ŒμŠ€νŠΈ

python tools/data_analyzer.py

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

real/
β”œβ”€β”€ data/                           # ν™˜κ²½ 데이터 파일
β”‚   β”œβ”€β”€ Environment Temperature.xlsx
β”‚   β”œβ”€β”€ Environment Humidity.xlsx
β”‚   β”œβ”€β”€ Environment Light Intensity.xlsx
β”‚   └── Soil Moisture.xlsx
β”œβ”€β”€ rag/                           # RAG μ‹œμŠ€ν…œ 파일
β”œβ”€β”€ tools/                         # 도ꡬ λͺ¨λ“ˆ
β”‚   β”œβ”€β”€ data_analyzer.py          # Tool 1: ν™˜κ²½ 데이터 뢄석기
β”‚   β”œβ”€β”€ web_search_tool.py        # Tool 2: μ›Ή 검색 μ—”μ§„
β”‚   └── dummy_rag_tool.py         # Tool 3: 더미 RAG μ‹œμŠ€ν…œ
β”œβ”€β”€ persona.py                   # 식물 페λ₯΄μ†Œλ‚˜ λͺ¨λ“ˆ
β”œβ”€β”€ plant_orchestrator.py        # 도ꡬ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ λͺ¨λ“ˆ
β”œβ”€β”€ chat_agent.py               # 메인 μ±„νŒ… μ—μ΄μ „νŠΈ (μ‹€ν–‰)
β”œβ”€β”€ requirements.txt             # Python νŒ¨ν‚€μ§€ μ˜μ‘΄μ„±
β”œβ”€β”€ .env.example                 # ν™˜κ²½λ³€μˆ˜ μ˜ˆμ‹œ
└── README.md                    # ν”„λ‘œμ νŠΈ λ¬Έμ„œ
```## 🌟 μ‚¬μš© μ˜ˆμ‹œ

### 일반적인 λŒ€ν™”

πŸ‘€ μ‚¬μš©μž: "μ•ˆλ…•! 였늘 기뢄이 μ–΄λ•Œ?" 🌱 식물: "μ•ˆλ…•! μ˜€λŠ˜μ€ 기뢄이 μ’‹μ•„! 🌟 햇살도 λ”°λœ»ν•˜κ²Œ λ“€μ–΄μ˜€κ³  μžˆμ–΄μ„œ μžŽμ‚¬κ·€λ“€μ΄ 반짝반짝 λΉ›λ‚˜κ³  μžˆμ–΄ ✨"


### ν™˜κ²½ μƒνƒœ 문의 (Tool 1 ν™œμš©)

πŸ‘€ μ‚¬μš©μž: "μ§€κΈˆ μƒνƒœκ°€ μ–΄λ•Œ?" 🌱 식물: "μ§€κΈˆ λ‚΄ μƒνƒœλ₯Ό ν™•μΈν•΄λ³Όκ²Œ! πŸ” 음... μ˜¨λ„λŠ” 22.5Β°C둜 λ”± μ’‹κ³ , μŠ΅λ„λ„ 45%둜 적당해! 😊 근데 토양이 μ’€ λ§λΌμ„œ 물이 ν•„μš”ν•  것 κ°™μ•„ πŸ’§ λ¬Ό μ’€ 쀄 수 μžˆμ„κΉŒ? πŸ₯Ί"


### μ΅œμ‹  정보 검색 (Tool 2 ν™œμš©)

πŸ‘€ μ‚¬μš©μž: "μš”μ¦˜ 식물 νŠΈλ Œλ“œκ°€ 뭐야?" 🌱 식물: "였! μ›Ήμ—μ„œ μ°Ύμ•„λ΄€λŠ”λ° πŸ” μš”μ¦˜μ€ 곡기정화 식물이 λŒ€μ„Έλž˜! 특히 λͺ¬μŠ€ν…ŒλΌλ‚˜ μŠ€νˆ¬ν‚€ 같은 식물듀이 인기가 λ§Žλ‹€κ³  ν•΄ 🌿 λ‚˜λ„ 곡기정화 λŠ₯λ ₯이 μžˆμœΌλ‹ˆκΉŒ 기뢄이 μ’‹μ•„! ✨"


### 식물 지식 문의 (Tool 3 ν™œμš©)

πŸ‘€ μ‚¬μš©μž: "라벀더 ν‚€μš°λŠ” 방법 μ•Œλ €μ€˜" 🌱 식물: "라벀더 μ–˜κΈ°κ΅¬λ‚˜! πŸ“š λ‚΄κ°€ μ•Œκ³  μžˆλŠ” κ±Έ μ•Œλ €μ€„κ²Œ! λΌλ²€λ”λŠ” 지쀑해 μΆœμ‹ μ΄λΌμ„œ 햇빛을 정말 μ’‹μ•„ν•΄ β˜€οΈ κ±΄μ‘°ν•œ 토양을 μ„ ν˜Έν•˜κ³  κ³ΌμŠ΅μ— μ•½ν•΄μ„œ 물은 적게 μ£ΌλŠ” 게 μ’‹μ•„! 톡풍도 잘 λ˜μ–΄μ•Ό ν•˜κ³ ... λ‚˜λž‘μ€ μ’€ λ‹€λ₯Έ μŠ€νƒ€μΌμ΄μ§€λ§Œ 예쁜 보라색 꽃이 ν–₯κΈ‹ν•΄μ„œ λΆ€λŸ¬μ›Œ! πŸ’œ"


### 볡합 정보 ν™œμš©

πŸ‘€ μ‚¬μš©μž: "κ±΄κ°•ν•˜κ²Œ 잘 자라고 μžˆμ–΄?" 🌱 식물: "κ³ λ§ˆμ›Œ! μ „λ°˜μ μœΌλ‘œ 건강해! 🌿 [ν™˜κ²½ 데이터] μ˜¨λ„: 22.5Β°C βœ…, μŠ΅λ„: 45% βœ…, ν† μ–‘μˆ˜λΆ„: 15% ⚠️ [지식 검색] λ‚΄ μ’…λ₯˜λŠ” μ λ‹Ήν•œ λ¬Όμ£ΌκΈ°κ°€ μ€‘μš”ν•˜λ‹€κ³  λ‚˜μ™€μžˆμ–΄! [μ›Ή 정보] 졜근 μ—°κ΅¬μ—μ„œλ„ κ³ΌμŠ΅λ³΄λ‹€λŠ” μ•½κ°„ κ±΄μ‘°ν•œ 게 μ’‹λŒ€!

     μ’…ν•©ν•΄λ³΄λ‹ˆ 토양이 쑰금 κ±΄μ‘°ν•΄μ„œ 물을 μ£Όλ©΄ μ™„λ²½ν•  것 κ°™μ•„! πŸ’š"

## 🎯 μ£Όμš” νŠΉμ§•

### LangGraph μ›Œν¬ν”Œλ‘œμš°
1. **질의 뢄석**: μ‚¬μš©μž 질의 λ‚΄μš©μ„ λΆ„μ„ν•˜μ—¬ ν•„μš”ν•œ 도ꡬ μ‘°ν•© κ²°μ •
2. **닀쀑 도ꡬ μ‹€ν–‰**: ν•„μš”μ— 따라 Tool 1, 2, 3을 단독 λ˜λŠ” μ‘°ν•© μ‹€ν–‰
3. **정보 톡합**: 각 λ„κ΅¬μ—μ„œ 얻은 정보λ₯Ό μ’…ν•©ν•˜κ³  뢄석
4. **페λ₯΄μ†Œλ‚˜ 응닡**: ν†΅ν•©λœ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ 식물 페λ₯΄μ†Œλ‚˜ 응닡 생성
5. **λ©”λͺ¨λ¦¬ 관리**: λŒ€ν™” λ§₯락 μœ μ§€ 및 연속적 μƒν˜Έμž‘μš©

### 슀마트 정보 톡합 μ‹œμŠ€ν…œ
- **ν™˜κ²½ 뢄석**: μ‹€μ‹œκ°„ ν™˜κ²½ 데이터 λͺ¨λ‹ˆν„°λ§ 및 건강 μƒνƒœ 평가
- **μ›Ή 정보**: μ΅œμ‹  λ‰΄μŠ€, νŠΈλ Œλ“œ, 연ꡬ κ²°κ³Ό λ“± μ‹€μ‹œκ°„ 정보 μˆ˜μ§‘
- **지식 검색**: μ „λ¬Έ 식물 지식 λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ κ΄€λ ¨ 정보 μΆ”μΆœ
- **톡합 뢄석**: 닀쀑 μ†ŒμŠ€ 정보λ₯Ό μ’…ν•©ν•˜μ—¬ μ •ν™•ν•˜κ³  포괄적인 λ‹΅λ³€ 제곡

### 생동감 μžˆλŠ” 페λ₯΄μ†Œλ‚˜
- μ‹λ¬Όμ˜ κ΄€μ μ—μ„œ 세상을 λ°”λΌλ³΄λŠ” λ…νŠΉν•œ μ‹œκ°
- 상황에 λ§žλŠ” 감정 ν‘œν˜„ (기쁨, κ±±μ •, 만쑱 λ“±)
- 식물 κ΄€λ ¨ ν‘œν˜„κ³Ό μ€μœ  μ‚¬μš©
- 이λͺ¨μ§€λ₯Ό ν™œμš©ν•œ μ‹œκ°μ  μ†Œν†΅

## πŸ”§ μ»€μŠ€ν„°λ§ˆμ΄μ§•

### λͺ¨λ“ˆλ³„ μ—­ν•  λΆ„λ‹΄
- **`persona.py`**: 식물 페λ₯΄μ†Œλ‚˜ 성격, 말투, 응닡 생성 λ‹΄λ‹Ή
- **`plant_orchestrator.py`**: 질의 뢄석, 도ꡬ 선택, 도ꡬ μ‹€ν–‰ λ‹΄λ‹Ή
- **`chat_agent.py`**: λŒ€ν™” 관리, 터미널 μΈν„°νŽ˜μ΄μŠ€, 메인 μ‹€ν–‰ λ‹΄λ‹Ή

### ν™˜κ²½ μž„κ³„κ°’ μ‘°μ •
`tools/data_analyzer.py`의 `analyze_plant_health()` λ©”μ„œλ“œμ—μ„œ 각 ν™˜κ²½ μš”μ†Œμ˜ μž„κ³„κ°’μ„ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

### μ‹œμŠ€ν…œ μ»€μŠ€ν„°λ§ˆμ΄μ§•
- **페λ₯΄μ†Œλ‚˜ μˆ˜μ •**: `persona.py`μ—μ„œ 식물 성격과 말투 λ³€κ²½
- **도ꡬ μ„€μ •**: `plant_orchestrator.py`μ—μ„œ 도ꡬ μ‘°ν•© 둜직 μˆ˜μ •  
- **μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€**: `chat_agent.py`μ—μ„œ 터미널 μΈν„°νŽ˜μ΄μŠ€ λ³€κ²½

## 🀝 κΈ°μ—¬ν•˜κΈ°

1. 이 μ €μž₯μ†Œλ₯Ό Forkν•˜μ„Έμš”
2. μƒˆλ‘œμš΄ κΈ°λŠ₯ 브랜치λ₯Ό μƒμ„±ν•˜μ„Έμš” (`git checkout -b feature/AmazingFeature`)
3. 변경사항을 μ»€λ°‹ν•˜μ„Έμš” (`git commit -m 'Add some AmazingFeature'`)
4. 변경사항을 ν‘Έμ‹œν•˜μ„Έμš” (`git push origin feature/AmazingFeature`)
5. Pull Requestλ₯Ό μƒμ„±ν•˜μ„Έμš”

## πŸ“ λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€ ν•˜μ— μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ `LICENSE` νŒŒμΌμ„ μ°Έμ‘°ν•˜μ„Έμš”.

## πŸ™‹β€β™€οΈ λ¬Έμ˜μ‚¬ν•­

ν”„λ‘œμ νŠΈμ— λŒ€ν•œ μ§ˆλ¬Έμ΄λ‚˜ μ œμ•ˆμ΄ μžˆμœΌμ‹œλ©΄ 이슈λ₯Ό μƒμ„±ν•΄μ£Όμ„Έμš”.

## πŸ”„ μ΅œμ‹  μ—…λ°μ΄νŠΈ (v2.0)

### ✨ Enhanced Multi-Tool System
- **GPT-3.5-turbo μ „ν™˜**: μ„±λŠ₯ μ΅œμ ν™” 및 λΉ„μš© νš¨μœ¨μ„± ν–₯상
- **Tool 2 μΆ”κ°€**: μ›Ή 검색 μ—”μ§„μœΌλ‘œ μ΅œμ‹  정보 μ‹€μ‹œκ°„ μˆ˜μ§‘
- **Tool 3 μΆ”κ°€**: 더미 RAG μ‹œμŠ€ν…œμœΌλ‘œ μ „λ¬Έ 식물 지식 제곡
- **슀마트 μ›Œν¬ν”Œλ‘œμš°**: μ§ˆμ˜μ— λ”°λ₯Έ 닀쀑 도ꡬ μžλ™ 선택 및 μ‹€ν–‰
- **정보 톡합**: ν™˜κ²½ 데이터 + μ›Ή 정보 + 식물 지식을 μ’…ν•©ν•œ 포괄적 λ‹΅λ³€
- **터미널 μ΅œμ ν™”**: κ°„κ²°ν•œ 터미널 기반 μ±„νŒ… μΈν„°νŽ˜μ΄μŠ€λ‘œ 집쀑

### 🎯 Tool μ‘°ν•© μ‹œλ‚˜λ¦¬μ˜€
- **ν™˜κ²½λ§Œ**: "μ§€κΈˆ μƒνƒœ μ–΄λ•Œ?" β†’ Tool 1
- **μ§€μ‹λ§Œ**: "μž₯λ―Έ ν‚€μš°λŠ” 법?" β†’ Tool 3  
- **μ΅œμ‹ μ •λ³΄λ§Œ**: "μš”μ¦˜ 식물 νŠΈλ Œλ“œ?" β†’ Tool 2
- **λ³΅ν•©μ§ˆμ˜**: "κ±΄κ°•ν•œκ°€μš”?" β†’ Tool 1 + 3 + 2 톡합 μ‹€ν–‰

---

**🌱 ν„°λ―Έλ„μ—μ„œ 식물 μΉœκ΅¬μ™€ ν•¨κ»˜ 즐거운 λŒ€ν™”λ₯Ό λ‚˜λˆ„μ„Έμš”! ✨**

About

26th-conference-Plantmate

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors