File size: 3,090 Bytes
d90d6a6
 
716a958
12cb4be
95da284
 
3e64a10
716a958
 
d90d6a6
 
 
2011e87
716a958
d90d6a6
 
51214b8
716a958
 
 
 
 
 
 
 
 
 
 
5a47dee
716a958
45042e7
d90d6a6
 
5a47dee
 
d90d6a6
 
51214b8
d90d6a6
12cb4be
716a958
 
12cb4be
 
a968dbe
2b6d34d
d90d6a6
 
51214b8
716a958
2690756
4a900cc
95da284
d90d6a6
 
 
5b38336
afb0579
 
 
e8b930e
0983bee
afb0579
0983bee
afb0579
 
e8b930e
716a958
0983bee
 
 
 
 
95da284
2b6d34d
 
5b38336
0983bee
2011e87
95da284
5b38336
 
 
 
45042e7
74ba95e
 
bb5a2a3
 
111f19a
 
e8b930e
dc99960
5b38336
 
2690756
2b6d34d
 
 
 
5b3c963
2b6d34d
 
 
 
 
 
 
 
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
import io
import globales
import espacios
import herramientas
import gradio_client
from huggingface_hub import InferenceClient
import conexion_firebase
import random
import time

def genera_platillo_gpu(platillo):

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

    try:

        selected_space_config = random.choice(espacios.espacio)

        client = gradio_client.Client(selected_space_config['id'], hf_token=globales.llave)

        # kwargs = {
        #     "prompt": prompt,
        #     "api_name": "/infer"
        # } 

        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="/infer"       
        )

        #print("Result inmediato es: ", result)

        #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"
        return '{"Error 500": e}'


def genera_platillo_inference(platillo):

    
    modelo_actual = conexion_firebase.obtenDato('nowme', 'huggingface', 'modelo_actual')
    modelo = modelo_actual

    print("Modelo:", modelo)
    
    #Elegir proveedor de inferencia
    creditos_restantes_inference = conexion_firebase.obtenDato('nowme', 'huggingface', 'hfInference')
    #creditos_restantes_inference = 5000

    #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,
            api_key=globales.llave
        )    

    try: 
        image = client.text_to_image(
        prompt,
        #negative_prompt="live animals",
        model=modelo,
        width=786,
        height=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
            #Escribe en txt el nuevo modelo.
            herramientas.modificaModeloActual(modelo)        
        return f"Error: {e}"
    
    img_io = io.BytesIO()
    image.save(img_io, "PNG")
    img_io.seek(0)
    print("Platillo generado:", platillo)
    return img_io