Download aether_demo.py from camdog920/aether-core: direct link, hf CLI and curl.
- Browser
- Download file 10.2 kB
-
https://huggingface.co/camdog920/aether-core/resolve/main/aether_demo.py
- Command line
-
hf download hf://camdog920/aether-core/aether_demo.py
-
curl -L -o aether_demo.py https://huggingface.co/camdog920/aether-core/resolve/main/aether_demo.py
10.2 kB
| #!/usr/bin/env python3 | |
| """ | |
| AETHER Demo Script. | |
| Demonstrates the full neuro-symbolic self-evolving architecture. | |
| """ | |
| import torch | |
| import logging | |
| import json | |
| import time | |
| from aether.core import AetherCore, AetherConfig | |
| from aether.knowledge import KnowledgeGraphEngine | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger("AETHER.Demo") | |
| def demo_knowledge_graph(): | |
| logger.info("\n" + "=" * 60) | |
| logger.info("DEMO: Knowledge Graph Engine") | |
| logger.info("=" * 60) | |
| kg = KnowledgeGraphEngine(embedding_dim=128, num_relations=20) | |
| facts = [ | |
| ("AETHER", "is_a", "Agent"), | |
| ("AETHER", "has_capability", "Reasoning"), | |
| ("AETHER", "has_capability", "Learning"), | |
| ("AETHER", "has_capability", "Evolution"), | |
| ("Agent", "requires", "Memory"), | |
| ("Reasoning", "uses", "Knowledge_Graph"), | |
| ("Learning", "uses", "Neural_Networks"), | |
| ("Evolution", "optimizes", "Architecture"), | |
| ("Neural_Networks", "implement", "Learning"), | |
| ("Knowledge_Graph", "implements", "Reasoning"), | |
| ] | |
| for h, r, t in facts: | |
| kg.add_fact(h, r, t, confidence=1.0) | |
| logger.info(f" Added: ({h}, {r}, {t})") | |
| logger.info("\n Query: 'AETHER capabilities'") | |
| result = kg.query("AETHER has_capability") | |
| for r in result["results"]: | |
| logger.info(f" -> {r['tail']} (confidence={r['confidence']:.2f}, source={r['source']})") | |
| logger.info("\n Symbolic query: 'AETHER is_a ?'") | |
| symbolic = kg.reason_symbolic("AETHER", "is_a") | |
| for r in symbolic: | |
| logger.info(f" -> {r['tail']} (path={r['path']})") | |
| stats = kg.stats() | |
| logger.info(f"\n KG Stats: {json.dumps(stats, indent=2)}") | |
| return kg | |
| def demo_memory_system(): | |
| logger.info("\n" + "=" * 60) | |
| logger.info("DEMO: CoALA Memory System") | |
| logger.info("=" * 60) | |
| from aether.memory import CoALAMemory | |
| memory = CoALAMemory(capacity=16) | |
| memory.store({"task": "Solve math problem", "priority": "high"}, "working") | |
| memory.store({"task": "Update knowledge graph", "priority": "medium"}, "working") | |
| memory.store({"task": "Evolve architecture", "priority": "high"}, "working") | |
| for i in range(5): | |
| memory.store({ | |
| "episode": i, | |
| "action": f"action_{i}", | |
| "reward": 0.5 + i * 0.1, | |
| }, "episodic") | |
| memory.store({ | |
| "gravity": "9.8 m/s^2", | |
| "pi": "3.14159", | |
| "euler": "2.71828", | |
| }, "semantic") | |
| logger.info("\n Retrieve 'task' from working memory:") | |
| results = memory.retrieve("task", memory_type="working", top_k=3) | |
| for r in results: | |
| logger.info(f" -> {r}") | |
| logger.info("\n Retrieve 'episode' from episodic memory:") | |
| results = memory.retrieve("episode", memory_type="episodic", top_k=3) | |
| for r in results: | |
| logger.info(f" -> {r}") | |
| logger.info(f"\n Memory stats: working={len(memory.working)}, episodic={len(memory.episodic)}") | |
| return memory | |
| def demo_agents(): | |
| logger.info("\n" + "=" * 60) | |
| logger.info("DEMO: Agent Orchestration") | |
| logger.info("=" * 60) | |
| from aether.agents import AetherAgentOrchestrator | |
| config = AetherConfig( | |
| macro_policy_dim=128, | |
| micro_policy_dim=64, | |
| num_agents=4, | |
| ) | |
| orchestrator = AetherAgentOrchestrator(config) | |
| logger.info("\n Executing task: 'Build a reasoning system'") | |
| result = orchestrator.execute("Build a reasoning system", None, {}) | |
| logger.info(f"\n Output: {result['output'][:100]}...") | |
| logger.info(f" Blueprint: {result['blueprint']}") | |
| logger.info(f" Agents used: {list(result['agent_outputs'].keys())}") | |
| logger.info(f" Routing weights: {[f'{w:.3f}' for w in result['routing_weights']]}") | |
| logger.info("\n Running BabyAGI loop for objective: 'Research self-evolution'") | |
| babyagi_result = orchestrator.run_babyagi("Research self-evolution", max_iterations=3) | |
| logger.info(f" Completed {babyagi_result['iterations']} iterations") | |
| logger.info(f" Tasks completed: {len(babyagi_result['completed_tasks'])}") | |
| return orchestrator | |
| def demo_evolution(): | |
| logger.info("\n" + "=" * 60) | |
| logger.info("DEMO: Evolutionary Engine") | |
| logger.info("=" * 60) | |
| from aether.evolution import AetherEvolutionEngine | |
| config = AetherConfig( | |
| population_size=8, | |
| mutation_rate=0.15, | |
| learning_rate=2e-5, | |
| macro_policy_dim=256, | |
| micro_policy_dim=128, | |
| num_agents=4, | |
| ) | |
| engine = AetherEvolutionEngine(config) | |
| logger.info("\n Generating candidate architectures...") | |
| candidates = engine.generate_candidates(config, population_size=8) | |
| logger.info(f" Generated {len(candidates)} candidates") | |
| fitness_scores = [0.3 + 0.5 * torch.rand(1).item() for _ in candidates] | |
| logger.info(f" Fitness scores: {[f'{s:.3f}' for s in fitness_scores]}") | |
| logger.info("\n Selecting candidates (Performance-Novelty)...") | |
| selected = engine.select(candidates, fitness_scores, alpha_exploration=0.3) | |
| logger.info(f" Selected {len(selected)} candidates") | |
| logger.info("\n Applying constrained mutations...") | |
| mutated = engine.mutate(selected, mutation_rate=0.2) | |
| logger.info(f" Produced {len(mutated)} mutants") | |
| engine.update_archive(candidates, fitness_scores) | |
| logger.info(f"\n Archive stats: {json.dumps(engine.get_diversity_stats(), indent=2)}") | |
| return engine | |
| def demo_safety(): | |
| logger.info("\n" + "=" * 60) | |
| logger.info("DEMO: Safety Sandbox") | |
| logger.info("=" * 60) | |
| from aether.safety import SafetySandbox | |
| sandbox = SafetySandbox(timeout=30.0) | |
| config = AetherConfig(population_size=8, mutation_rate=0.15, learning_rate=2e-5) | |
| logger.info("\n Validating safe config...") | |
| valid = sandbox.validate_architecture(config) | |
| logger.info(f" Result: {'PASS' if valid else 'FAIL'}") | |
| bad_config = AetherConfig(population_size=200, mutation_rate=0.8, learning_rate=0.1) | |
| logger.info("\n Validating unsafe config...") | |
| valid = sandbox.validate_architecture(bad_config) | |
| logger.info(f" Result: {'PASS' if valid else 'FAIL'}") | |
| logger.info("\n Testing sandbox execution...") | |
| with sandbox.sandbox() as ctx: | |
| result = sum(range(100)) | |
| ctx["modifications_attempted"].append("safe_operation") | |
| logger.info(f" Safe operation result: {result}") | |
| logger.info(f"\n Audit summary: {json.dumps(sandbox.get_audit_summary(), indent=2)}") | |
| return sandbox | |
| def demo_full_aether(): | |
| logger.info("\n" + "=" * 60) | |
| logger.info("DEMO: Full AETHER Integration") | |
| logger.info("=" * 60) | |
| config = AetherConfig( | |
| population_size=4, | |
| generations=3, | |
| mutation_rate=0.1, | |
| learning_rate=2e-5, | |
| macro_policy_dim=128, | |
| micro_policy_dim=64, | |
| num_agents=2, | |
| enable_self_modification=True, | |
| ) | |
| aether = AetherCore(config=config, model_name="demo-model") | |
| facts = [ | |
| ("AI", "is_a", "Technology"), | |
| ("AGI", "is_a", "AI"), | |
| ("AETHER", "is_a", "AGI"), | |
| ("AETHER", "integrates", "Neural_Networks"), | |
| ("AETHER", "integrates", "Symbolic_Reasoning"), | |
| ("Neural_Networks", "enables", "Learning"), | |
| ("Symbolic_Reasoning", "enables", "Explainability"), | |
| ] | |
| for h, r, t in facts: | |
| aether.knowledge.add_fact(h, r, t) | |
| tasks = [ | |
| "What is AETHER?", | |
| "How does AETHER learn?", | |
| "Explain AETHER reasoning", | |
| ] | |
| for task in tasks: | |
| logger.info(f"\n Task: {task}") | |
| result = aether.forward(task) | |
| logger.info(f" Symbolic weight: {result['symbolic_weight']:.3f}") | |
| logger.info(f" Neural weight: {result['neural_weight']:.3f}") | |
| logger.info(f" KG context: {len(result['kg_context']['results'])} results") | |
| logger.info("\n Self-reflection...") | |
| reflection = aether.self_reflect() | |
| logger.info(f" Generation: {reflection['generation']}") | |
| logger.info(f" Memory stats: {json.dumps(reflection['memory_stats'], indent=2)}") | |
| logger.info(f" Neuro-symbolic balance: {json.dumps(reflection['neuro_symbolic_balance'], indent=2)}") | |
| logger.info("\n Mock evolution...") | |
| def mock_eval(cfg): | |
| return 0.5 + 0.3 * torch.rand(1).item() | |
| evolve_result = aether.evolve(mock_eval, num_generations=2) | |
| logger.info(f" Best fitness: {evolve_result['best_fitness']:.4f}") | |
| logger.info(f" Generations evolved: {evolve_result['generations_evolved']}") | |
| logger.info(f" Architecture changes: {len(evolve_result['architecture_history'])}") | |
| logger.info("\n Exporting state...") | |
| state = aether.export_state() | |
| logger.info(f" State keys: {list(state.keys())}") | |
| logger.info(f" Metadata: {json.dumps(state['metadata'], indent=2)}") | |
| return aether | |
| def main(): | |
| logger.info("\n" + "=" * 70) | |
| logger.info(" AETHER: A Self-Evolving Neuro-Symbolic Architecture") | |
| logger.info(" Integrating AlphaEvolve + BabyAGI + HiMAC + GEA + Yunjue + ASI-Evolve") | |
| logger.info(" + CoALA + MLPO + Agentic Neural Networks + CoMAS") | |
| logger.info("=" * 70) | |
| start_time = time.time() | |
| demo_knowledge_graph() | |
| demo_memory_system() | |
| demo_agents() | |
| demo_evolution() | |
| demo_safety() | |
| demo_full_aether() | |
| elapsed = time.time() - start_time | |
| logger.info("\n" + "=" * 70) | |
| logger.info(f" All demos completed in {elapsed:.2f}s") | |
| logger.info("=" * 70) | |
| logger.info("\n Components verified:") | |
| logger.info(" [x] Knowledge Graph Engine (RGCN + ComplEx)") | |
| logger.info(" [x] CoALA Memory (Working + Episodic + Semantic + Procedural)") | |
| logger.info(" [x] Agent Orchestration (Hierarchical + BabyAGI + MLPO)") | |
| logger.info(" [x] Evolution Engine (MAP-Elites + Performance-Novelty)") | |
| logger.info(" [x] Safety Sandbox (Validation + Audit + Constraints)") | |
| logger.info(" [x] Full AETHER Integration") | |
| logger.info("\n Ready for training with TRL GRPO!") | |
| if __name__ == "__main__": | |
| main() | |