다양한 LLM 모델(현재 Grok 및 Gemini 지원)과 상호작용할 수 있는 간단한 Python 채팅 클라이언트입니다.
- Grok 및 Google Gemini 모델 지원 (확장 가능)
- 스트리밍 방식으로 LLM 응답 처리
- FastAPI를 사용한 간단한 웹 서버 (현재는 기본 루트만 존재)
- Poetry를 사용한 의존성 관리
-
저장소 클론:
git clone https://github.com/Sharknia/llm-chat-client.git cd llm-chat-client -
Poetry 설치: (이미 설치되어 있지 않다면)
pip install poetry
또는 공식 문서 참조
-
의존성 설치:
poetry install
-
환경 변수 설정: 프로젝트 루트에
.env파일을 생성하고 다음 환경 변수들을 설정합니다. (실제 운영 환경에서는 안전한 비밀번호를 사용하고 API 키를 입력하세요.)# .env 예시 # PostgreSQL 설정 (docker-compose.yml 참조) POSTGRES_USER=user POSTGRES_PASSWORD=password POSTGRES_DB=llm_chat_db # FastAPI에서 사용할 DB URL DATABASE_URL=postgresql://user:password@db:5432/llm_chat_db # LLM API 키 GROK_API_KEY=your_grok_api_key_here GOOGLE_API_KEY=your_google_api_key_here
Docker와 Docker Compose가 설치되어 있어야 합니다.
-
.env파일 생성 및 설정: 위의 "환경 변수 설정" 섹션을 참조하여.env파일을 생성하고 필요한 값을 입력합니다. -
서비스 실행: 다음 명령어를 실행하면 PostgreSQL 데이터베이스와 FastAPI 웹 서버가 함께 빌드되고 실행됩니다.
make dev
또는 직접 Docker Compose 명령어를 사용할 수 있습니다:
docker compose up --build
애플리케이션은 호스트의
8001포트에서 접근 가능합니다 (http://localhost:8001).
제공된 예제 스크립트(exmaple.py)를 실행하여 Gemini 모델과의 간단한 상호작용을 테스트할 수 있습니다.
poetry run python exmaple.py또는 Makefile을 사용할 수 있습니다:
make example간단한 FastAPI 서버를 실행할 수 있습니다 (현재는 기본 기능만 제공).
poetry run uvicorn app.main:app --reload또는 Makefile을 사용할 수 있습니다:
make run.
├── .env # 환경 변수 (직접 생성 및 설정 필요)
├── .gitignore # Git 추적 제외 파일 목록
├── .python-version # Python 버전 명시
├── Dockerfile # Docker 이미지 빌드 설정
├── docker-compose.yml # Docker Compose 설정 (DB, Web 서비스)
├── Makefile # 자주 사용하는 명령어 (dev, run, example)
├── README.md # 프로젝트 설명 (현재 파일)
├── app # 애플리케이션 소스 코드
│ ├── __init__.py
│ ├── main.py # FastAPI 애플리케이션 진입점
│ └── src # 주요 소스 코드
│ ├── __init__.py
│ ├── clients # 외부 서비스 클라이언트 (LLM 등)
│ │ ├── __init__.py
│ │ └── chat_client.py # LLM 상호작용 클라이언트
│ ├── llm # LLM 모델 관련 로직
│ │ ├── __init__.py
│ │ └── llm_models.py # Grok, Gemini 모델 인터페이스 구현
│ └── models # 데이터 모델 (Pydantic 등)
│ ├── __init__.py
│ ├── message.py # 메시지 역할 및 내용 정의
│ └── message_list.py# 메시지 목록 관리
├── exmaple.py # 클라이언트 사용 예제 스크립트
├── poetry.lock # 정확한 의존성 버전 고정
└── pyproject.toml # 프로젝트 메타데이터 및 의존성 정의 (Poetry)
- FastAPI 엔드포인트 확장 (채팅 API 등)
- 다양한 LLM 모델 추가 지원
- 오류 처리 및 로깅 개선
- 웹 프론트엔드 구현
- 테스트 코드 작성