Toor1989 / codebert_app.py
Toor1989's picture
Update codebert_app.py
a6a7048
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")