File size: 6,161 Bytes
d90d6a6
effad1b
d90d6a6
71f867b
12cb4be
95da284
3e64a10
71f867b
 
effad1b
71f867b
 
d90d6a6
435164a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d90d6a6
 
2011e87
716a958
d90d6a6
 
51214b8
b453f44
716a958
b453f44
 
 
 
716a958
effad1b
b453f44
 
 
 
716a958
b453f44
 
716a958
b453f44
 
716a958
45042e7
d90d6a6
 
5a47dee
 
d90d6a6
 
b453f44
d90d6a6
12cb4be
 
 
a968dbe
2b6d34d
d90d6a6
 
51214b8
716a958
2690756
4a900cc
71f867b
 
 
 
d90d6a6
 
e8b930e
effad1b
 
 
 
 
 
afb0579
effad1b
 
 
 
 
e8b930e
effad1b
 
 
716a958
0983bee
 
 
 
 
95da284
2b6d34d
 
5b38336
0983bee
b462213
2011e87
95da284
b462213
 
 
5b38336
 
 
 
b462213
b453f44
 
bb5a2a3
effad1b
111f19a
e8b930e
dc99960
5b38336
 
2690756
2b6d34d
 
effad1b
2b6d34d
effad1b
ec1a890
 
71f867b
 
 
2b6d34d
 
 
 
 
71f867b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
import io
import time
import globales
import random
import herramientas
import gradio_client
import conexion_firebase
from fastapi import HTTPException, status
from huggingface_hub import InferenceClient


servidor = globales.servidor

def procesa_dni(platillo):

    print("Estoy en procesa DNI...")

    print("Y esto es contents: ", platillo)

    time.sleep(18)

    prompt = globales.previo + platillo
    print("Platillo enviado:", platillo) 

    try:

        dict_espacios = conexion_firebase.obtenDato('nowme', servidor, 'espacios')

        espacios_habilitados = [
        nombre for nombre, config in dict_espacios.items()
        if config.get("habilitado", False) # Usamos .get() para evitar KeyError si 'habilitado' no existe
        ]

        print(f"Espacios habilitados: {espacios_habilitados}")
        
        espacio_aleatorio_elegido = random.choice(espacios_habilitados)
        configuracion_espacio = dict_espacios[espacio_aleatorio_elegido]
        print(f"La configuraci贸n completa para '{espacio_aleatorio_elegido}' es: {configuracion_espacio}")

        client = gradio_client.Client(configuracion_espacio['ruta'], hf_token=globales.llave)
        #kwargs = selected_space_config['static_kwargs']

        result = client.predict(
        #**kwargs,
        prompt=prompt,
        #negative_prompt="live animals",
        # seed=42,
        # randomize_seed=True,
        width=786,
        height=568,
        # guidance_scale=3.5,
        # num_inference_steps=28,
        api_name=configuracion_espacio['api_name']       
        )

        #Cuando es GPU, debe de restar segundos disponibles de HF 
        herramientas.restaSegundosGPU(globales.work_cost)

        print("Platillo generado:", platillo)
        return result[0]

    except Exception as e:     
        print("Excepci贸n: ", e)        
        # Opci贸n para regresar imagen gen茅rica. (ya no porque se env铆a desde backend.)
        # return "default.png"
        raise HTTPException(
            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
            detail=e
        )

def genera_platillo_gpu(platillo):

    prompt = globales.previo + platillo
    print("Platillo enviado:", platillo) 

    try:

        dict_espacios = conexion_firebase.obtenDato('nowme', servidor, 'espacios')

        espacios_habilitados = [
        nombre for nombre, config in dict_espacios.items()
        if config.get("habilitado", False) # Usamos .get() para evitar KeyError si 'habilitado' no existe
        ]

        print(f"Espacios habilitados: {espacios_habilitados}")
        
        espacio_aleatorio_elegido = random.choice(espacios_habilitados)
        configuracion_espacio = dict_espacios[espacio_aleatorio_elegido]
        print(f"La configuraci贸n completa para '{espacio_aleatorio_elegido}' es: {configuracion_espacio}")

        client = gradio_client.Client(configuracion_espacio['ruta'], hf_token=globales.llave)
        #kwargs = selected_space_config['static_kwargs']

        result = client.predict(
        #**kwargs,
        prompt=prompt,
        #negative_prompt="live animals",
        # seed=42,
        # randomize_seed=True,
        width=786,
        height=568,
        # guidance_scale=3.5,
        # num_inference_steps=28,
        api_name=configuracion_espacio['api_name']       
        )

        #Cuando es GPU, debe de restar segundos disponibles de HF 
        herramientas.restaSegundosGPU(globales.work_cost)

        print("Platillo generado:", platillo)
        return result[0]

    except Exception as e:     
        print("Excepci贸n: ", e)        
        # Opci贸n para regresar imagen gen茅rica. (ya no porque se env铆a desde backend.)
        # return "default.png"
        raise HTTPException(
            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
            detail=e
        )

def genera_platillo_inference(platillo):

    dict_modelos = conexion_firebase.obtenDato('nowme', servidor, 'modelos')

    modelos_habilitados = [
        nombre for nombre, config in dict_modelos.items()
        if config.get("habilitado", False) # Usamos .get() para evitar KeyError si 'habilitado' no existe
        ]
    
    print(f"Modelos habilitados: {modelos_habilitados}")

    modelo_aleatorio_elegido = random.choice(modelos_habilitados)
    configuracion_modelo = dict_modelos[modelo_aleatorio_elegido]
    print(f"La configuraci贸n completa para '{modelo_aleatorio_elegido}' es: {configuracion_modelo}")


    creditos_restantes_inference = conexion_firebase.obtenDato('nowme', servidor, 'inferencias')
    
    #print("Los cr茅ditos restantes de hf-inference que tienes son: ", creditos_restantes_inference)
    if creditos_restantes_inference > 0:
        provedor_seleccionado = globales.proveedor
    else:
        provedor_seleccionado = globales.proveedor_back

    prompt = globales.previo + platillo
    print("Platillo enviado:", platillo)
       
    client = InferenceClient(
            provider= provedor_seleccionado,
            model=configuracion_modelo['ruta'],
            api_key=globales.llave
        )    
    
    print("Cree cliente: ", client)
    time.sleep(0)

    try: 
        image = client.text_to_image(
        prompt,
        #negative_prompt="live animals",        
        width=784, #786
        height=560, #568
        num_inference_steps=16
        ) 

        #Detenido momentaneamente por cambio a firebase.
        herramientas.restaSegundosInference(globales.inference_cost)              
        
    except Exception as e:
        print("Excepci贸n: ", e)
        if "Gateway Time-out" in str(e): 
            print("GATEWAY TIME-OUT 馃拃")
            #modelo=globales.inferencia_backup #Con el nuevo paradigma ya no hay cambio de modelo.
            #Escribe en txt el nuevo modelo.
            #herramientas.modificaModeloActual(modelo)        
        error_impreso = f"Error: {e}"
        print(error_impreso)
        raise HTTPException(
            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
        )
    
    img_io = io.BytesIO()
    image.save(img_io, "PNG")
    img_io.seek(0)
    print("Platillo generado:", platillo)
    return img_io