Tarot / app.py
RedSparkie's picture
Update app.py
06756c6 verified
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()