Spaces:
No application file
No application file
import streamlit as st | |
from transformers import pipeline, AutoModelForCausalLM, AutoTokenizer | |
import pyperclip | |
# Cargar modelo y tokenizer | |
model_name = "microsoft/codebert-base-mlm" | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained(model_name) | |
# Configurar pipeline de generaci贸n de texto | |
text_generator = pipeline("text-generation", model=model, tokenizer=tokenizer) | |
# Crear la interfaz de usuario | |
st.set_page_config(page_title="CodeBERT Autocompletado y Correcci贸n de Errores") | |
st.title("CodeBERT Autocompletado y Correcci贸n de Errores") | |
st.sidebar.title("Configuraci贸n de la Generaci贸n de Texto") | |
# Agregar opciones de configuraci贸n | |
num_suggestions = st.sidebar.slider("N煤mero de Sugerencias", 1, 10, 3) | |
max_length = st.sidebar.slider("Longitud M谩xima de la Secuencia de Salida", 10, 1000, 100) | |
languages = ['python', 'java', 'javascript', 'c#', 'ruby', 'php', 'go', 'swift', 'kotlin', 'pine'] | |
language = st.sidebar.selectbox('Lenguaje de Programaci贸n', options=languages) | |
code_type = st.sidebar.selectbox('Tipo de C贸digo', options=['Indicador', 'Estrategia']) | |
# Agregar secci贸n de informaci贸n | |
st.info("Ingrese su c贸digo en el cuadro de texto a continuaci贸n y haga clic en el bot贸n para generar sugerencias de autocompletado o correcci贸n de errores utilizando el modelo CodeBERT.") | |
# Agregar cuadro de texto para ingresar el c贸digo | |
input_code = st.text_area("Ingresa tu c贸digo aqu铆:", height=250) | |
# Agregar bot贸n para generar sugerencias | |
if st.button("Generar Sugerencias"): | |
# Agregar indicador de carga mientras se generan las sugerencias | |
with st.spinner('Generando sugerencias...'): | |
# Generar sugerencias de autocompletado o correcci贸n de errores utilizando la API de transformers | |
if code_type == 'Indicador': | |
prefix = f"{language}: " | |
else: | |
prefix = f"{language} strategy: " | |
generated_text = text_generator( | |
input_code, | |
max_length=max_length, | |
num_return_sequences=num_suggestions, | |
do_sample=True, | |
top_p=0.9, | |
temperature=0.8, | |
repetition_penalty=2.0, | |
no_repeat_ngram_size=2, | |
pad_token_id=tokenizer.eos_token_id, | |
prefix=prefix | |
) | |
# Mostrar el bot贸n "Limpiar" para borrar el cuadro de texto de entrada | |
st.button("Limpiar") | |
# Mostrar las sugerencias generadas una a una en respuesta a un bot贸n "Mostrar siguiente sugerencia" | |
if len(generated_text) > 0: | |
st.subheader("Sugerencias Generadas:") | |
suggestion_index = 0 | |
st.code(generated_text[suggestion_index]['generated_text'].strip(), language=language) | |
while suggestion_index < len(generated_text)-1: | |
if st.button("Mostrar siguiente sugerencia"): | |
suggestion_index += 1 | |
st.code(generated_text[suggestion_index]['generated_text'].strip(), language=language) | |
else: | |
break | |
# Agregar bot贸n "Copiar" para copiar la sugerencia seleccionada al portapapeles | |
if len(generated_text) == 1: | |
if st.button("Copiar"): | |
pyperclip.copy(generated_text[0]['generated_text'].strip()) | |
st.success("La sugerencia se ha copiado al portapapeles") | |