Spaces:
Sleeping
Sleeping
import streamlit as st | |
from st_utils import ( | |
load_tokenizer_and_model, | |
generate_docstring, | |
download_model, | |
# list_files, | |
) | |
from huggingface_hub import hf_hub_download | |
import os | |
import torch | |
# list_files(os.getcwd()) | |
# Set the title and description of the app | |
st.title("Code Function Summarization App") | |
st.write( | |
""" | |
This app uses the Hugging Face transformers library to generate summaries of input text. | |
Simply select one of the sample Python functions from the dropdown menu below, and click the 'Summarize' button to generate a summary for the corresponding function. | |
""" | |
) | |
# st.write(f"Has CUDA: {torch.cuda.is_available()}") | |
# Download the model from the Hugging Face Hub if it doesn't exist | |
download_model() | |
# load the tokenizer and model | |
tokenizer, model, device = load_tokenizer_and_model("./models/pytorch_model.bin") | |
# Create a dropdown menu for the user to select a sample Python function | |
values = [ | |
"", | |
"def multiply(a, b):\n return a * b", | |
"def get_data():\n data = []\n for i in range(10):\n data.append(i)\n return data", | |
"def search(data, target):\n for i in range(len(data)):\n if data[i] == target:\n return i\n return -1", | |
] | |
selected_value = st.selectbox("Select a sample Python function:", values) | |
# Create a text input area for the user to enter their text | |
text_input = st.text_area( | |
"Or enter your Python function here (prioritize this over the dropdown menu):", | |
height=256, | |
value=selected_value, | |
) | |
# Define a function to generate a summary | |
def generate_summary(text): | |
summary = generate_docstring(model, tokenizer, device, text, max_length=30) | |
return summary | |
# When the user clicks the 'Summarize' button, generate a summary | |
if st.button("Summarize") and (len(selected_value) > 0 or len(text_input) > 0): | |
with st.spinner("Generating summary..."): | |
if len(text_input) > 0: | |
summaries = generate_summary(text_input) | |
st.subheader("Docstrings:") | |
for i, summary in enumerate(summaries): | |
st.write(f"{i + 1}. " + summary) | |
# if len(selected_value) > 0: | |
else: | |
summaries = generate_summary(selected_value) | |
st.subheader("Docstrings:") | |
for i, summary in enumerate(summaries): | |
st.write(f"{i + 1}. " + summary) | |