AI/AI

Cloud AI - 5. 최종 프로젝트: 클라우드 AI를 활용한 나만의 AI 서비스 만들기 (실습)

개발_노트 2025. 3. 18. 22:49

📌 실습: 클라우드 AI API를 활용한 AI 앱 개발 및 배포

이 실습에서는 클라우드 AI API(Google Cloud, AWS, OpenAI 등)를 활용하여 AI 애플리케이션을 개발하고, 실제 환경에서 테스트 및 배포하는 과정을 다룬다.
마지막으로 프로젝트 발표 및 코드 공유 방법까지 포함하여, 개발한 AI 앱을 안전하게 공유하고 운영할 수 있도록 한다.


🔹 1️⃣ 클라우드 AI API를 활용한 AI 앱 개발

✅ 클라우드 AI API 선택 및 활용 개요

클라우드 AI API를 활용하면 복잡한 AI 모델을 직접 구축하지 않고도 머신러닝 기능을 쉽게 구현할 수 있다.
다음과 같은 API를 활용하여 AI 애플리케이션을 개발할 수 있다.

주요 클라우드 AI API 및 기능

클라우드 플랫폼 AI API 제공 기능 주요 활용 사례
Google Cloud Vision AI 이미지 분석, OCR 문서 자동화, 제품 분류
Google Cloud Speech-to-Text 음성 → 텍스트 변환 음성 인식 챗봇, 자막 생성
AWS Rekognition 얼굴 인식, 객체 감지 보안 시스템, 사용자 인증
AWS Polly 텍스트 → 음성 변환 음성 안내 시스템, TTS 서비스
Azure Text Analytics 감정 분석, 키워드 추출 리뷰 분석, 고객 피드백
OpenAI GPT API 텍스트 생성, 대화 AI AI 챗봇, 자동 문서 생성

✅ OpenAI API를 활용한 AI 챗봇 개발

1️⃣ 환경 변수 파일 생성 (.env)

echo "OPENAI_API_KEY=your-openai-api-key" > .env

2️⃣ Python 코드에서 환경 변수 로드 (dotenv 사용)

import openai
import os
from dotenv import load_dotenv

# 환경 변수 로드
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")

def chatbot_response(text):
    response = openai.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": text}]
    )
    return response.choices[0].message.content

# 사용자 입력
user_input = "오늘 날씨 알려줘"
ai_response = chatbot_response(user_input)
print(f"AI 응답: {ai_response}")

🔹 2️⃣ 실제 환경에서 테스트 및 배포

✅ Google Cloud Functions를 활용한 AI API 배포


1️⃣ Google Cloud Functions 활성화

gcloud services enable cloudfunctions.googleapis.com
gcloud services enable secretmanager.googleapis.com

2️⃣ 환경 변수 설정

gcloud secrets create OPENAI_API_KEY --data-file=<(echo -n "your-openai-api-key")

Cloud Function에서 API 키를 호출하는 방식:

import os
import base64
from google.cloud import vision, secretmanager
import functions_framework

client = vision.ImageAnnotatorClient()

# Secret Manager에서 API 키 가져오기
def get_secret(secret_id):
    secret_client = secretmanager.SecretManagerServiceClient()
    project_id = "your-project-id"
    secret_name = f"projects/{project_id}/secrets/{secret_id}/versions/latest"
    response = secret_client.access_secret_version(name=secret_name)
    return response.payload.data.decode("UTF-8")

@functions_framework.http
def ocr_api(request):
    """OCR을 활용한 문서 자동화 API (보안 강화)"""
    request_json = request.get_json()
    
    if not request_json or "image_bytes" not in request_json:
        return {"error": "image_bytes 필드가 필요합니다."}, 400

    # Base64 디코딩 추가
    try:
        image_data = base64.b64decode(request_json["image_bytes"])
    except Exception as e:
        return {"error": f"Base64 디코딩 실패: {str(e)}"}, 400

    # OCR 실행
    image = vision.Image(content=image_data)
    response = client.text_detection(image=image)
    extracted_text = response.text_annotations[0].description if response.text_annotations else "텍스트 없음"

    return {"text": extracted_text}

3️⃣ Google Cloud Functions 배포

gcloud functions deploy ocr_api \
  --runtime python39 \
  --trigger-http \
  --set-secrets OPENAI_API_KEY=projects/your-project-id/secrets/OPENAI_API_KEY:latest \
  --no-allow-unauthenticated

--no-allow-unauthenticated 옵션을 추가하여 API 보안 강화

🔹 API 보안 고려 사항:

  • IAM 정책을 활용하여 특정 사용자 또는 서비스 계정만 접근 가능하도록 설정
  • API Gateway 및 Cloud Identity-Aware Proxy(IAP)를 활용하여 추가 보안 적용 가능

🔹 3️⃣ 프로젝트 발표 및 코드 공유

✅ GitHub에서 .env 파일 제외하기

GitHub에 API 키가 유출되지 않도록 .gitignore 파일에 .env 추가

echo ".env" >> .gitignore

.env 파일이 GitHub에 업로드되지 않도록 설정하여 보안 유지


✅ 프로젝트 발표 시 보안 고려 사항 추가

# AI 기반 문서 자동화 시스템
## 📌 프로젝트 개요
- AI OCR 기술을 활용하여 문서에서 텍스트를 자동으로 추출하고 저장하는 시스템

## 🚀 사용한 기술
- Google Cloud Vision API: OCR 기능 활용
- Google Cloud Functions: AI API 배포
- FastAPI & Flask: 웹 서비스 구축

## 🔐 보안 고려 사항
- API 키를 `.env` 파일 또는 Secret Manager를 통해 관리하여 하드코딩 방지
- Google Cloud Functions 배포 시 `--no-allow-unauthenticated` 옵션 사용하여 접근 제한
- IAM 정책을 활용하여 API 접근 권한을 제어

## 🔥 결과 및 향후 개선 방향
- OCR 인식 정확도 95% 이상 달성
- 향후 문서 카테고리 자동 분류 기능 추가 예정

API 키 보안과 접근 권한 설정을 프로젝트 문서에서 강조


📌 최종 정리: 클라우드 AI API를 활용한 AI 앱 개발 및 배포

보안이 강화된 클라우드 AI API 배포 및 운영으로 안전한 AI 서비스 구축 가능