File size: 2,168 Bytes
eca5751
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
"""
Script chat với Nexus Agent
=============================
Chạy: python scripts/chat.py
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

import torch

from nexus.config import NexusConfig
from nexus.model.nexus_coder import NexusCoderForCausalLM
from nexus.tokenizer.tokenizer import NexusTokenizer
from nexus.inference.generator import NexusGenerator
from nexus.agent.agent import NexusAgent
from nexus.training.dataset import AUTHOR_TRAINING_DATA


def get_tiny_config() -> NexusConfig:
    """Tiny config cho demo chat."""
    return NexusConfig(
        vocab_size=2000,
        hidden_size=256,
        num_hidden_layers=4,
        num_attention_heads=8,
        num_kv_heads=2,
        head_dim=32,
        intermediate_size=512,
        num_experts=4,
        num_active_experts=2,
        max_position_embeddings=512,
    )


def main():
    print("=" * 60)
    print("  NEXUS CODER v0.1 - Chat Demo")
    print("  Tác giả: Hieu Louis")
    print("  Năm: 2026")
    print("=" * 60)

    # Init config (dùng tiny cho demo, vì full 10B cần GPU)
    config = get_tiny_config()
    print(f"\n📝 Cấu hình demo: hidden={config.hidden_size}, layers={config.num_hidden_layers}")

    # Tokenizer
    print("\n🔨 Đang huấn luyện tokenizer...")
    tokenizer = NexusTokenizer(vocab_size=config.vocab_size)
    corpus = [f"{d['system']} {d['user']} {d['assistant']}" for d in AUTHOR_TRAINING_DATA]
    tokenizer.train(corpus)
    print(f"  ✓ {tokenizer.vocab_size} tokens")

    # Model
    print("\n🧠 Đang khởi tạo model...")
    model = NexusCoderForCausalLM(config)
    print("  ✓ Model ready (random weights - đây chỉ là demo kiến trúc)")

    # Generator
    generator = NexusGenerator(
        model=model,
        tokenizer=tokenizer,
        config=config,
    )

    # Agent
    agent = NexusAgent(
        generator=generator,
        config=config,
        name="Nexus",
        personality="humorous",
        language="bilingual",
    )

    # Print info
    agent._print_info()

    # Start chat
    agent.chat()


if __name__ == "__main__":
    main()