|
| 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 | +``` |
0 commit comments