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 서비스 구축 가능