Skip to content

Commit a4f3b20

Browse files
committed
chatbot module 리팩토링 & 가이드라인 기반 챗봇 동작 구현
1 parent e540875 commit a4f3b20

File tree

8 files changed

+439
-216
lines changed

8 files changed

+439
-216
lines changed

utils/llm/README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ utils/llm/
1010
├── chains.py # LangChain 체인 생성 모듈
1111
├── retrieval.py # 테이블 메타 검색 및 재순위화
1212
├── llm_response_parser.py # LLM 응답에서 SQL 블록 추출
13-
├── chatbot.py # LangGraph ChatBot 구현
13+
├── chatbot/ # LangGraph ChatBot 패키지
14+
│ ├── __init__.py
15+
│ ├── core.py # ChatBot 핵심 로직
16+
│ └── README.md # [상세 문서](./chatbot/README.md)
1417
├── core/ # LLM/Embedding 팩토리 모듈
1518
│ ├── __init__.py
1619
│ ├── factory.py # LLM 및 Embedding 모델 생성 팩토리
@@ -152,7 +155,7 @@ utils/llm/
152155
**사용처:**
153156
- `utils/llm/vectordb/faiss_db.py`: 벡터DB 초기화 시 메타데이터 수집
154157
- `utils/llm/vectordb/pgvector_db.py`: 벡터DB 초기화 시 메타데이터 수집
155-
- `utils/llm/chatbot.py`: ChatBot 도구로 사용
158+
- `utils/llm/chatbot/`: ChatBot 도구로 사용
156159

157160
**상세 문서**: [tools/README.md](./tools/README.md)
158161

utils/llm/chatbot.py

Lines changed: 0 additions & 214 deletions
This file was deleted.

utils/llm/chatbot/README.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# ChatBot Module
2+
3+
LangGraph 기반의 대화형 챗봇 모듈입니다. 사용자의 자연어 질문을 이해하고, 적절한 가이드라인과 도구를 선택하여 답변을 생성합니다.
4+
5+
## 구조
6+
7+
```
8+
utils/llm/chatbot/
9+
├── __init__.py # 패키지 초기화 및 ChatBot 클래스 export
10+
├── core.py # ChatBot 클래스 및 LangGraph 워크플로우 정의
11+
├── guidelines.py # 가이드라인 및 툴 래퍼 함수 정의
12+
├── matcher.py # LLM 기반 가이드라인 매칭 로직
13+
└── types.py # 데이터 타입 및 구조 정의
14+
```
15+
16+
## 주요 컴포넌트
17+
18+
### `ChatBot` (`core.py`)
19+
챗봇의 메인 클래스입니다. LangGraph를 사용하여 대화 흐름을 제어합니다.
20+
- **초기화**: OpenAI API 키, 모델명, GMS 서버 URL 등을 설정합니다.
21+
- **워크플로우**: `select_guidelines` -> `call_model` 순서로 실행됩니다.
22+
- **chat 메서드**: 사용자 메시지를 입력받아 응답을 생성합니다.
23+
24+
### `LLMGuidelineMatcher` (`matcher.py`)
25+
사용자의 메시지를 분석하여 가장 적절한 가이드라인을 선택하는 클래스입니다.
26+
- LLM을 사용하여 사용자 의도를 파악하고, 미리 정의된 가이드라인 중 하나 이상을 매칭합니다.
27+
- JSON Schema를 사용하여 구조화된 출력을 보장합니다.
28+
29+
### `Guideline` (`types.py`)
30+
챗봇이 따를 규칙과 도구를 정의하는 데이터 클래스입니다.
31+
- `id`: 가이드라인 식별자
32+
- `description`: 가이드라인 설명
33+
- `example_phrases`: 매칭에 사용될 예시 문구
34+
- `tools`: 해당 가이드라인에서 사용할 도구 함수 목록
35+
- `priority`: 매칭 우선순위
36+
37+
### `GUIDELINES` (`guidelines.py`)
38+
기본적으로 제공되는 가이드라인 목록입니다.
39+
- `db_search`: 데이터베이스 테이블 정보 검색
40+
- `glossary`: 용어집 조회
41+
- `query_examples`: 쿼리 예제 조회
42+
43+
## 사용 예시
44+
45+
```python
46+
from utils.llm.chatbot import ChatBot
47+
48+
# 챗봇 인스턴스 생성
49+
bot = ChatBot(
50+
openai_api_key="sk-...",
51+
gms_server="http://localhost:8080"
52+
)
53+
54+
# 대화하기
55+
response = bot.chat("매출 테이블 정보 알려줘", thread_id="session_1")
56+
print(response["messages"][-1].content)
57+
```

utils/llm/chatbot/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"""
2+
ChatBot 패키지 초기화 모듈
3+
"""
4+
5+
from utils.llm.chatbot.core import ChatBot
6+
7+
__all__ = ["ChatBot"]

0 commit comments

Comments
 (0)