이 과제는 기능을 만드는 것이 아니라,
다음 5가지를 직접 경험하면서 이해하는 것이 목표다.
- 멀티에이전트 구조가 왜 필요한지
- LangGraph가 왜 필요한지
- state 기반 흐름이 어떻게 작동하는지
- agent와 tool의 역할 차이
- 프론트가 있어도 백엔드 구조가 없으면 왜 의미가 없는지
👉 한 줄 요약: “챗봇이 아니라 상담 시스템을 직접 만들어보는 과제”
모든 팀원은 아래를 구현해야 한다.
- Intent Router Node
- Dialogue Manager Node
- Tool Nodes
- Response Node
- 새 UI 만들지 않는다
- 제공된 frontend 그대로 사용
/chatAPI 연결만 한다
- FAQ
- Callback (이름 → 전화번호)
- Vision Trigger (mock)
Frontend UI
↓
POST /chat
↓
FastAPI
↓
LangGraph
Intent Router
↓
Dialogue Manager
↓
조건 분기
├── FAQ Tool
├── Callback Tool
├── Vision Trigger
↓
Response Node
callflow-mini/
│
├── backend/
│ ├── main.py
│ ├── requirements.txt
│ │
│ └── app/
│ ├── graph.py
│ ├── state.py
│ │
│ ├── nodes/
│ ├── tools/
│ └── prompts/
│
└── frontend/
└── (이미 만들어진 UI 그대로 사용)
- 프론트 새로 만들기
- OCR 붙이기
- 이미지 분석 구현
- DB 연결
- 인증 구현
- 복잡하게 만들기
- LangGraph 사용
- state 기반 흐름 구현
- node / tool 역할 분리
- 기존 프론트 연결
state = {
"user_input": "",
"intent": None,
"next_action": None,
"collected_name": None,
"collected_phone": None,
"tool_result": None,
"final_response": None
}입력 문장을 아래 3개 중 하나로 분류:
- faq
- callback
- unknown
현재 state를 보고 다음 행동 결정:
- faq → FAQ Tool
- callback → 이름/전화번호 수집
- unknown → Vision Trigger
운영시간 → 운영시간은 09:00~18:00 입니다
홍길동 + 전화번호 → 콜백 등록 완료
사진을 보내주세요
최종 사용자 응답 생성
입력: 운영시간 알려줘
출력: 운영시간은 09:00~18:00 입니다
입력: 상담원 연결해줘
→ 이름 입력 요청
→ 전화번호 입력 요청
→ 콜백 등록 완료
입력: 이거 이상해요
출력: 사진을 보내주세요 (mock)
프론트는 이미 만들어져 있음.
👉 너가 해야 할 것:
fetch("http://localhost:8000/chat", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({ message: userInput })
})
python setup_project.py
cd backend
pip install -r requirements.txt
uvicorn main:app --reload
다음 질문에 답할 수 있으면 완료다:
이 과제를 하고 나면 반드시 이 생각이 들어야 한다:
- “아, LLM 하나로 다 하면 안 되는구나”
- “상태를 보고 다음 행동을 결정해야 하는구나”
- “그래서 이게 시스템이구나”
👉 “우리는 챗봇을 만드는 게 아니라 상담 흐름을 만드는 것이다”