RedSparkie commited on
Commit
1fc2e89
·
verified ·
1 Parent(s): 4f169d9

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +97 -0
app.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import random
3
+ import os
4
+ from huggingface_hub import InferenceClient
5
+ import secrets # Para manejar claves API de manera segura
6
+
7
+ # Obtener la clave API desde un secreto
8
+ API_KEY = secrets.get("KEY") # Define el secreto en el entorno del Space
9
+
10
+ # Configuración del cliente de inferencia
11
+ client = InferenceClient(
12
+ provider="hf-inference",
13
+ api_key=API_KEY
14
+ )
15
+
16
+ # Cargar las imágenes de las cartas
17
+ def cargar_imagenes(ruta_carpeta):
18
+ imagenes = {}
19
+ for archivo in os.listdir(ruta_carpeta):
20
+ if archivo.endswith(".png") or archivo.endswith(".jpg"):
21
+ nombre_carta = os.path.splitext(archivo)[0]
22
+ imagenes[nombre_carta] = os.path.join(ruta_carpeta, archivo)
23
+ return imagenes
24
+
25
+ # Ruta a la carpeta que contiene las imágenes de las cartas
26
+ ruta_carpeta_cartas = "ruta/a/las/imagenes/de/las/cartas" # Reemplace con la ruta real
27
+ imagenes_cartas = cargar_imagenes(ruta_carpeta_cartas)
28
+
29
+ # Lista de nombres de las cartas para selección aleatoria
30
+ nombres_cartas = list(imagenes_cartas.keys())
31
+
32
+ # Función para seleccionar cartas aleatoriamente
33
+ def seleccionar_cartas(num_cartas=3):
34
+ return random.sample(nombres_cartas, num_cartas)
35
+
36
+ # Función para generar la interpretación de las cartas
37
+ def interpretar_cartas(cartas_seleccionadas):
38
+ descripcion = "Las cartas seleccionadas son:\n"
39
+ for carta in cartas_seleccionadas:
40
+ descripcion += f"- {carta}\n"
41
+ descripcion += "Proporcione una interpretación detallada de esta tirada de tarot."
42
+
43
+ messages = [
44
+ {
45
+ "role": "user",
46
+ "content": descripcion
47
+ }
48
+ ]
49
+
50
+ completion = client.chat.completions.create(
51
+ model="deepseek-ai/DeepSeek-R1",
52
+ messages=messages,
53
+ max_tokens=500
54
+ )
55
+
56
+ return completion.choices[0].message["content"]
57
+
58
+ # Definir la interfaz de Gradio
59
+ def interfaz():
60
+ with gr.Blocks() as demo:
61
+ gr.Markdown("# Lector de Tarot con Interpretación de LLM")
62
+
63
+ with gr.Row():
64
+ boton_echar = gr.Button("Echar las cartas")
65
+ boton_interpretar = gr.Button("Interpretar las cartas")
66
+
67
+ with gr.Row():
68
+ imagen1 = gr.Image()
69
+ imagen2 = gr.Image()
70
+ imagen3 = gr.Image()
71
+
72
+ interpretacion = gr.Textbox(label="Interpretación")
73
+
74
+ cartas_seleccionadas = []
75
+
76
+ def mostrar_cartas():
77
+ seleccion = seleccionar_cartas()
78
+ cartas_seleccionadas.clear()
79
+ cartas_seleccionadas.extend(seleccion)
80
+ imagen1.update(value=imagenes_cartas[seleccion[0]])
81
+ imagen2.update(value=imagenes_cartas[seleccion[1]])
82
+ imagen3.update(value=imagenes_cartas[seleccion[2]])
83
+
84
+ def mostrar_interpretacion():
85
+ if cartas_seleccionadas:
86
+ resultado = interpretar_cartas(cartas_seleccionadas)
87
+ interpretacion.update(value=resultado)
88
+
89
+ boton_echar.click(mostrar_cartas)
90
+ boton_interpretar.click(mostrar_interpretacion)
91
+
92
+ return demo
93
+
94
+ # Ejecutar la aplicación
95
+ if __name__ == "__main__":
96
+ app = interfaz()
97
+ app.launch()