Download nexora/cli.py from devildasdf/NEXORA: direct link, hf CLI and curl.
- Browser
- Download file 4.85 kB
-
https://huggingface.co/devildasdf/NEXORA/resolve/main/nexora/cli.py
- Command line
-
hf download hf://devildasdf/NEXORA/nexora/cli.py
-
curl -L -o cli.py https://huggingface.co/devildasdf/NEXORA/resolve/main/nexora/cli.py
4.85 kB
| import argparse | |
| from dataclasses import asdict | |
| from pathlib import Path | |
| import json | |
| def main(): | |
| p = argparse.ArgumentParser(description="NEXORA research and local runtime") | |
| sub = p.add_subparsers(dest="command", required=True) | |
| t = sub.add_parser("train") | |
| t.add_argument("--config", default="configs/tiny.json") | |
| t.add_argument("--data", default="artifacts/data") | |
| t.add_argument("--output", default="artifacts/tiny") | |
| t.add_argument("--resume", action="store_true") | |
| t.add_argument("--stop-after", type=int) | |
| d = sub.add_parser("prepare") | |
| d.add_argument("input") | |
| d.add_argument("--output", default="artifacts/data") | |
| g = sub.add_parser("generate") | |
| g.add_argument("prompt") | |
| g.add_argument("--checkpoint", default="artifacts/tiny") | |
| g.add_argument("--tokens", type=int, default=64) | |
| c = sub.add_parser("chat") | |
| c.add_argument("prompt") | |
| c.add_argument("--model", default=".cache/Qwen3.5-0.8B") | |
| c.add_argument("--tokens", type=int, default=128) | |
| s = sub.add_parser("serve") | |
| s.add_argument("--model", default=".cache/Qwen3.5-0.8B") | |
| s.add_argument("--port", type=int, default=8765) | |
| i = sub.add_parser("index") | |
| i.add_argument("root", nargs="?", default=".") | |
| i.add_argument("--query", default="") | |
| a = sub.add_parser("agent") | |
| a.add_argument("task") | |
| a.add_argument("--policy", required=True) | |
| a.add_argument("--model", default=".cache/Qwen3.5-0.8B") | |
| a.add_argument("--url") | |
| a.add_argument("--allow-network", action="store_true") | |
| a.add_argument("--verify-command", help="Owner-configured command key; should refer to trusted external tests") | |
| a.add_argument("--steps", type=int, default=8) | |
| e = sub.add_parser("estimate") | |
| e.add_argument("--parameters", type=float, default=120e9) | |
| e.add_argument("--active", type=float) | |
| e.add_argument("--tokens", type=float, default=2.4e12) | |
| e.add_argument("--gpus", type=int, default=1024) | |
| e.add_argument("--mfu", type=float, default=.35) | |
| args = p.parse_args() | |
| if args.command == "train": | |
| from .training import train | |
| result = train(args.config, args.data, args.output, resume=args.resume, stop_after=args.stop_after) | |
| elif args.command == "prepare": | |
| from .data import prepare | |
| result = prepare([json.loads(l) for l in Path(args.input).read_text(encoding="utf-8").splitlines() if l.strip()], args.output) | |
| elif args.command == "generate": | |
| from .inference import tiny_generate | |
| result = tiny_generate(args.checkpoint, args.prompt, args.tokens) | |
| elif args.command == "chat": | |
| from .inference import HFBackend | |
| backend = HFBackend(args.model, max_new_tokens=args.tokens) | |
| result = {"answer": backend.complete([{"role": "system", "content": "You are NEXORA, a concise assistant. Be accurate about your limitations."}, {"role": "user", "content": args.prompt}]), "metrics": backend.last_metrics} | |
| elif args.command == "serve": | |
| import os | |
| from .inference import HFBackend | |
| from .server import create_server | |
| token = os.environ.get("NEXORA_LOCAL_TOKEN", "") | |
| if len(token) < 16: | |
| raise ValueError("Set NEXORA_LOCAL_TOKEN to at least 16 random characters") | |
| server = create_server(HFBackend(args.model), token, args.port) | |
| print(f"Local inference listening at http://127.0.0.1:{args.port}; Ctrl+C stops it", flush=True) | |
| try: | |
| server.serve_forever() | |
| except KeyboardInterrupt: | |
| pass | |
| finally: | |
| server.server_close() | |
| return | |
| elif args.command == "estimate": | |
| from .compute import Estimate | |
| result = Estimate(args.parameters, args.active or args.parameters, args.tokens, args.gpus, mfu=args.mfu).calculate() | |
| elif args.command == "index": | |
| from .tools import Policy, Executor | |
| from .coding import index_repository, retrieve | |
| result = index_repository(Executor(Policy(args.root))) | |
| if args.query: | |
| result = retrieve(result, args.query) | |
| else: | |
| from .tools import Policy, Executor | |
| from .inference import HFBackend, HTTPBackend | |
| from .agent import Agent | |
| executor = Executor(Policy(**json.loads(Path(args.policy).read_text(encoding="utf-8")))) | |
| backend = HTTPBackend(args.url, args.model, allow_network=args.allow_network) if args.url else HFBackend(args.model) | |
| verifier = None | |
| if args.verify_command: | |
| def verifier(): | |
| r = executor.execute("shell.exec", {"command": args.verify_command}) | |
| return r.ok and r.exit_code == 0 and not r.truncated | |
| result = Agent(backend, executor, verifier, max_steps=args.steps).run(args.task) | |
| print(json.dumps(result, indent=2, ensure_ascii=False)) | |
| if __name__ == "__main__": | |
| main() | |