Spaces:
Paused
Paused
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| import torch | |
| from utils.self_awareness import SelfAwareness | |
| from config import MODEL_NAME, DEVICE | |
| class JAIRVISMKV: | |
| def __init__(self): | |
| self.model = AutoModelForCausalLM.from_pretrained(MODEL_NAME).to(DEVICE) | |
| self.tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) | |
| self.self_awareness = SelfAwareness(self) | |
| self.conversation_context = [] | |
| self.max_context_length = 1024 | |
| def generate_response(self, prompt): | |
| self.conversation_context.append(f"Human: {prompt}") | |
| context = "\n".join(self.conversation_context[-5:]) | |
| inputs = self.tokenizer.encode(context + "\nAI:", return_tensors="pt").to(DEVICE) | |
| attention_mask = torch.ones(inputs.shape, dtype=torch.long, device=DEVICE) | |
| outputs = self.model.generate( | |
| inputs, | |
| attention_mask=attention_mask, | |
| max_length=self.max_context_length, | |
| num_return_sequences=1, | |
| no_repeat_ngram_size=2, | |
| top_k=50, | |
| top_p=0.95, | |
| temperature=0.7 | |
| ) | |
| response = self.tokenizer.decode(outputs[0], skip_special_tokens=True) | |
| ai_response = response.split("AI:")[-1].strip() | |
| self.conversation_context.append(f"AI: {ai_response}") | |
| self.self_awareness.update_self_model() | |
| return ai_response | |
| def introspect(self): | |
| return self.self_awareness.generate_insights(str(self)) | |
| def implement_improvement(self, suggestion): | |
| return self.self_awareness.implement_improvement(suggestion) | |
| def __str__(self): | |
| return f"JAIRVISMKV Model: {MODEL_NAME}, Device: {DEVICE}" | |