askbyte commited on
Commit
fda4c03
verified
1 Parent(s): 06ee2a9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -65
app.py CHANGED
@@ -1,3 +1,7 @@
 
 
 
 
1
  import gradio as gr
2
  from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
3
  import torch
@@ -6,92 +10,86 @@ import os
6
 
7
  # Funci贸n para cargar el prompt desde el archivo
8
  def get_system_prompt():
9
- with open("prompt.txt", "r", encoding="utf-8") as f:
10
- return f.read().strip()
11
 
12
  # Funci贸n para generar respuestas
13
  def generate_response(user_message):
14
- try:
15
- if not user_message.strip():
16
- return "Por favor, escribe una pregunta para que pueda ayudarte."
17
-
18
- # Obtener el prompt del sistema
19
- system_prompt = get_system_prompt()
20
-
21
- # Crear el prompt completo para TinyLlama
22
- prompt = f"""<|system|>
23
- {system_prompt}
24
- <|user|>
25
- {user_message}
26
- <|assistant|>"""
27
-
28
- # Generar respuesta usando el pipeline
29
- response = generator(
30
- prompt,
31
- max_new_tokens=256, # Reducido para mayor velocidad
32
- temperature=0.7,
33
- top_p=0.9,
34
- do_sample=True,
35
- num_return_sequences=1
36
- )[0]["generated_text"]
37
-
38
- # Extraer solo la respuesta del asistente (despu茅s del 煤ltimo <|assistant|>)
39
- assistant_response = response.split("<|assistant|>")[-1].strip()
40
-
41
- # Forzar recolecci贸n de basura
42
- gc.collect()
43
- torch.cuda.empty_cache() if torch.cuda.is_available() else None
44
-
45
- return assistant_response
46
-
47
- except Exception as e:
48
- print(f"Error: {str(e)}")
49
- return f"Lo siento, ha ocurrido un error: {str(e)}"
50
 
51
  # Cargar el modelo y crear el pipeline
52
- print("Cargando modelo ultra ligero...")
53
 
54
- # Usar TinyLlama, un modelo muy peque帽o (1.1B par谩metros) pero potente
55
- model_name = "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
56
 
57
  # Configuraci贸n para reducir el uso de memoria y aumentar velocidad
58
  tokenizer = AutoTokenizer.from_pretrained(model_name)
59
  model = AutoModelForCausalLM.from_pretrained(
60
- model_name,
61
- torch_dtype=torch.float32,
62
- low_cpu_mem_usage=True,
63
- # Cargamos en 8-bit para reducir memoria y aumentar velocidad
64
- load_in_8bit=True
65
  )
66
 
67
  # Crear el pipeline de generaci贸n de texto
68
  generator = pipeline(
69
- "text-generation",
70
- model=model,
71
- tokenizer=tokenizer
72
  )
73
 
74
  print("Modelo cargado correctamente!")
75
 
76
  # Crear la interfaz de Gradio
77
  demo = gr.Interface(
78
- fn=generate_response,
79
- inputs=gr.Textbox(
80
- placeholder="Escribe tu pregunta sobre emprendimiento aqu铆...",
81
- label="Tu pregunta"
82
- ),
83
- outputs=gr.Textbox(label="Respuesta de BITER"),
84
- title="BITER - Tu Mentor en Tiempo Real para Decisiones de Negocio",
85
- description="BITER es un asistente de IA que responde dudas de emprendedores como si fuera un CEO experimentado.",
86
- examples=[
87
- ["驴C贸mo puedo validar mi idea de negocio con poco presupuesto?"],
88
- ["驴Cu谩l es la mejor estrategia para conseguir mis primeros clientes?"],
89
- ["驴Deber铆a invertir en publicidad en redes sociales o en SEO?"]
90
- ],
91
- allow_flagging="never"
92
  )
93
 
94
  # Lanzar la aplicaci贸n con configuraci贸n para ahorrar memoria
95
  if __name__ == "__main__":
96
- # Configurar menos workers para ahorrar memoria y aumentar velocidad
97
- demo.queue(max_size=1).launch(share=False, debug=False)
 
1
+ """
2
+ Versi贸n usando Phi-1.5, un modelo m谩s peque帽o que Phi-2.
3
+ """
4
+
5
  import gradio as gr
6
  from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
7
  import torch
 
10
 
11
  # Funci贸n para cargar el prompt desde el archivo
12
  def get_system_prompt():
13
+ with open("prompt.txt", "r", encoding="utf-8") as f:
14
+ return f.read().strip()
15
 
16
  # Funci贸n para generar respuestas
17
  def generate_response(user_message):
18
+ try:
19
+ if not user_message.strip():
20
+ return "Por favor, escribe una pregunta para que pueda ayudarte."
21
+
22
+ # Obtener el prompt del sistema
23
+ system_prompt = get_system_prompt()
24
+
25
+ # Crear el prompt completo para Phi-1.5
26
+ prompt = f"Instrucciones: {system_prompt}\n\nUsuario: {user_message}\n\nAsistente:"
27
+
28
+ # Generar respuesta usando el pipeline
29
+ response = generator(
30
+ prompt,
31
+ max_new_tokens=256, # Reducido para mayor velocidad
32
+ temperature=0.7,
33
+ top_p=0.9,
34
+ do_sample=True,
35
+ num_return_sequences=1
36
+ )[0]["generated_text"]
37
+
38
+ # Extraer solo la respuesta del asistente (despu茅s de "Asistente:")
39
+ assistant_response = response.split("Asistente:")[-1].strip()
40
+
41
+ # Forzar recolecci贸n de basura
42
+ gc.collect()
43
+ torch.cuda.empty_cache() if torch.cuda.is_available() else None
44
+
45
+ return assistant_response
46
+
47
+ except Exception as e:
48
+ print(f"Error: {str(e)}")
49
+ return f"Lo siento, ha ocurrido un error: {str(e)}"
 
 
 
 
50
 
51
  # Cargar el modelo y crear el pipeline
52
+ print("Cargando modelo Phi-1.5 (1.3B par谩metros)...")
53
 
54
+ # Usar Phi-1.5, un modelo muy peque帽o (1.3B par谩metros) pero potente
55
+ model_name = "microsoft/phi-1_5"
56
 
57
  # Configuraci贸n para reducir el uso de memoria y aumentar velocidad
58
  tokenizer = AutoTokenizer.from_pretrained(model_name)
59
  model = AutoModelForCausalLM.from_pretrained(
60
+ model_name,
61
+ torch_dtype=torch.float32,
62
+ low_cpu_mem_usage=True
 
 
63
  )
64
 
65
  # Crear el pipeline de generaci贸n de texto
66
  generator = pipeline(
67
+ "text-generation",
68
+ model=model,
69
+ tokenizer=tokenizer
70
  )
71
 
72
  print("Modelo cargado correctamente!")
73
 
74
  # Crear la interfaz de Gradio
75
  demo = gr.Interface(
76
+ fn=generate_response,
77
+ inputs=gr.Textbox(
78
+ placeholder="Escribe tu pregunta sobre emprendimiento aqu铆...",
79
+ label="Tu pregunta"
80
+ ),
81
+ outputs=gr.Textbox(label="Respuesta de BITER"),
82
+ title="BITER - Tu Mentor en Tiempo Real para Decisiones de Negocio",
83
+ description="BITER es un asistente de IA que responde dudas de emprendedores como si fuera un CEO experimentado.",
84
+ examples=[
85
+ ["驴C贸mo puedo validar mi idea de negocio con poco presupuesto?"],
86
+ ["驴Cu谩l es la mejor estrategia para conseguir mis primeros clientes?"],
87
+ ["驴Deber铆a invertir en publicidad en redes sociales o en SEO?"]
88
+ ],
89
+ allow_flagging="never"
90
  )
91
 
92
  # Lanzar la aplicaci贸n con configuraci贸n para ahorrar memoria
93
  if __name__ == "__main__":
94
+ # Configurar menos workers para ahorrar memoria y aumentar velocidad
95
+ demo.queue(max_size=1).launch(share=False, debug=False)