import gradio as gr import random import os from huggingface_hub import InferenceClient # Obtener la clave API desde una variable de entorno API_KEY = os.getenv("KEY") # Define el secreto en el entorno del Space if not API_KEY: raise ValueError("La clave API no está definida. Por favor, configúrela como un secreto en el Space.") # Configuración del cliente de inferencia client = InferenceClient(api_key=API_KEY) # Cargar las imágenes de las cartas def cargar_imagenes(ruta_carpeta): imagenes = {} for archivo in os.listdir(ruta_carpeta): if archivo.endswith(".png") or archivo.endswith(".jpg"): nombre_carta = os.path.splitext(archivo)[0] imagenes[nombre_carta] = os.path.join(ruta_carpeta, archivo) return imagenes # Ruta a la carpeta que contiene las imágenes de las cartas ruta_carpeta_cartas = "ruta/a/las/imagenes/de/las/cartas" # Reemplace con la ruta real imagenes_cartas = cargar_imagenes(ruta_carpeta_cartas) # Lista de nombres de las cartas para selección aleatoria nombres_cartas = list(imagenes_cartas.keys()) # Función para seleccionar cartas aleatoriamente def seleccionar_cartas(num_cartas=3): return random.sample(nombres_cartas, num_cartas) # Función para generar la interpretación de las cartas def interpretar_cartas(cartas_seleccionadas): descripcion = "Las cartas seleccionadas son:\n" for carta in cartas_seleccionadas: descripcion += f"- {carta}\n" descripcion += "Proporcione una interpretación detallada de esta tirada de tarot." messages = [ { "role": "user", "content": descripcion } ] completion = client.chat.completions.create( model="deepseek-ai/DeepSeek-R1", messages=messages, max_tokens=500 ) return completion.choices[0].message["content"] # Definir la interfaz de Gradio def interfaz(): with gr.Blocks() as demo: gr.Markdown("# Lector de Tarot con Interpretación de LLM") with gr.Row(): boton_echar = gr.Button("Echar las cartas") boton_interpretar = gr.Button("Interpretar las cartas") with gr.Row(): imagen1 = gr.Image() imagen2 = gr.Image() imagen3 = gr.Image() interpretacion = gr.Textbox(label="Interpretación") cartas_seleccionadas = [] def mostrar_cartas(): seleccion = seleccionar_cartas() cartas_seleccionadas.clear() cartas_seleccionadas.extend(seleccion) imagen1.update(value=imagenes_cartas[seleccion[0]]) imagen2.update(value=imagenes_cartas[seleccion[1]]) imagen3.update(value=imagenes_cartas[seleccion[2]]) def mostrar_interpretacion(): if cartas_seleccionadas: resultado = interpretar_cartas(cartas_seleccionadas) interpretacion.update(value=resultado) boton_echar.click(mostrar_cartas) boton_interpretar.click(mostrar_interpretacion) return demo # Ejecutar la aplicación if __name__ == "__main__": app = interfaz() app.launch()