Memory Album AI Analysis Service - 사진 분석을 통한 스토리텔링 생성 서비스
이 프로젝트는 사용자의 사진을 분석하여 관련 질문을 생성하고, 사용자의 답변을 바탕으로 개인화된 스토리텔링을 생성하는 AI 서비스입니다.
- Python 3.12
- FastAPI
- Google Cloud Vision API
- Google Cloud Translation API
- Pydantic
- aiofiles
- python-multipart
- uvicorn
project/
├── app/
│ ├── api/ # API 라우터
│ │ └── v1/ # API v1 엔드포인트
│ ├── core/ # 설정, 상수 등
│ ├── schemas/ # Pydantic 모델
│ ├── services/ # 비즈니스 로직 서비스
│ └── main.py # FastAPI 애플리케이션 진입점
├── tests/ # 테스트 코드
├── credentials/ # API 키 및 인증 파일 (gitignore)
├── temp_uploads/ # 임시 업로드 파일 저장소 (gitignore)
├── DEVELOPMENT_RULES.md # 개발 규칙
├── QUESTION_RULES.md # 질문 생성 규칙
├── TASK_LIST.md # 작업 현황
├── requirements.txt # 의존성 목록
└── .env # 환경 변수 (gitignore)
GET /- 서비스 상태 확인GET /health- 헬스 체크
GET /api/v1/test-connection- 백엔드 서버 연결 테스트POST /api/v1/analyze-image- 이미지 분석 및 질문 생성POST /api/v1/process-answer- 답변 처리 및 스토리 생성POST /api/v1/generate-story- 최종 스토리 생성
- 저장소 클론
git clone [repository-url]
cd memory-AI- 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows- 의존성 설치
pip install -r requirements.txt- 필수 파일 설정
프로젝트 실행을 위해 다음 파일들을 추가해야 합니다:
프로젝트 루트 디렉토리에 .env 파일을 생성하고 다음 내용을 추가:
# Google Cloud Vision API 설정
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_APPLICATION_CREDENTIALS=credentials/vision-api-key.json
# Google Cloud Translation API 설정
GOOGLE_CLOUD_LOCATION=global
# 이미지 처리 설정
TEMP_UPLOAD_DIR=temp_uploads
MAX_IMAGE_SIZE=10485760
- Google Cloud Console에서 서비스 계정 키(JSON) 다운로드
- 프로젝트 루트에
credentials디렉토리 생성 - 다운로드한 JSON 파일을
credentials/vision-api-key.json로 저장
Google Cloud Console에서 다음 API들을 활성화해야 합니다:
- Vision API
- Cloud Translation API
mkdir temp_uploads- 서버 실행
uvicorn app.main:app --reload- 개발 환경 준비 (Python 3.12 설치)
- 코드 다운로드 및 가상환경 설정
- 필요한 API 키 및 환경설정
- 서버 실행 및 테스트
- Python 3.12 설치: Python 공식 사이트에서 다운로드
- pip 최신 버전 확인:
python -m pip install --upgrade pip
# 코드 클론
git clone [repository-url]
cd memory-AI
# 가상환경 생성 및 활성화
python -m venv venv
source venv/bin/activate # Linux/Mac
# 또는
venv\Scripts\activate # Windows
# 의존성 설치
pip install -r requirements.txt- Google Cloud Console에 로그인
- 새 프로젝트 생성 또는 기존 프로젝트 선택
- 필요한 API 활성화:
- Vision API
- Cloud Translation API
- 서비스 계정 생성:
- IAM & Admin > 서비스 계정으로 이동
- 서비스 계정 생성
- 필요한 권한 부여 (Vision API 사용자, Translation API 사용자)
- 키 생성 (JSON 형식)
- 다운로드한 JSON 키 파일을
credentials/vision-api-key.json에 저장
- 프로젝트 루트 디렉토리에
.env파일 생성:
# Google Cloud Vision API 설정
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_APPLICATION_CREDENTIALS=credentials/vision-api-key.json
# Google Cloud Translation API 설정
GOOGLE_CLOUD_LOCATION=global
# 이미지 처리 설정
TEMP_UPLOAD_DIR=temp_uploads
MAX_IMAGE_SIZE=10485760
- 임시 디렉토리 생성:
mkdir -p temp_uploads# 개발 모드 실행 (자동 재시작)
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# 프로덕션 모드 실행
uvicorn app.main:app --host 0.0.0.0 --port 8000-
서버가 실행되면 브라우저에서 다음 URL 접속:
- 기본 상태 확인:
http://localhost:8000/ - 헬스 체크:
http://localhost:8000/health - API 문서 확인:
http://localhost:8000/docs
- 기본 상태 확인:
-
API 테스트:
- Swagger UI (
http://localhost:8000/docs)를 통해 API 엔드포인트 테스트 - 또는 curl, Postman 등을 이용한 API 요청 테스트
- Swagger UI (
- ModuleNotFoundError:
pip install -r requirements.txt를 다시 실행 - Permission Denied: 인증 파일 경로와 권한 확인
- API Quota 초과: Google Cloud Console에서 할당량 확인 및 증가 요청
- 환경 변수
GOOGLE_APPLICATION_CREDENTIALS가 올바르게 설정되었는지 확인 - JSON 키 파일이 올바른 위치에 있는지 확인
- 서비스 계정에 필요한 권한이 부여되었는지 확인
- 포트 충돌: 사용 중인 포트를 변경 (
--port옵션 이용) - 의존성 문제: 가상환경이 활성화되었는지 확인하고 의존성 재설치
서버 실행 후 다음 URL에서 API 문서를 확인할 수 있습니다:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
자세한 개발 규칙은 DEVELOPMENT_RULES.md를 참조하세요.
현재 작업 현황은 TASK_LIST.md에서 확인할 수 있습니다.
.env파일과credentials디렉토리의 내용은 절대 Git에 커밋하지 마세요.- 이미지 업로드 시 최대 크기는 10MB입니다.
- API 키와 인증 정보는 안전하게 관리해야 합니다.