Antonio49 commited on
Commit
9331b8e
1 Parent(s): 33c9f94

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -11
app.py CHANGED
@@ -5,7 +5,6 @@ import gradio as gr
5
  # Crear un cliente de inferencia para el modelo preentrenado Mixtral-8x7B-Instruct-v0.1
6
  client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
7
 
8
-
9
  # Función para formatear el prompt con historial
10
  def format_prompt(message, history, system_prompt):
11
  prompt = "<s>"
@@ -17,7 +16,7 @@ def format_prompt(message, history, system_prompt):
17
 
18
  # Función para generar respuestas dada una serie de parámetros
19
  def generate(
20
- prompt, history, system_prompt="Asistente para los usuarios y clientes de la empresa Canal de Isabel II, https://oficinavirtual.canaldeisabelsegunda.es/", temperature=0.9, max_new_tokens=4096, top_p=0.95, repetition_penalty=1.0,):
21
  # Ajustar valores de temperatura y top_p para asegurar que estén en el rango adecuado
22
  temperature = float(temperature)
23
  if temperature < 1e-2:
@@ -35,7 +34,8 @@ def generate(
35
  )
36
 
37
  # Formatear el prompt y obtener la respuesta del modelo de manera continua
38
- stream = client.text_generation(prompt, history, system_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
 
39
  output = ""
40
 
41
  # Iterar a través de las respuestas en el stream
@@ -44,6 +44,57 @@ def generate(
44
  yield output
45
  return output
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
  # Crear una interfaz de chat Gradio con el modelo generativo
49
  gr.ChatInterface(
@@ -58,18 +109,14 @@ gr.ChatInterface(
58
  layout="panel",
59
  height=500,
60
  ),
61
- textbox=gr.Textbox(
62
- placeholder="¿Qué parámetros definen la calidad del agua?",
63
- container=False,
64
- scale=7
65
- ),
66
  theme="soft",
 
67
  title="Mixtral 8B Fines didácticos Asistente de usuarios/clientes de Canal de Isabel ll",
68
- description='Autor: <a href=\"https://huggingface.co/Antonio49\">Antonio Fernández</a> de <a href=\"https://saturdays.ai/\">SaturdaysAI</a>. Formación: <a href=\"https://cursos.saturdays.ai/courses/\">Cursos Online AI</a> Aplicación desarrollada con fines docentes',
69
  retry_btn="Repetir",
70
  undo_btn="Deshacer",
71
  clear_btn="Borrar",
72
  submit_btn="Enviar",
73
  concurrency_limit=20,
74
- ).launch(show_api=False)
75
-
 
5
  # Crear un cliente de inferencia para el modelo preentrenado Mixtral-8x7B-Instruct-v0.1
6
  client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
7
 
 
8
  # Función para formatear el prompt con historial
9
  def format_prompt(message, history, system_prompt):
10
  prompt = "<s>"
 
16
 
17
  # Función para generar respuestas dada una serie de parámetros
18
  def generate(
19
+ prompt, history, system_prompt, temperature=0.9, max_new_tokens=4096, top_p=0.95, repetition_penalty=1.0,):
20
  # Ajustar valores de temperatura y top_p para asegurar que estén en el rango adecuado
21
  temperature = float(temperature)
22
  if temperature < 1e-2:
 
34
  )
35
 
36
  # Formatear el prompt y obtener la respuesta del modelo de manera continua
37
+ formatted_prompt = format_prompt(prompt, history, system_prompt)
38
+ stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
39
  output = ""
40
 
41
  # Iterar a través de las respuestas en el stream
 
44
  yield output
45
  return output
46
 
47
+ # Configurar inputs adicionales para la interfaz Gradio
48
+ additional_inputs = [
49
+ # Entrada de texto para el System Prompt (puedes omitir esto si no lo necesitas)
50
+ gr.Textbox(
51
+ label="System Prompt",
52
+ value="Asistente para los usuarios y clientes de la empresa Canal de Isabel II, https://oficinavirtual.canaldeisabelsegunda.es/",
53
+ max_lines=1,
54
+ interactive=True,
55
+ ),
56
+ # Control deslizante para la temperatura
57
+ gr.Slider(
58
+ label="Temperature",
59
+ value=0.9,
60
+ minimum=0.0,
61
+ maximum=1.0,
62
+ step=0.05,
63
+ interactive=True,
64
+ info="Valores más altos producen resultados más diversos",
65
+ ),
66
+ # Control deslizante para el número máximo de nuevos tokens
67
+ # Tengo que comprobar el número máximo de nuevos tokens, por el momento lo fijo a 4096.
68
+ gr.Slider(
69
+ label="Max new tokens",
70
+ value=4096,
71
+ minimum=0,
72
+ maximum=4096,
73
+ step=64,
74
+ interactive=True,
75
+ info="El máximo número de nuevos tokens",
76
+ ),
77
+ # Control deslizante para top-p (nucleus sampling)
78
+ gr.Slider(
79
+ label="Top-p (nucleus sampling)",
80
+ value=0.90,
81
+ minimum=0.0,
82
+ maximum=1,
83
+ step=0.05,
84
+ interactive=True,
85
+ info="Valores más altos muestrean más tokens de baja probabilidad",
86
+ ),
87
+ # Control deslizante para la penalización de repetición
88
+ gr.Slider(
89
+ label="Repetition penalty",
90
+ value=1.2,
91
+ minimum=1.0,
92
+ maximum=2.0,
93
+ step=0.05,
94
+ interactive=True,
95
+ info="Penaliza los tokens repetidos",
96
+ )
97
+ ]
98
 
99
  # Crear una interfaz de chat Gradio con el modelo generativo
100
  gr.ChatInterface(
 
109
  layout="panel",
110
  height=500,
111
  ),
112
+ textbox=gr.Textbox(placeholder="¿Qué parámetros definen la calidad del agua?", container=False, scale=7),
 
 
 
 
113
  theme="soft",
114
+ additional_inputs=additional_inputs,
115
  title="Mixtral 8B Fines didácticos Asistente de usuarios/clientes de Canal de Isabel ll",
116
+ description='Autor: <a href=\"https://huggingface.co/Antonio49\">Antonio Fernández</a> de <a href=\"https://saturdays.ai/\">SaturdaysAI</a>. Formación: <a href=\"https://cursos.saturdays.ai/courses/\">Cursos Online AI</a> Aplicación desarrollada con fines docentes',
117
  retry_btn="Repetir",
118
  undo_btn="Deshacer",
119
  clear_btn="Borrar",
120
  submit_btn="Enviar",
121
  concurrency_limit=20,
122
+ ).launch(show_api=False)