Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -3,77 +3,69 @@ import torch
|
|
3 |
from transformers import AutoTokenizer, AutoModelForCausalLM
|
4 |
import spaces
|
5 |
|
6 |
-
|
7 |
-
|
8 |
-
```bash
|
9 |
-
'java', 'markdown', 'python', 'php', 'javascript', 'c++', 'c#', 'c', 'typescript', 'html', 'go', 'java_server_pages', 'dart', 'objective-c', 'kotlin', 'tex', 'swift', 'ruby', 'sql', 'rust', 'css', 'yaml', 'matlab', 'lua', 'json', 'shell', 'visual_basic', 'scala', 'rmarkdown', 'pascal', 'fortran', 'haskell', 'assembly', 'perl', 'julia', 'cmake', 'groovy', 'ocaml', 'powershell', 'elixir', 'clojure', 'makefile', 'coffeescript', 'erlang', 'lisp', 'toml', 'batchfile', 'cobol', 'dockerfile', 'r', 'prolog', 'verilog'
|
10 |
-
```
|
11 |
-
### Join us :
|
12 |
-
🌟TeamTonic🌟 is always making cool demos! Join our active builder's 🛠️community 👻 [](https://discord.gg/qdfnvSPcqP) On 🤗Huggingface:[MultiTransformer](https://huggingface.co/MultiTransformer) On 🌐Github: [Tonic-AI](https://github.com/tonic-ai) & contribute to🌟 [Build Tonic](https://git.tonic-ai.com/contribute)🤗Big thanks to Yuvi Sharma and all the folks at huggingface for the community grant 🤗
|
13 |
-
"""
|
14 |
|
15 |
-
#
|
16 |
-
|
17 |
-
|
18 |
|
19 |
-
#
|
20 |
-
|
21 |
-
|
22 |
|
23 |
@spaces.GPU(duration=130)
|
24 |
-
def
|
25 |
-
|
26 |
-
{"role": "system", "content":
|
27 |
-
{"role": "user", "content":
|
28 |
]
|
29 |
-
|
30 |
-
|
31 |
tokenize=False,
|
32 |
add_generation_prompt=True
|
33 |
)
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
eos_token_id=tokenizer.eos_token_id
|
40 |
)
|
41 |
-
|
42 |
-
output_ids[len(input_ids):] for input_ids, output_ids in zip(
|
43 |
]
|
|
|
|
|
44 |
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
gr.
|
51 |
-
|
52 |
-
|
53 |
-
system_prompt_input = gr.Textbox(
|
54 |
-
label="☯️Yinstruction:",
|
55 |
-
value="You are a helpful coding assistant. Provide clear and concise code examples.",
|
56 |
lines=2
|
57 |
)
|
58 |
-
|
59 |
-
label="🤔
|
60 |
-
value="
|
61 |
language="python",
|
62 |
lines=15
|
63 |
)
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
inputs=[
|
71 |
-
outputs=
|
72 |
)
|
73 |
-
|
74 |
-
return
|
75 |
|
76 |
if __name__ == "__main__":
|
77 |
-
|
78 |
-
|
79 |
-
|
|
|
3 |
from transformers import AutoTokenizer, AutoModelForCausalLM
|
4 |
import spaces
|
5 |
|
6 |
+
titulo = """# 🙋🏻♂️Bienvenido al Demo de 🌟Yi-Coder-9B-Chat!"""
|
7 |
+
descripcion = """Yi-Coder-9B-Chat es un modelo de 9B parámetros ajustado para tareas de codificación. Esta demo muestra su capacidad para generar código basado en tus prompts. Yi-Coder es una serie de modelos de lenguaje de código abierto que ofrece un rendimiento de codificación de vanguardia con menos de 10 mil millones de parámetros. Sobresale en la comprensión de contextos largos con una longitud máxima de contexto de 128K tokens. - Soporta 52 lenguajes de programación principales."""
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
+
# Definir el dispositivo y la ruta del modelo
|
10 |
+
dispositivo = "cuda" if torch.cuda.is_available() else "cpu"
|
11 |
+
ruta_modelo = "01-ai/Yi-Coder-9B-Chat"
|
12 |
|
13 |
+
# Cargar el tokenizador y el modelo
|
14 |
+
tokenizador = AutoTokenizer.from_pretrained(ruta_modelo)
|
15 |
+
modelo = AutoModelForCausalLM.from_pretrained(ruta_modelo, device_map="auto").eval()
|
16 |
|
17 |
@spaces.GPU(duration=130)
|
18 |
+
def generar_codigo(prompt_sistema, prompt_usuario, max_longitud):
|
19 |
+
mensajes = [
|
20 |
+
{"role": "system", "content": prompt_sistema},
|
21 |
+
{"role": "user", "content": prompt_usuario}
|
22 |
]
|
23 |
+
texto = tokenizador.apply_chat_template(
|
24 |
+
mensajes,
|
25 |
tokenize=False,
|
26 |
add_generation_prompt=True
|
27 |
)
|
28 |
+
entradas_modelo = tokenizador([texto], return_tensors="pt").to(dispositivo)
|
29 |
+
ids_generados = modelo.generate(
|
30 |
+
entradas_modelo.input_ids,
|
31 |
+
max_new_tokens=max_longitud,
|
32 |
+
eos_token_id=tokenizador.eos_token_id
|
|
|
33 |
)
|
34 |
+
ids_generados = [
|
35 |
+
output_ids[len(input_ids):] for input_ids, output_ids in zip(entradas_modelo.input_ids, ids_generados)
|
36 |
]
|
37 |
+
respuesta = tokenizador.batch_decode(ids_generados, skip_special_tokens=True)[0]
|
38 |
+
return respuesta
|
39 |
|
40 |
+
def interfaz_gradio():
|
41 |
+
with gr.Blocks() as interfaz:
|
42 |
+
gr.Markdown(titulo)
|
43 |
+
gr.Markdown(descripcion)
|
44 |
+
|
45 |
+
prompt_sistema = gr.Textbox(
|
46 |
+
label="☯️Instrucción Yi:",
|
47 |
+
value="Eres un asistente de codificación útil. Proporciona ejemplos de código claros y concisos.",
|
|
|
|
|
|
|
48 |
lines=2
|
49 |
)
|
50 |
+
prompt_usuario = gr.Code(
|
51 |
+
label="🤔Pregunta de Codificación",
|
52 |
+
value="Escribe un algoritmo de quicksort en Python.",
|
53 |
language="python",
|
54 |
lines=15
|
55 |
)
|
56 |
+
codigo_salida = gr.Code(label="☯️Yi-Coder-9B", language='python', lines=20, interactive=True)
|
57 |
+
max_longitud_slider = gr.Slider(minimum=1, maximum=1800, value=650, label="Longitud Máxima de Tokens")
|
58 |
+
|
59 |
+
boton_generar = gr.Button("Generar Código")
|
60 |
+
boton_generar.click(
|
61 |
+
generar_codigo,
|
62 |
+
inputs=[prompt_sistema, prompt_usuario, max_longitud_slider],
|
63 |
+
outputs=codigo_salida
|
64 |
)
|
65 |
+
|
66 |
+
return interfaz
|
67 |
|
68 |
if __name__ == "__main__":
|
69 |
+
interfaz = interfaz_gradio()
|
70 |
+
interfaz.queue()
|
71 |
+
interfaz.launch()
|