import os import google.generativeai as genai from typing import List from ..models import PlayHistory, Track class AIService: def __init__(self, api_key: str): genai.configure(api_key=api_key) self.model = genai.GenerativeModel('models/gemini-2.0-flash') def generate_analysis(self, plays: List[PlayHistory]) -> str: """ Generates a summary analysis of the provided play history. """ if not plays: return "No listening history available to analyze." # Prepare a simple text representation of the history history_text = "Here is my recent listening history:\n" for play in plays: history_text += f"- {play.track.name} by {play.track.artist} (Played at {play.played_at})\n" prompt = f""" You are a music taste analyst. Analyze the following listening history and provide a short, fun, and insightful summary. Identify the vibe, top artists, and any interesting patterns (e.g. "You started with high energy and chilled out"). Keep it under 200 words. {history_text} """ try: response = self.model.generate_content(prompt) return response.text except Exception as e: return f"AI Analysis failed: {str(e)}" # Singleton accessor def get_ai_service(): return AIService(api_key=os.getenv("GEMINI_API_KEY"))