Spaces:
Sleeping
Sleeping
| 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." |