# from transformers import pipeline # #load Codet5 model # code_pipeline = pipeline("text-generation", model="Salesforce/codet5-base") # def generate_code(instruction: str) -> str: # result = code_pipeline(instruction, max_length=256, clean_up_tokenization_spaces=True) # return result[0]["generated_text"] # from transformers import AutoTokenizer, AutoModelForSeq2SeqLM # tokenizer = AutoTokenizer.from_pretrained("./models", trust_remote_code=True) # model = AutoModelForSeq2SeqLM.from_pretrained("./models", trust_remote_code=True) # def generate_code(instruction: str) -> str: # prompt = f"Generate Python code for the following instruction: {instruction}" # inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True) # output = model.generate(**inputs, max_length=256) # generated_code = tokenizer.decode(output[0], skip_special_tokens=True) # return generated_code # from transformers import AutoTokenizer, AutoModelForSeq2SeqLM # tokenizer = AutoTokenizer.from_pretrained("./models") # model = AutoModelForSeq2SeqLM.from_pretrained("./models") # def generate_code(instruction: str) -> str: # prompt = f"Generate Python code: {instruction}" # inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True) # output = model.generate(**inputs, max_length=256) # return tokenizer.decode(output[0], skip_special_tokens=True) import os from transformers import AutoTokenizer, AutoModelForSeq2SeqLM MODEL_DIR = "./data/codet5-model" os.makedirs(MODEL_DIR, exist_ok=True) # Global variables but not initialized tokenizer = None model = None def load_model(): global tokenizer, model if tokenizer is None or model is None: if not os.path.exists(MODEL_DIR): print("Downloading CodeT5 model to persistent /data directory...") tokenizer = AutoTokenizer.from_pretrained("Salesforce/codet5p-770m-py", cache_dir=MODEL_DIR) model = AutoModelForSeq2SeqLM.from_pretrained("Salesforce/codet5p-770m-py", cache_dir=MODEL_DIR) else: print("Loading model from /data directory...") tokenizer = AutoTokenizer.from_pretrained(MODEL_DIR) model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_DIR) print("Model loaded.") def generate_code(instruction: str) -> str: load_model() # Ensure model is loaded before use prompt = f"# Instruction: {instruction}\n# Python Code:\n" inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True) output = model.generate(**inputs, max_length=256) return tokenizer.decode(output[0], skip_special_tokens=True)