Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions utils/llm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ utils/llm/
├── chains.py # LangChain 체인 생성 모듈
├── retrieval.py # 테이블 메타 검색 및 재순위화
├── llm_response_parser.py # LLM 응답에서 SQL 블록 추출
├── chatbot.py # LangGraph ChatBot 구현
├── chatbot/ # LangGraph ChatBot 패키지
│ ├── __init__.py
│ ├── core.py # ChatBot 핵심 로직
│ └── README.md # [상세 문서](./chatbot/README.md)
├── core/ # LLM/Embedding 팩토리 모듈
│ ├── __init__.py
│ ├── factory.py # LLM 및 Embedding 모델 생성 팩토리
Expand Down Expand Up @@ -152,7 +155,7 @@ utils/llm/
**사용처:**
- `utils/llm/vectordb/faiss_db.py`: 벡터DB 초기화 시 메타데이터 수집
- `utils/llm/vectordb/pgvector_db.py`: 벡터DB 초기화 시 메타데이터 수집
- `utils/llm/chatbot.py`: ChatBot 도구로 사용
- `utils/llm/chatbot/`: ChatBot 도구로 사용

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

Expand Down
214 changes: 0 additions & 214 deletions utils/llm/chatbot.py

This file was deleted.

57 changes: 57 additions & 0 deletions utils/llm/chatbot/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# ChatBot Module

LangGraph 기반의 대화형 챗봇 모듈입니다. 사용자의 자연어 질문을 이해하고, 적절한 가이드라인과 도구를 선택하여 답변을 생성합니다.

## 구조

```
utils/llm/chatbot/
├── __init__.py # 패키지 초기화 및 ChatBot 클래스 export
├── core.py # ChatBot 클래스 및 LangGraph 워크플로우 정의
├── guidelines.py # 가이드라인 및 툴 래퍼 함수 정의
├── matcher.py # LLM 기반 가이드라인 매칭 로직
└── types.py # 데이터 타입 및 구조 정의
```

## 주요 컴포넌트

### `ChatBot` (`core.py`)
챗봇의 메인 클래스입니다. LangGraph를 사용하여 대화 흐름을 제어합니다.
- **초기화**: OpenAI API 키, 모델명, GMS 서버 URL 등을 설정합니다.
- **워크플로우**: `select_guidelines` -> `call_model` 순서로 실행됩니다.
- **chat 메서드**: 사용자 메시지를 입력받아 응답을 생성합니다.

### `LLMGuidelineMatcher` (`matcher.py`)
사용자의 메시지를 분석하여 가장 적절한 가이드라인을 선택하는 클래스입니다.
- LLM을 사용하여 사용자 의도를 파악하고, 미리 정의된 가이드라인 중 하나 이상을 매칭합니다.
- JSON Schema를 사용하여 구조화된 출력을 보장합니다.

### `Guideline` (`types.py`)
챗봇이 따를 규칙과 도구를 정의하는 데이터 클래스입니다.
- `id`: 가이드라인 식별자
- `description`: 가이드라인 설명
- `example_phrases`: 매칭에 사용될 예시 문구
- `tools`: 해당 가이드라인에서 사용할 도구 함수 목록
- `priority`: 매칭 우선순위

### `GUIDELINES` (`guidelines.py`)
기본적으로 제공되는 가이드라인 목록입니다.
- `db_search`: 데이터베이스 테이블 정보 검색
- `glossary`: 용어집 조회
- `query_examples`: 쿼리 예제 조회

## 사용 예시

```python
from utils.llm.chatbot import ChatBot

# 챗봇 인스턴스 생성
bot = ChatBot(
openai_api_key="sk-...",
gms_server="http://localhost:8080"
)

# 대화하기
response = bot.chat("매출 테이블 정보 알려줘", thread_id="session_1")
print(response["messages"][-1].content)
```
7 changes: 7 additions & 0 deletions utils/llm/chatbot/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"""
ChatBot 패키지 초기화 모듈
"""

from utils.llm.chatbot.core import ChatBot

__all__ = ["ChatBot"]
Loading