Antonio49 commited on
Commit
8ab6a28
1 Parent(s): 77e2a6e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -24
app.py CHANGED
@@ -1,27 +1,30 @@
 
1
  from huggingface_hub import InferenceClient
2
  import gradio as gr
3
 
4
- client = InferenceClient(
5
- "mistralai/Mixtral-8x7B-Instruct-v0.1"
6
- )
7
-
8
 
 
9
  def format_prompt(message, history):
10
- prompt = "<s>"
11
- for user_prompt, bot_response in history:
12
- prompt += f"[INST] {user_prompt} [/INST]"
13
- prompt += f" {bot_response}</s> "
14
- prompt += f"[INST] {message} [/INST]"
15
- return prompt
16
 
 
17
  def generate(
18
  prompt, history, system_prompt, temperature=0.9, max_new_tokens=256, top_p=0.95, repetition_penalty=1.0,
19
  ):
 
20
  temperature = float(temperature)
21
  if temperature < 1e-2:
22
  temperature = 1e-2
23
  top_p = float(top_p)
24
 
 
25
  generate_kwargs = dict(
26
  temperature=temperature,
27
  max_new_tokens=max_new_tokens,
@@ -31,22 +34,26 @@ def generate(
31
  seed=42,
32
  )
33
 
 
34
  formatted_prompt = format_prompt(f"{system_prompt}, {prompt}", history)
35
  stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
36
  output = ""
37
 
 
38
  for response in stream:
39
  output += response.token.text
40
  yield output
41
  return output
42
 
43
-
44
- additional_inputs=[
 
45
  gr.Textbox(
46
  label="System Prompt",
47
  max_lines=1,
48
  interactive=True,
49
  ),
 
50
  gr.Slider(
51
  label="Temperature",
52
  value=0.9,
@@ -54,8 +61,9 @@ additional_inputs=[
54
  maximum=1.0,
55
  step=0.05,
56
  interactive=True,
57
- info="Higher values produce more diverse outputs",
58
  ),
 
59
  gr.Slider(
60
  label="Max new tokens",
61
  value=256,
@@ -63,8 +71,9 @@ additional_inputs=[
63
  maximum=1048,
64
  step=64,
65
  interactive=True,
66
- info="The maximum numbers of new tokens",
67
  ),
 
68
  gr.Slider(
69
  label="Top-p (nucleus sampling)",
70
  value=0.90,
@@ -72,8 +81,9 @@ additional_inputs=[
72
  maximum=1,
73
  step=0.05,
74
  interactive=True,
75
- info="Higher values sample more low-probability tokens",
76
  ),
 
77
  gr.Slider(
78
  label="Repetition penalty",
79
  value=1.2,
@@ -81,23 +91,27 @@ additional_inputs=[
81
  maximum=2.0,
82
  step=0.05,
83
  interactive=True,
84
- info="Penalize repeated tokens",
85
  )
86
  ]
87
 
88
- examples=[["Estoy planeando unas vacaciones en Japón. ¿Puedes sugerir un itinerario de una semana que incluya lugares de visita obligada y cocinas locales para probar?", None, None, None, None, None, ],
89
- ["¿Puedes escribir una historia corta sobre un detective que viaja en el tiempo y resuelve misterios históricos?", None, None, None, None, None,],
90
- ["Estoy tratando de aprender francés. ¿Puedes proporcionar algunas frases comunes que serían útiles para un principiante, junto con sus pronunciaciones?", None, None, None, None, None,],
91
- ["Tengo pollo, arroz y pimientos morrones en mi cocina. ¿Puedes sugerir una receta fácil que pueda hacer con estos ingredientes?", None, None, None, None, None,],
92
- ["¿Puede explicar cómo funciona el algoritmo QuickSort y proporcionar una implementación de Python?", None, None, None, None, None,],
93
- ["¿Cuáles son algunas de las características únicas de Rust que lo hacen destacar en comparación con otros lenguajes de programación de sistemas como C++?", None, None, None, None, None,],
94
- ]
 
 
95
 
 
96
  gr.ChatInterface(
97
  fn=generate,
98
  chatbot=gr.Chatbot(show_label=False, show_share_button=False, show_copy_button=True, likeable=True, layout="panel"),
99
  additional_inputs=additional_inputs,
100
- title="Mixtral 46.7B Fines didácticos ",
 
101
  examples=examples,
102
  concurrency_limit=20,
103
  ).launch(show_api=False)
 
1
+ # Importar las bibliotecas necesarias
2
  from huggingface_hub import InferenceClient
3
  import gradio as gr
4
 
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):
10
+ prompt = "<s>"
11
+ for user_prompt, bot_response in history:
12
+ prompt += f"[INST] {user_prompt} [/INST]"
13
+ prompt += f" {bot_response}</s> "
14
+ prompt += f"[INST] {message} [/INST]"
15
+ return prompt
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=256, top_p=0.95, repetition_penalty=1.0,
20
  ):
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:
24
  temperature = 1e-2
25
  top_p = float(top_p)
26
 
27
+ # Configurar los parámetros para la generación de texto
28
  generate_kwargs = dict(
29
  temperature=temperature,
30
  max_new_tokens=max_new_tokens,
 
34
  seed=42,
35
  )
36
 
37
+ # Formatear el prompt y obtener la respuesta del modelo de manera continua
38
  formatted_prompt = format_prompt(f"{system_prompt}, {prompt}", history)
39
  stream = client.text_generation(formatted_prompt, **generate_kwargs, stream=True, details=True, return_full_text=False)
40
  output = ""
41
 
42
+ # Iterar a través de las respuestas en el stream
43
  for response in stream:
44
  output += response.token.text
45
  yield output
46
  return output
47
 
48
+ # Configurar inputs adicionales para la interfaz Gradio
49
+ additional_inputs = [
50
+ # Entrada de texto para el System Prompt
51
  gr.Textbox(
52
  label="System Prompt",
53
  max_lines=1,
54
  interactive=True,
55
  ),
56
+ # Control deslizante para la temperatura
57
  gr.Slider(
58
  label="Temperature",
59
  value=0.9,
 
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
  gr.Slider(
68
  label="Max new tokens",
69
  value=256,
 
71
  maximum=1048,
72
  step=64,
73
  interactive=True,
74
+ info="El máximo número de nuevos tokens",
75
  ),
76
+ # Control deslizante para top-p (nucleus sampling)
77
  gr.Slider(
78
  label="Top-p (nucleus sampling)",
79
  value=0.90,
 
81
  maximum=1,
82
  step=0.05,
83
  interactive=True,
84
+ info="Valores más altos muestrean más tokens de baja probabilidad",
85
  ),
86
+ # Control deslizante para la penalización de repetición
87
  gr.Slider(
88
  label="Repetition penalty",
89
  value=1.2,
 
91
  maximum=2.0,
92
  step=0.05,
93
  interactive=True,
94
+ info="Penaliza los tokens repetidos",
95
  )
96
  ]
97
 
98
+ # Ejemplos predefinidos para la interfaz Gradio
99
+ examples = [
100
+ ["Cuéntame una historia de ciencia ficción que involucre viajes en el tiempo y descubrimientos científicos asombrosos.", None, None, None, None, None, ],
101
+ ["Necesito ayuda para redactar un correo electrónico profesional. ¿Puedes sugerirme cómo empezar y qué puntos clave incluir?", None, None, None, None, None,],
102
+ ["Estoy organizando una fiesta sorpresa. ¿Puedes ayudarme a redactar una invitación creativa y emocionante?", None, None, None, None, None,],
103
+ ["Quiero aprender a tocar la guitarra. ¿Puedes proporcionar algunos consejos prácticos para principiantes y sugerencias de canciones fáciles?", None, None, None, None, None,],
104
+ ["¿Cuál es tu opinión sobre el impacto de la inteligencia artificial en la sociedad y cómo deberíamos abordar sus desafíos éticos?", None, None, None, None, None,],
105
+ ["Estoy planeando un viaje gastronómico. ¿Puedes sugerirme algunos destinos culinarios imperdibles y platos locales para probar?", None, None, None, None, None,],
106
+ ]
107
 
108
+ # Crear una interfaz de chat Gradio con el modelo generativo
109
  gr.ChatInterface(
110
  fn=generate,
111
  chatbot=gr.Chatbot(show_label=False, show_share_button=False, show_copy_button=True, likeable=True, layout="panel"),
112
  additional_inputs=additional_inputs,
113
+ title="Mixtral 8x7B Fines didácticos",
114
+ 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',
115
  examples=examples,
116
  concurrency_limit=20,
117
  ).launch(show_api=False)