Instructions to use Subject-Emu-5259/NeuralAI with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use Subject-Emu-5259/NeuralAI with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
| # neuralai_engine.py - NeuralAI Engine v2.0 | |
| # Local model + Tools (terminal, code, images) + Streaming | |
| import asyncio | |
| import torch | |
| from typing import AsyncGenerator, Dict, Any, List, Tuple | |
| import aiohttp | |
| import asyncio.subprocess as asp | |
| import os | |
| import sys | |
| from pathlib import Path | |
| import json | |
| import time | |
| import subprocess | |
| # CPU optimization | |
| torch.set_num_threads(4) | |
| # Import tools | |
| PROJECT_ROOT = str(Path(__file__).resolve().parent.parent.parent) | |
| if PROJECT_ROOT not in sys.path: | |
| sys.path.append(PROJECT_ROOT) | |
| try: | |
| from tools.code_sandbox import CodeSandbox | |
| from tools.file_manager import FileManager | |
| from tools.web_fetcher import WebFetcher | |
| from tools.db_connector import DatabaseConnector | |
| from tools.git_assistant import GitAssistant | |
| code_sandbox = CodeSandbox() | |
| file_manager = FileManager() | |
| web_fetcher = WebFetcher() | |
| db_connector = DatabaseConnector() | |
| git_assistant = GitAssistant() | |
| except ImportError as e: | |
| print(f"[NeuralAI Engine] Import Error: {e}") | |
| code_sandbox = None | |
| file_manager = None | |
| web_fetcher = None | |
| db_connector = None | |
| git_assistant = None | |
| # Uplink ports | |
| UPLINK_BASE = "http://localhost" | |
| DIALOG_PORT = 7101 | |
| DATA_PORT = 7102 | |
| OPS_PORT = 7103 | |
| WORLD_PORT = 7104 | |
| # Model globals | |
| model = None | |
| tokenizer = None | |
| model_error = None | |
| def load_local_model(): | |
| global model, tokenizer, model_error | |
| if model is not None or model_error: | |
| return | |
| try: | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| from peft import PeftModel | |
| base_model = "HuggingFaceTB/SmolLM2-360M-Instruct" | |
| adapter_path = Path(__file__).resolve().parent.parent.parent / "checkpoints" / "v2_model" | |
| tokenizer = AutoTokenizer.from_pretrained(base_model) | |
| tokenizer.pad_token = tokenizer.eos_token | |
| base = AutoModelForCausalLM.from_pretrained( | |
| base_model, torch_dtype=torch.float32, device_map=None, low_cpu_mem_usage=True | |
| ) | |
| adapter_file = adapter_path / "adapter_model.safetensors" | |
| if adapter_path.exists() and adapter_file.exists(): | |
| model = PeftModel.from_pretrained(base, str(adapter_path)) | |
| else: | |
| model = base | |
| model.eval() | |
| model_error = None | |
| print("[NeuralAI] Model loaded") | |
| except Exception as e: | |
| model = tokenizer = None | |
| model_error = str(e) | |
| print(f"[NeuralAI] Model error: {e}") | |
| class LocalModel: | |
| def generate_sync_stream(self, prompt: str, max_new_tokens: int = 256): | |
| load_local_model() | |
| if model is None or tokenizer is None: | |
| for ch in "[Model] Not loaded": | |
| yield ch | |
| return | |
| try: | |
| from transformers import TextIteratorStreamer | |
| import threading | |
| full_prompt = f"<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n" | |
| inputs = tokenizer(full_prompt, return_tensors="pt") | |
| streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True) | |
| thread = threading.Thread(target=model.generate, kwargs={ | |
| **inputs, "streamer": streamer, "max_new_tokens": max_new_tokens, | |
| "do_sample": True, "temperature": 0.7, "top_p": 0.95, | |
| "pad_token_id": tokenizer.eos_token_id | |
| }) | |
| thread.start() | |
| for text in streamer: | |
| yield text | |
| except Exception as e: | |
| yield f"[Error] {e}" | |
| async def generate(self, prompt: str, max_new_tokens: int = 256): | |
| load_local_model() | |
| if model is None or tokenizer is None: | |
| for ch in "[Model] Not loaded": | |
| yield ch | |
| return | |
| try: | |
| full_prompt = f"<|im_start|>user\n{prompt}<|im_end|>\n<|im_start|>assistant\n" | |
| inputs = tokenizer(full_prompt, return_tensors="pt") | |
| with torch.no_grad(): | |
| outputs = model.generate(**inputs, max_new_tokens=max_new_tokens, | |
| do_sample=True, temperature=0.7, top_p=0.95, pad_token_id=tokenizer.eos_token_id) | |
| text = tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True) | |
| for ch in text: | |
| yield ch | |
| except Exception as e: | |
| for ch in f"[Error] {e}": | |
| yield ch | |
| local_model = LocalModel() | |
| def neuralai_route(msg: str) -> Tuple[str, str | None]: | |
| try: | |
| from neuralai_router import neuralai_route as _route | |
| return _route(msg) | |
| except: | |
| lower = msg.lower() | |
| if any(k in lower for k in ["research", "analyze", "debug"]): | |
| return ("uplink", None) | |
| return ("local", None) | |
| async def neuralai_local(prompt: str): | |
| async for token in local_model.generate(prompt): | |
| yield token | |
| async def neuralai_uplink(prompt: str) -> str: | |
| async with aiohttp.ClientSession() as session: | |
| tasks = [ | |
| session.post(f"{UPLINK_BASE}:{p}/task", json={"goal": prompt}, timeout=aiohttp.ClientTimeout(total=30)) | |
| for p in [DIALOG_PORT, DATA_PORT, OPS_PORT, WORLD_PORT] | |
| ] | |
| results = await asyncio.gather(*tasks, return_exceptions=True) | |
| return "[Uplink] Processing..." | |
| async def neuralai_tool_call(tool: str, msg: str): | |
| from neuralai_router import extract_tool_params | |
| params = extract_tool_params(msg, tool) | |
| # Image generation | |
| if tool == "image_gen": | |
| prompt = params.get("prompt", msg) | |
| style = params.get("style", "realistic") | |
| aspect = params.get("aspect_ratio", "1:1") | |
| yield f"🎨 **Generating: {prompt}**\n\n" | |
| output_dir = "/home/workspace/NeuralAI/images" | |
| os.makedirs(output_dir, exist_ok=True) | |
| timestamp = time.strftime("%Y%m%d_%H%M%S") | |
| file_stem = f"neuralai_{timestamp}" | |
| full_prompt = f"{prompt}, {style} style" if style else prompt | |
| try: | |
| result = subprocess.run([ | |
| "python3", "-c", | |
| f''' | |
| import sys | |
| sys.path.insert(0, "/home/.z/tools") | |
| from generate_image import generate_image as gen | |
| r = gen(prompt="{full_prompt.replace(chr(34), chr(92)+chr(34))}", file_stem="{file_stem}", output_dir="{output_dir}", aspect_ratio="{aspect}") | |
| print("OK" if r else "FAIL") | |
| ''' | |
| ], capture_output=True, text=True, timeout=120) | |
| if "OK" in result.stdout: | |
| yield f"\n\n" | |
| yield f"✅ Saved to `/NeuralAI/images/`\n" | |
| else: | |
| yield "❌ Generation failed\n" | |
| except Exception as e: | |
| yield f"❌ Error: {e}\n" | |
| return | |
| # Terminal | |
| if tool == "terminal": | |
| cmd = msg | |
| for p in ["run ", "execute ", "shell "]: | |
| if msg.lower().startswith(p): | |
| cmd = msg[len(p):] | |
| break | |
| yield "```bash\n" | |
| proc = await asp.create_subprocess_shell(cmd, stdout=asp.PIPE, stderr=asp.PIPE) | |
| while True: | |
| line = await proc.stdout.readline() | |
| if not line: break | |
| yield line.decode() | |
| yield "```\n" | |
| return | |
| # Code execution | |
| if tool == "code_exec" and code_sandbox: | |
| code = params.get("code", msg) | |
| yield "[Sandbox] Running...\n```" | |
| loop = asyncio.get_event_loop() | |
| result = await loop.run_in_executor(None, code_sandbox.run_python, code) | |
| yield result.get("output", result.get("error", "No output")) | |
| yield "\n```\n" | |
| return | |
| # Code generation | |
| if tool == "code_gen" and code_sandbox: | |
| yield "[NeuralAI] Writing code...\n" | |
| code_text = "" | |
| async for c in local_model.generate(f"Write Python for: {msg}", max_new_tokens=512): | |
| code_text += c | |
| import re | |
| m = re.search(r"```python\s*([\s\S]*?)```", code_text) | |
| if m: | |
| code = m.group(1).strip() | |
| yield f"```python\n{code}\n```\n" | |
| result = await asyncio.get_event_loop().run_in_executor(None, code_sandbox.run_python, code) | |
| yield "Output:\n```\n" + (result.get("output") or result.get("error")) + "\n```\n" | |
| return | |
| # File manager | |
| if tool == "file_manager" and file_manager: | |
| query = params.get("query", msg) | |
| result = await asyncio.get_event_loop().run_in_executor(None, file_manager.search, query) | |
| if result.get("success"): | |
| for r in result.get("results", [])[:5]: | |
| yield f"- {r['path']}\n" | |
| return | |
| # Git | |
| if tool == "git" and git_assistant: | |
| git_assistant.repo_path = Path("/home/workspace/Projects/NeuralAI") | |
| result = await asyncio.get_event_loop().run_in_executor(None, git_assistant.status) | |
| if result.get("success"): | |
| yield f"Branch: {result['branch']}\n" | |
| return | |
| yield f"[Tool] {tool} pending" | |
| async def stream_text(text: str): | |
| for ch in text: | |
| yield ch | |
| async def neuralai_chat(msg: str): | |
| route, tool = neuralai_route(msg) | |
| if route == "local": | |
| async for t in neuralai_local(msg): | |
| yield t | |
| elif route == "uplink": | |
| yield "[Uplink] Connecting...\n" | |
| resp = await neuralai_uplink(msg) | |
| async for t in stream_text(resp): | |
| yield t | |
| elif route == "tool": | |
| async for t in neuralai_tool_call(tool, msg): | |
| yield t | |
| else: | |
| async for t in stream_text(f"[NeuralAI] {msg}"): | |
| yield t | |
| # Warmup | |
| if os.environ.get("NEURALAI_WARMUP", "true") != "false": | |
| try: | |
| load_local_model() | |
| except: | |
| pass | |