import torch import torch.nn as nn from transformers import AutoTokenizer, AutoModelForSeq2SeqLM class CodeGenerator: def __init__(self, model_name): self.tokenizer = AutoTokenizer.from_pretrained(model_name) self.model = AutoModelForSeq2SeqLM.from_pretrained(model_name) self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu") self.model.to(self.device) def generate_code(self, nl_input, max_length=256, num_beams=4, early_stopping=True): inputs = self.tokenizer(nl_input, return_tensors="pt").to(self.device) outputs = self.model.generate( **inputs, max_length=max_length, num_beams=num_beams, early_stopping=early_stopping, ) generated_code = self.tokenizer.decode(outputs[0], skip_special_tokens=True) return generated_code if __name__ == "__main__": model_name = "S-Dreamer/PyCodeT5" generator = CodeGenerator(model_name) nl_input = "Write a Python function to calculate the factorial of a number." generated_code = generator.generate_code(nl_input) print(generated_code)