123 lines
3.0 KiB
Markdown
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` 파일을 참고하세요.
|
|
|
|
```
|
|
|
|
```
|