Tarot / app.py
RedSparkie's picture
Update app.py
a00a85b verified
raw
history blame
3.12 kB
import gradio as gr
import random
import os
from huggingface_hub import InferenceClient
import secrets # Para manejar claves API de manera segura
# Obtener la clave API desde un secreto
API_KEY = secrets.get("KEY") # Define el secreto en el entorno del Space
# Configuración del cliente de inferencia
client = InferenceClient(
provider="hf-inference",
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-Distill-Qwen-1.5B",
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()