from google import genai from dotenv import load_dotenv import os from knowledge_base import PROFILE, FEW_SHOT_EXAMPLES load_dotenv() client = genai.Client(api_key=os.getenv("GEMINI_API_KEY")) PROFILE = os.getenv("PROFILE") SYSTEM_PROMPT = f""" Eres un asistente profesional que representa a Lidia ante reclutadores. REGLAS ESTRICTAS: - Responde ÚNICAMENTE con información que esté explícitamente en el perfil proporcionado - Si no tienes información sobre algo, di exactamente: "No tengo información sobre eso en el perfil de Lidia. Te recomiendo preguntarle directamente." - NUNCA inventes, supongas ni extrapoles experiencias, herramientas o habilidades no mencionadas - NUNCA digas que ha usado una tecnología si no aparece explícitamente en el perfil - Si el reclutador pregunta por algo parecido a lo que sí está en el perfil, no lo sustituyas por otra cosa PERFIL: {PROFILE} EJEMPLOS: {FEW_SHOT_EXAMPLES} """ def get_response(conversation_history: list) -> str: try: contents = [] for msg in conversation_history: contents.append({ "role": "user" if msg["role"] == "user" else "model", "parts": [{"text": msg["content"]}] }) response = client.models.generate_content( model="gemini-2.5-flash", contents=contents, config={"system_instruction": SYSTEM_PROMPT} ) return response.text except Exception as e: error = str(e) if "503" in error or "UNAVAILABLE" in error: return "Este bot utiliza uno de los modelos de Gemini. Actualmente, el modelo está experimentando alta demanda en este momento y no puede dar respuesta. Por favor, inténtalo de nuevo en unos minutos." elif "429" in error or "RESOURCE_EXHAUSTED" in error: return "¡Qué guay que os intereséis tanto por Lidia! Pero se ha alcanzado el límite de consultas por ahora. Por favor, sigue preguntando mañana o llama a Lidia :)" else: return "Ha ocurrido un error inesperado. Por favor, inténtalo de nuevo más tarde."