Spaces:
Sleeping
Sleeping
| import torch | |
| from transformers import AutoTokenizer, EncoderDecoderModel | |
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| model_name = "Shuu12121/CodeEncoderDecodeerModel-Ghost" | |
| # Tokenizerの読み込み | |
| encoder_tokenizer = AutoTokenizer.from_pretrained(f"{model_name}/encoder_tokenizer") | |
| decoder_tokenizer = AutoTokenizer.from_pretrained(f"{model_name}/decoder_tokenizer") | |
| if decoder_tokenizer.pad_token is None: | |
| decoder_tokenizer.pad_token = decoder_tokenizer.eos_token | |
| model = EncoderDecoderModel.from_pretrained(model_name).to(device) | |
| model.eval() | |
| def generate_docstring(code: str) -> str: | |
| inputs = encoder_tokenizer( | |
| code, | |
| return_tensors="pt", | |
| padding=True, | |
| truncation=True, | |
| max_length=2048 | |
| ).to(device) | |
| with torch.no_grad(): | |
| output_ids = model.generate( | |
| input_ids=inputs.input_ids, | |
| attention_mask=inputs.attention_mask, | |
| max_length=256, | |
| num_beams=5, | |
| early_stopping=True, | |
| decoder_start_token_id=model.config.decoder_start_token_id, | |
| eos_token_id=model.config.eos_token_id, | |
| pad_token_id=model.config.pad_token_id, | |
| no_repeat_ngram_size=2 | |
| ) | |
| return decoder_tokenizer.decode(output_ids[0], skip_special_tokens=True) | |
| # Gradio UI | |
| import gradio as gr | |
| iface = gr.Interface( | |
| fn=generate_docstring, | |
| inputs=gr.Textbox(label="Code Snippet", lines=10, placeholder="Paste your function here..."), | |
| outputs=gr.Textbox(label="Generated Docstring"), | |
| title="Code-to-Docstring Generator", | |
| description="This demo uses a custom encoder-decoder model to generate docstrings from code." | |
| ) | |
| iface.launch() | |