728x90
반응형

✅ Selenium 기반 화면 테스트 코드 (예시)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
import time

# 설정
URL = "https://example.com"  # ← 실제 서비스 주소로 교체
USER_ID = "testuser"
USER_PW = "testpass123"

# 크롬 드라이버 경로
chrome_options = Options()
chrome_options.add_argument("--start-maximized")
service = Service("/path/to/chromedriver")  # ← chromedriver 경로 지정

# 드라이버 실행
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.get(URL)

# 로그인 테스트
try:
    driver.find_element(By.NAME, "id").send_keys(USER_ID)
    driver.find_element(By.NAME, "password").send_keys(USER_PW)
    driver.find_element(By.TAG_NAME, "form").submit()  # 또는 로그인 버튼 클릭

    time.sleep(2)  # 로그인 후 대기

    assert "dashboard" in driver.current_url.lower()
    print("✅ 로그인 성공")

    # 메뉴 테스트: 재고관리 > AI 냉장고 관리
    menu = driver.find_element(By.XPATH, "//span[contains(text(), '재고관리')]")
    menu.click()
    time.sleep(1)
    sub_menu = driver.find_element(By.XPATH, "//span[contains(text(), 'AI 냉장고 관리')]")
    sub_menu.click()
    time.sleep(2)

    assert "냉장고" in driver.page_source
    print("✅ AI 냉장고 관리 페이지 확인됨")

except Exception as e:
    print("❌ 테스트 실패:", e)

finally:
    driver.quit()

🧰 사용 방법 요약

  1. pip install selenium
  2. 크롬 버전에 맞는 chromedriver 다운로드 후 경로 지정
  3. 실제 URL, 로그인 필드의 name/id/class, 메뉴 텍스트 등을 환경에 맞게 수정
  4. 터미널에서 실행

📋 주요 테스트 항목


 

항목 확인 방식
로그인 성공 여부 URL 이동 여부 및 페이지 요소 검출
메뉴 클릭 가능 여부 XPath 클릭 → 이동 후 해당 텍스트 포함 여부
페이지 렌더링 확인 page_source 내 키워드 존재 여부 확인
 

📌 추가로 가능할 것들

  • 다른 메뉴 순회 (반복문으로 메뉴 리스트 자동 순회)
  • 버튼 클릭/입력값 테스트
  • 스크린샷 저장 (driver.save_screenshot("ai_fridge.png"))
  • 실패 시 Slack이나 이메일 알림 연동
728x90
반응형
728x90
반응형

관리 툴 Conda (Anaconda/Miniconda) Python 내장 도구
패키지 설치 방식 conda install, pip install 모두 가능 pip install만 가능
비-Python 패키지 관리 가능 (예: conda install libpng) 불가능 (Python 패키지만 설치됨)
환경 생성 속도 비교적 느릴 수 있음 매우 빠름
의존성 해결 능력 매우 강력하고 충돌 방지 기능 있음 pip 기반, 충돌 가능성 높음
가상환경 위치 관리 conda activate, 이름 기반으로 관리 로컬 디렉토리에 venv/ 생성됨
크로스 플랫폼 Windows, macOS, Linux 모두 지원 마찬가지로 모두 지원
용량 초기 용량 큼 (기본 패키지 포함) 매우 가볍고 최소 구성
복잡한 과학 패키지 설치 매우 쉬움 (바이너리 기반) 빌드 툴이 없으면 실패할 수 있음
추천 대상 데이터 과학, ML, AI 개발자 웹개발, 단순 파이썬 프로젝트 등

🔧 예시: 차이점 체감

✅ Conda

conda create -n ai-env python=3.10
conda activate ai-env
conda install numpy pandas scikit-learn
  • 내부적으로 C 라이브러리 포함된 패키지들도 빌드 없이 빠르게 설치됩니다.
  • conda가 의존성을 자동으로 해결해줍니다.

✅ venv

python -m venv venv
venv\Scripts\activate    # Windows
pip install numpy pandas scikit-learn
  • 빌드 툴 없으면 오류 발생 가능 (Microsoft C++ Build Tools 필요할 수 있음)
  • 간단한 파이썬 패키지는 문제 없음

🔥 결론: 어떤 걸 써야 할까?

상황추천 도구
AI/데이터/ML 프로젝트 ✅ conda 환경 강력 추천
웹 개발/경량 프로젝트 ✅ venv (빠르고 간단)
여러 Python 버전 관리 필요 conda가 더 유리

 

728x90
반응형
728x90
반응형

AI 기반 추천 시스템은 사용자의 과거 행동과 선호도를 분석하여 개인화된 추천을 제공하는 시스템입니다. 이 시스템은 크게 데이터 수집, 데이터 처리 및 전처리, 모델 훈련, 추천 예측의 단계로 나눌 수 있습니다. 이 글에서는 AI 기반 추천 시스템을 구축하기 위한 AI 아키텍쳐Python 코드 예시를 제공합니다.


1. AI 기반 추천 시스템 아키텍쳐

1.1. 데이터 수집

추천 시스템의 첫 번째 단계는 데이터를 수집하는 것입니다. 사용자 행동 데이터(구매 이력, 클릭 이력, 검색 기록 등), 상품 정보, 사용자 프로필 데이터 등을 수집하여 모델 훈련에 사용할 수 있습니다. 데이터를 DB나 파일 시스템에서 읽어옵니다.

1.2. 데이터 전처리

수집된 데이터는 모델 학습에 적합하도록 전처리가 필요합니다. 전처리 과정에서 결측치를 처리하고, 텍스트 데이터를 벡터화하거나, 카테고리 데이터를 인코딩하는 작업을 수행합니다.

1.3. 모델 훈련

추천 시스템에서 많이 사용되는 모델은 협업 필터링(Collaborative Filtering), 콘텐츠 기반 필터링(Content-based Filtering), 하이브리드 방식입니다. AI 모델을 훈련시키는 데는 TensorFlow, Keras, Scikit-learn 등의 라이브러리를 사용할 수 있습니다.

1.4. 추천 예측

훈련된 모델을 기반으로 새로운 사용자의 행동을 예측하고 관련 상품을 추천합니다. 모델은 사용자에게 적합한 상품을 예측하여 Top-N 추천 리스트를 제공합니다.

1.5. 배포 및 피드백

추천 시스템은 운영 환경에 배포되고, 사용자 피드백을 통해 모델의 성능을 지속적으로 개선합니다. 배포 후에는 사용자 행동을 실시간으로 반영하여 추천을 업데이트합니다.


2. AI 기반 추천 시스템 코드 예시

아래는 Python을 사용하여 AI 기반 추천 시스템을 구축하는 코드 예시입니다. 이 예시는 Collaborative FilteringContent-based Filtering을 결합한 하이브리드 추천 시스템입니다. 사용자의 구매 이력 및 선호도를 기반으로 상품을 추천하는 시스템을 구현합니다.

2.1. 필요한 라이브러리 설치

pip install pandas numpy scikit-learn tensorflow

 

2.2. 코드 예시

import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.neighbors import NearestNeighbors
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Embedding, Flatten

# 예시 데이터: 사용자, 상품, 평점
data = {
    'user_id': [1, 2, 3, 4, 5, 6],
    'item_id': [1, 2, 3, 1, 2, 3],
    'rating': [5, 4, 3, 5, 4, 2]
}

# 데이터프레임 생성
df = pd.DataFrame(data)

# **1. 데이터 전처리**
# 사용자와 아이템에 대한 ID를 라벨 인코딩
user_encoder = LabelEncoder()
item_encoder = LabelEncoder()

df['user'] = user_encoder.fit_transform(df['user_id'])
df['item'] = item_encoder.fit_transform(df['item_id'])

# **2. Collaborative Filtering (kNN을 이용한 유사 사용자 추천)**
X = df[['user', 'item']]
y = df['rating']

# kNN 모델 학습
knn = NearestNeighbors(n_neighbors=2, metric='cosine')
knn.fit(X)

# 예시로 첫 번째 사용자가 어떤 유사한 사용자가 있는지 찾기
distances, indices = knn.kneighbors([[0, 0]])  # 첫 번째 사용자에 대한 유사도 계산
print(f"유사 사용자 인덱스: {indices}, 거리: {distances}")

# **3. Content-based Filtering (딥러닝을 이용한 추천 모델)**
# 예시: 임베딩을 통한 콘텐츠 기반 추천
# 모델 정의
model = Sequential()
model.add(Embedding(input_dim=6, output_dim=8, input_length=1))  # 사용자 임베딩
model.add(Flatten())
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='linear'))

model.compile(optimizer='adam', loss='mean_squared_error')

# 모델 훈련
X_train, X_test, y_train, y_test = train_test_split(df[['user', 'item']], y, test_size=0.2, random_state=42)

model.fit(X_train[['user']], y_train, epochs=10, batch_size=32, validation_data=(X_test[['user']], y_test))

# **4. 추천 예측**
# 훈련된 모델을 이용해 사용자의 선호도를 예측
user_id = 1  # 예시: 1번 사용자
predicted_rating = model.predict(np.array([user_id]))
print(f"사용자 {user_id}의 예측된 평점: {predicted_rating}")

# **5. 추천 시스템 결과**
# 예측된 결과를 기반으로 추천 리스트 생성
# 예를 들어, top-N 추천을 만들 수 있습니다.

 

3. AI 기반 추천 시스템 설명

3.1. 데이터 전처리

  • 사용자 및 상품 인코딩: 사용자와 상품에 대해 각각 LabelEncoder를 사용하여 수치형으로 변환합니다.
  • 평점 데이터: 사용자가 평가한 평점 데이터를 기반으로 추천을 진행합니다.

3.2. Collaborative Filtering (kNN)

  • 유사 사용자 찾기: NearestNeighbors를 사용하여 유사한 사용자를 찾아냅니다. 사용자의 구매 이력이나 선호도를 기반으로 다른 사용자의 유사도를 계산합니다.

3.3. Content-based Filtering (딥러닝)

  • 딥러닝을 통한 추천: 사용자의 선호도 및 상품 정보를 학습한 후, **임베딩(Embedding)**을 통해 사용자의 특성을 벡터화하여 추천을 예측합니다. 이 예시는 매우 간단한 구조로, 사용자의 ID와 상품의 ID를 임베딩하여 추천을 예측합니다.

3.4. 추천 예측

  • 사용자의 예측된 평점을 기반으로 해당 사용자가 좋아할만한 상품을 추천합니다. 예측된 평점은 사용자와 상품 간의 관계를 학습한 결과입니다.

4. 결론

이 글에서는 AI 기반 추천 시스템을 구현하기 위한 아키텍쳐와 Python 코드 예시를 다뤘습니다. 추천 시스템을 구현할 때, Collaborative Filtering(kNN)과 Content-based Filtering(딥러닝)을 결합하여 더 정교한 추천을 제공할 수 있습니다. 이를 통해 사용자의 구매 이력선호도를 바탕으로 더욱 개인화된 상품 추천을 할 수 있습니다.

실제 운영 환경에서는 이러한 추천 시스템을 실시간 데이터피드백을 반영하여 지속적으로 학습시키고, 모델을 개선하는 방식으로 적용할 수 있습니다.

728x90
반응형
728x90
반응형

최근 AI 기술이 비약적으로 발전하면서, 다양한 개발 환경에서 AI 기능을 손쉽게 통합할 수 있게 되었습니다. 특히 Java 기반의 Spring AIPython 기반의 AI 프레임워크는 개발자들 사이에서 큰 주목을 받고 있습니다. 이번 글에서는 Spring AI와 Python AI를 간단히 비교하고 각자의 장단점을 살펴보겠습니다.


🌱 Spring AI란?

Spring AI는 Java의 대표적 웹 프레임워크인 Spring 위에서 구축된 AI 통합 프레임워크입니다. 스프링 생태계를 활용하여, 애플리케이션에서 AI 기능을 쉽게 통합할 수 있도록 지원합니다.

🔹 Spring AI의 장점

  • Java/Spring 생태계 활용: 기존 Java 개발 환경을 그대로 사용할 수 있어, Java 개발자에게 매우 친숙합니다.
  • 손쉬운 통합: Spring Boot를 활용하면 AI 모델의 통합과 REST API 구축을 최소한의 코드로 구현할 수 있습니다.
  • 강력한 엔터프라이즈 지원: 보안, 확장성, 유지보수 측면에서 기업 환경에 적합합니다.
  • 표준화된 구조: Spring의 명확한 구조와 DI(의존성 주입)를 통한 모듈화로 관리 용이성을 제공합니다.

🔸 Spring AI의 단점

  • 제한적인 생태계: Python 기반 AI 도구들에 비하면 모델의 다양성이나 최신성은 상대적으로 떨어질 수 있습니다.
  • 성능 오버헤드: JVM 환경 특성상, 특정 AI 작업에서는 Python에 비해 실행 속도가 느릴 수 있습니다.

📌 Spring AI 간단 코드 예시

// Spring AI 간단 예제 (Java)
@Configuration
public class AiConfig {

    @Bean
    public OpenAiChatClient openAiChatClient() {
        return new OpenAiChatClient("API_KEY");
    }
}

@Service
public class AiService {

    @Autowired
    private OpenAiChatClient aiClient;

    public String getChatResponse(String message) {
        return aiClient.call(message);
    }
}

🐍 Python 기반 AI란?

Python은 TensorFlow, PyTorch, HuggingFace 등 강력한 AI/ML 라이브러리를 제공하는, 현재 AI 업계에서 가장 널리 쓰이는 프로그래밍 언어입니다.

🔹 Python AI의 장점

  • 풍부한 생태계: 수많은 AI/ML 라이브러리와 프레임워크를 바로 사용할 수 있습니다.
  • 높은 접근성과 빠른 프로토타이핑: 코드가 간결하고 직관적이며, Jupyter Notebook 등을 통해 손쉽게 프로토타입을 구축할 수 있습니다.
  • 강력한 커뮤니티 지원: 최신 논문 및 모델 구현이 빠르게 제공됩니다.
  • 뛰어난 성능: NumPy, Pandas와 같은 효율적인 라이브러리를 활용하여 성능 최적화가 쉽습니다.

🔸 Python AI의 단점

  • 엔터프라이즈급 관리 부족: Spring처럼 표준화된 구조나 관리 측면의 지원이 부족하여 대규모 애플리케이션에서 복잡성이 증가할 수 있습니다.
  • 프로덕션 환경에서의 보안 관리: Java 생태계만큼 강력한 보안 관리가 상대적으로 부족하여 추가적 관리 노력이 필요할 수 있습니다.

📌 Python AI 간단 코드 예시

 
# Python 간단 예제 (OpenAI API)
from openai import OpenAI

client = OpenAI(api_key="API_KEY")

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

print(get_chat_response("AI 개발이 쉽나요?"))

반응형

⚖️ Spring AI vs Python AI 한눈에 비교하기

구분Spring AI (Java)Python AI
생태계 Spring 기반, 한정적 방대한 생태계 제공
성능 JVM 오버헤드로 제한적 빠르고 효율적
관리 및 유지보수 우수한 관리 지원 관리가 복잡할 수 있음
프로토타이핑 속도 상대적으로 느림 매우 빠름
최신 AI 모델 지원 일부 한계 존재 최신 모델 즉각 사용 가능

🎯 어떤 것을 선택해야 할까?

결국 선택은 프로젝트의 특성과 요구사항에 따라 달라집니다.

  • 기존 시스템이 Java/Spring 기반이고 안정적이고 관리가 쉬운 AI 통합이 필요하다면 → Spring AI
  • 최신의 다양한 AI 모델을 빠르게 적용하거나 프로토타입 개발이 중요하다면 → Python AI

두 가지 기술 모두 각자의 장단점을 잘 활용하면, 효과적인 AI 서비스 구축이 가능합니다.


✨ 결론

Spring AI와 Python AI 모두 장점과 단점이 뚜렷하며, 목적과 상황에 따라 적합한 선택이 달라집니다. 자신의 프로젝트 환경과 요구사항을 꼼꼼히 검토하여 최적의 기술을 선택하는 것이 가장 중요합니다.

이 비교가 여러분의 AI 개발에 좋은 참고가 되었길 바랍니다! 🚀

728x90
반응형

+ Recent posts