Files
llm_macro/README.md
2025-10-30 10:32:31 +09:00

123 lines
3.0 KiB
Markdown

# LLM Macro
OCR(광학 문자 인식) 결과를 파싱하고, 지정된 LLM(거대 언어 모델)을 통해 처리한 후, 정제된 결과를 반환하는 API 게이트웨이입니다.
다양한 LLM 공급자를 지원하며, Docker를 통해 쉽게 배포하고 실행할 수 있습니다.
## 주요 기능
- OCR 결과 텍스트 정제 및 분석
- 다중 LLM 공급자 지원 (Gemini, Anthropic, OpenAI 등)
- RESTful API 엔드포인트 제공
- Docker Compose를 이용한 간편한 실행 환경
## 프로젝트 구조
```
/
├── .env # API 키 및 환경 변수 설정
├── api_keys.json # 클라이언트 API 키 관리
├── docker-compose.yml # Docker Compose 설정
├── Dockerfile # Docker 이미지 빌드 설정
├── requirements.txt # Python 의존성 목록
├── post/ # OCR 결과 후처리 관련 모듈
├── result/ # 처리 결과 저장 디렉토리 (Git 무시)
└── workspace/ # API 서버 로직 (FastAPI 기반)
```
## 시작하기
### 사전 요구사항
- Git
- Docker
- Docker Compose
### 설치 및 실행
1. **프로젝트 클론**
```bash
git clone https://github.com/your-username/llm_gateway_macro.git
cd llm_gateway_macro
```
2. **환경 변수 설정**
`.env.example` 파일을 복사하여 `.env` 파일을 생성하고, 내부에 실제 API 키들을 입력합니다.
```bash
cp .env.example .env
```
```dotenv
# .env
ADMIN_API_KEY=your_admin_api_key
GEMINI_API_KEY=your_gemini_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
OPENAI_API_KEY=your_openai_api_key
```
3. **클라이언트 API 키 설정**
`api_keys.json.example` 파일을 복사하여 `api_keys.json` 파일을 생성하고, API를 호출할 클라이언트의 키를 설정합니다.
```bash
cp api_keys.json.example api_keys.json
```
4. **Docker 컨테이너 실행**
아래 명령어를 실행하여 애플리케이션을 백그라운드에서 시작합니다.
```bash
docker-compose up -d --build
```
5. **로그 확인 (선택 사항)**
```bash
docker-compose logs -f
```
## API 사용법
### OCR 결과 처리 요청
- **Endpoint:** `POST /api/v1/process`
- **Header:** `X-API-KEY: {your_client_api_key}`
- **Body:**
```json
{
"ocr_text": "여기에 OCR 결과로 추출된 텍스트를 입력합니다.",
"llm_provider": "gemini" // "gemini", "openai", "anthropic" 중 선택
}
```
### cURL 예시
```bash
curl -X POST "http://localhost:8000/api/v1/process" \
-H "Content-Type: application/json" \
-H "X-API-KEY: your_client_api_key" \
-d '{
"ocr_text": "처리할 OCR 텍스트입니다.",
"llm_provider": "gemini"
}'
```
### 응답 예시
```json
{
"original_text": "처리할 OCR 텍스트입니다.",
"processed_text": "LLM에 의해 처리된 결과입니다.",
"provider": "gemini"
}
```
## 라이선스
이 프로젝트는 [라이선스 이름] 라이선스를 따릅니다. 자세한 내용은 `LICENSE` 파일을 참고하세요.
```
```