void_gryph / modules /assistant_client.py
Gryphus314's picture
feat: prototipo funcional multi-módulo con arquitectura optimizada
f6174cf
import sys
import os
# Forzar la prioridad del entorno virtual si existe (útil en Codespaces)
base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
venv_site_packages = os.path.join(base_path, ".venv", "lib", "python3.12", "site-packages")
if os.path.exists(venv_site_packages) and venv_site_packages not in sys.path:
sys.path.insert(0, venv_site_packages)
try:
from google import genai
except ImportError:
# Fallback para entornos donde el namespace es problemático
try:
import google_genai as genai
except ImportError:
pass
# Inicializar el cliente con la nueva sintaxis oficial
def get_client():
api_key = os.environ.get("GEMINI_API_KEY")
if not api_key or api_key.strip() == "":
return None
try:
return genai.Client(api_key=api_key)
except Exception:
return None
def ask_gemini(prompt: str):
client = get_client()
if not client:
return "⚠️ **Error**: No se configuró la variable `GEMINI_API_KEY`. Por favor, configúrala en los Secrets o terminal."
try:
response = client.models.generate_content(
model='gemini-1.5-flash',
contents=prompt
)
return response.text
except Exception as e:
# Intento de fallback automático a otro modelo común
try:
response = client.models.generate_content(
model='gemini-1.5-pro',
contents=prompt
)
return response.text
except:
return f"❌ **Error en la API de Gemini**: {e}"