askbyte commited on
Commit
0fa6e0f
verified
1 Parent(s): 01023b1

Create app_phi_mini.py

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