| from typing import Dict, List, Any |
| import torch |
| from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
| class EndpointHandler: |
| def __init__(self, path=""): |
| |
| print("Loading Ormuri AI into the Cloud GPU...") |
| self.tokenizer = AutoTokenizer.from_pretrained(path) |
| |
| |
| self.model = AutoModelForCausalLM.from_pretrained( |
| path, |
| device_map="auto", |
| torch_dtype=torch.float16 |
| ) |
| print("Model Ready!") |
|
|
| def __call__(self, data: Dict[str, Any]) -> List[Dict[str, Any]]: |
| |
| user_input = data.pop("inputs", "") |
| |
| |
| system_prompt = "You are a helpful, accurate, and friendly Ormuri language assistant. Only provide the exact translation. Do not invent words." |
| formatted_prompt = f"### Instruction:\n{system_prompt}\n\nUser Question: {user_input}\n\n### Response:\n" |
| |
| |
| input_ids = self.tokenizer(formatted_prompt, return_tensors="pt").input_ids.to(self.model.device) |
| |
| |
| output_ids = self.model.generate( |
| input_ids, |
| max_new_tokens=150, |
| pad_token_id=self.tokenizer.eos_token_id, |
| temperature=0.1, |
| do_sample=True |
| ) |
| |
| |
| new_tokens = output_ids[0][input_ids.shape[1]:] |
| |
| |
| final_answer = self.tokenizer.decode(new_tokens, skip_special_tokens=True) |
| |
| |
| return [{"generated_text": final_answer.strip()}] |