diff --git a/apps/pre-processing-service/app/core/config.py b/apps/pre-processing-service/app/core/config.py index a710faba..ad7005ea 100644 --- a/apps/pre-processing-service/app/core/config.py +++ b/apps/pre-processing-service/app/core/config.py @@ -104,7 +104,7 @@ class BaseSettingsConfig(BaseSettings): MAX_IMAGE_SIZE_MB: int = 10 # 테스트/추가용 필드 - openai_api_key: Optional[str] = None # << 이 부분 추가 + OPENAI_API_KEY: Optional[str] = None # << 이 부분 추가 def __init__(self, **kwargs): super().__init__(**kwargs) diff --git a/apps/pre-processing-service/app/service/blog/blog_create_service.py b/apps/pre-processing-service/app/service/blog/blog_create_service.py index 70af1626..a66fa609 100644 --- a/apps/pre-processing-service/app/service/blog/blog_create_service.py +++ b/apps/pre-processing-service/app/service/blog/blog_create_service.py @@ -1,32 +1,27 @@ import json import logging -import os +from loguru import logger from datetime import datetime from typing import Dict, List, Optional, Any from openai import OpenAI -from dotenv import load_dotenv - +from app.core.config import settings from app.model.schemas import RequestBlogCreate from app.errors.BlogPostingException import * -# 환경변수 로드 -load_dotenv(".env.dev") - class BlogContentService: """RAG를 사용한 블로그 콘텐츠 생성 전용 서비스""" def __init__(self): # OpenAI API 키 설정 - self.openai_api_key = os.getenv("OPENAI_API_KEY") + self.openai_api_key = settings.OPENAI_API_KEY if not self.openai_api_key: raise ValueError("OPENAI_API_KEY가 .env.dev 파일에 설정되지 않았습니다.") # 인스턴스 레벨에서 클라이언트 생성 self.client = OpenAI(api_key=self.openai_api_key) logging.basicConfig(level=logging.INFO) - self.logger = logging.getLogger(__name__) def generate_blog_content(self, request: RequestBlogCreate) -> Dict[str, Any]: """ @@ -39,26 +34,26 @@ def generate_blog_content(self, request: RequestBlogCreate) -> Dict[str, Any]: Dict: {"title": str, "content": str, "tags": List[str]} 형태의 결과 """ try: - self.logger.debug("[STEP1] 콘텐츠 컨텍스트 준비 시작") + logger.debug("[STEP1] 콘텐츠 컨텍스트 준비 시작") content_context = self._prepare_content_context(request) - self.logger.debug(f"[STEP1 완료] context length={len(content_context)}") + logger.debug(f"[STEP1 완료] context length={len(content_context)}") - self.logger.debug("[STEP2] 프롬프트 생성 시작") + logger.debug("[STEP2] 프롬프트 생성 시작") prompt = self._create_content_prompt(content_context, request) - self.logger.debug(f"[STEP2 완료] prompt length={len(prompt)}") + logger.debug(f"[STEP2 완료] prompt length={len(prompt)}") - self.logger.debug("[STEP3] OpenAI API 호출 시작") + logger.debug("[STEP3] OpenAI API 호출 시작") generated_content = self._generate_with_openai(prompt) - self.logger.debug(f"[STEP3 완료] generated length={len(generated_content)}") + logger.debug(f"[STEP3 완료] generated length={len(generated_content)}") - self.logger.debug("[STEP4] 콘텐츠 파싱 시작") + logger.debug("[STEP4] 콘텐츠 파싱 시작") result = self._parse_generated_content(generated_content, request) - self.logger.debug("[STEP4 완료]") + logger.debug("[STEP4 완료]") return result except Exception as e: - self.logger.error(f"콘텐츠 생성 실패: {e}") + logger.error(f"콘텐츠 생성 실패: {e}") return self._create_fallback_content(request) def _prepare_content_context(self, request: RequestBlogCreate) -> str: diff --git a/apps/pre-processing-service/app/utils/llm_extractor.py b/apps/pre-processing-service/app/utils/llm_extractor.py index 3fb200a5..7140b184 100644 --- a/apps/pre-processing-service/app/utils/llm_extractor.py +++ b/apps/pre-processing-service/app/utils/llm_extractor.py @@ -1,8 +1,7 @@ import os from openai import OpenAI from dotenv import load_dotenv - -load_dotenv() +from app.core.config import settings class LLMExtractor: @@ -13,7 +12,7 @@ def __init__(self, model="gpt-4o"): :param model: 사용할 LLM 모델 이름 """ - self.client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) + self.client = OpenAI(api_key=settings.OPENAI_API_KEY) self.model = model def login_extraction_prompt(self, target_description: str, html: str):