from transformers import AutoTokenizer, AutoModelForCausalLM import torch class EndpointHandler: def __init__(self, path=""): # Load model and tokenizer self.tokenizer = AutoTokenizer.from_pretrained(path) self.model = AutoModelForCausalLM.from_pretrained( path, torch_dtype=torch.float16, device_map="auto" ) def __call__(self, data): # Parse the input data inputs = data.pop("inputs", data) parameters = data.pop("parameters", {}) # Set default parameters if not provided max_new_tokens = parameters.get("max_new_tokens", 256) temperature = parameters.get("temperature", 0.7) do_sample = parameters.get("do_sample", True) # Tokenize and generate input_ids = self.tokenizer(inputs, return_tensors="pt").input_ids.to(self.model.device) with torch.no_grad(): outputs = self.model.generate( input_ids, max_new_tokens=max_new_tokens, do_sample=do_sample, temperature=temperature, **parameters ) response = self.tokenizer.decode(outputs[0], skip_special_tokens=True) return {"generated_text": response}