Initial commit
This commit is contained in:
79
README.md
Normal file
79
README.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# 🤖 OpenAPI 명세 조회 챗봇 (LLM-Gateway Spec Chatbot)
|
||||
|
||||
이 프로젝트는 특정 URL에서 제공하는 OpenAPI 명세(Specification) 파일을 기반으로 사용자의 질문에 답변하는 Streamlit 기반의 챗봇 애플리케이션입니다. Gemini AI 모델을 활용하여 자연어 질문을 이해하고, API 명세에 근거한 정확한 정보를 한국어로 제공합니다.
|
||||
|
||||
전체 애플리케이션은 Docker 컨테이너 환경에서 실행되도록 구성되어 있어, 간편하게 설치하고 실행할 수 있습니다.
|
||||
|
||||
## ✨ 주요 기능
|
||||
|
||||
- **OpenAPI 명세 기반 답변**: 로컬에 저장된 `api_spec.json` 파일을 분석하여 API의 엔드포인트, 파라미터, 요약 정보 등에 대해 답변합니다.
|
||||
- **자연어 질의응답**: Google의 Gemini 모델을 통해 사용자의 자연어 질문을 이해하고 지능적인 답변을 생성합니다.
|
||||
- **동적 명세 새로고침**: UI의 버튼 클릭 한 번으로 최신 API 명세를 원격 URL에서 다시 가져와 앱에 반영할 수 있습니다.
|
||||
- **한국어 지원**: 모든 답변은 한국어로 제공됩니다.
|
||||
- **직관적인 UI**: Streamlit을 사용하여 사용하기 쉬운 웹 기반 채팅 인터페이스를 제공하며, <20><><EFBFBD>고 및 커스텀 스타일이 적용되어 있습니다.
|
||||
- **컨테이너화**: Docker 및 Docker Compose를 사용하여 개발 환경에 구애받지 않고 일관된 실행 환경을 제공합니다.
|
||||
|
||||
## 🛠️ 기술 스택
|
||||
|
||||
- **언어**: Python 3.9
|
||||
- **프레임워크**: Streamlit
|
||||
- **AI 모델**: Google Gemini 1.5 Flash
|
||||
- **컨테이너**: Docker, Docker Compose
|
||||
- **주요 라이브러리**: `google-generativeai`, `requests`, `pandas`
|
||||
|
||||
## 📂 디렉토리 구조
|
||||
|
||||
```
|
||||
chatbot_app/
|
||||
├── static/
|
||||
│ ├── api_spec.json # API 명세 파일
|
||||
│ └── logo.png # UI에 표시될 로고 이미지
|
||||
├── .env.chatbot # 환경 변수 파일 (API 키 저장)
|
||||
├── docker-compose.yml # Docker Compose 설정 파일
|
||||
├── Dockerfile # Docker 이미지 빌드 파일
|
||||
├── main.py # Streamlit 애플리케이션 메인 코드
|
||||
├── README.md # 프로젝트 설명 파일 (현재 파일)
|
||||
└── requirements.txt # Python 의존성 목록
|
||||
```
|
||||
|
||||
## 🚀 설치 및 실행 방법
|
||||
|
||||
### 사전 준비 사항
|
||||
|
||||
- [Docker](https://www.docker.com/get-started)가 설치되어 있어야 합니다.
|
||||
- [Docker Compose](https://docs.docker.com/compose/install/)가 설치되어 있어야 합니다. (최신 버전의 Docker Desktop에는 기본 포함)
|
||||
|
||||
### 설치 절차
|
||||
|
||||
1. **프로젝트 준비**:
|
||||
이 `chatbot_app` 디렉토리를 준비합니다.
|
||||
|
||||
2. **정적 파일 배치**:
|
||||
`chatbot_app/static/` 디렉토리 안에 다음 두 파일을 위치시킵니다.
|
||||
- `api_spec.json`: 조회할 대상의 OpenAPI 명세 파일
|
||||
- `logo.png`: UI 사이드바에 표시할 로고 이미지
|
||||
|
||||
3. **환경 변수 설정**:
|
||||
`chatbot_app/.env.chatbot` 파일을 열고, `YOUR_GEMINI_API_KEY` 부분을 실제 발급받은 Google Gemini API 키로 교체합니다.
|
||||
```env
|
||||
# YOUR_GEMINI_API_KEY를 실제 키로 변경하세요.
|
||||
GOOGLE_API_KEY="YOUR_GEMINI_API_KEY"
|
||||
```
|
||||
|
||||
4. **애플리케이션 빌드 및 실행**:
|
||||
터미널에서 `chatbot_app` 디렉토리로 이동한 후, 다음 명령어를 실행합니다.
|
||||
```bash
|
||||
docker-compose up --build -d
|
||||
```
|
||||
- `--build`: 이미지를 새로 빌드합니다. (코드 변경 시 필요)
|
||||
- `-d`: 컨테이너를 백그라운드에서 실행합니다.
|
||||
|
||||
5. **챗봇 접속**:
|
||||
빌드가 완료되고 컨테이너가 실행되면, 웹 브라우저를 열고 다음 주소로 접속합니다.
|
||||
- **URL**: `http://localhost:8501`
|
||||
|
||||
## 💡 사용 방법
|
||||
|
||||
- **질문하기**: 화면 하단의 입력창에 API 명세와 관련된 질문을 입력하고 Enter 키를 누릅니다.
|
||||
- **API 명세 새로고침**: 사이드바의 '🔄 API 명세 새로고침' 버튼을 클릭하면 `API_SPEC_URL`에 지정된 주소에서 최신 명세를 다시 가져옵니다.
|
||||
- **API 상세정보 확인**: 사이드바의 '📘 API 상세정보 보기'를 펼치면 API의 제목, 버전 및 전체 엔드포인트 목록을 확인할 수 있습니다.
|
||||
Reference in New Issue
Block a user