# 1. Tổng quan Kiến trúc

Hệ thống Lead Search **không dùng 1 Agent nguyên khối** mà chia làm 2 Agent phối hợp qua LangGraph StateGraph. Thiết kế này giải quyết 2 vấn đề lớn:

## Tại sao cần 2 Agent?

| Vấn đề | 1 Agent | 2 Agent (Dual) |
|---|---|---|
| **Chi phí LLM** | Mỗi turn đều gọi model nặng (GPT-4 class) dù chỉ để route | Classifier dùng model nhẹ → tiết kiệm 60% token |
| **Latency** | Model nặng xử lý cả routing + generation = chậm | Classifier nhanh (< 1.5s), chỉ Stylist mới dùng model nặng |
| **Hallucination** | Model vừa phải route vừa phải generate → dễ ảo giác | Mỗi Agent chỉ làm 1 việc → output kiểm soát được |
| **Structured Output** | Khó ép 1 model xuất cả JSON + text | Classifier xuất JSON chuẩn, Stylist xuất text tự nhiên |

## Luồng tổng quan

```
User Message → Classifier Agent → [Route Decision]
                                      ↓
                            ┌─ Early Exit (chào hỏi) → Stylist (text only)
                            └─ Tool Call → ProductSearchEngine → Stylist (text + products)
                                                                      ↓
                                                               Final Response → User
```

## Phân chia trách nhiệm

| Agent | Vai trò | Model | Output |
|---|---|---|---|
| **Classifier** | Lễ tân — Phân loại ý định, quyết định gọi Tool | LLM nhẹ | `ClassifierOutput` (JSON) |
| **Stylist** | Best Seller — Sinh câu tư vấn thuyết phục | LLM nặng | `StylistOutput` (text + insight) |

File tham chiếu: `backend/agent/lead_stage_agent/graph.py`
