65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
"""
|
|
Start Emma: python emma_run.py
|
|
Statistikk: python emma_run.py --stats
|
|
"""
|
|
import sys
|
|
import argparse
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from emma.emma_backend_ollama import OllamaBackend
|
|
from emma.emma_resonance_persistent import PersistentMorphicMemory
|
|
from emma.emma_mcot import EmmaMCoTAgent
|
|
from emma.emma_guardrails import EmmaGuardrails
|
|
from emma.emma_flynn import FlynnTracker
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Emma AI Agent REPL")
|
|
parser.add_argument("--model", default="llama3.2")
|
|
parser.add_argument("--embed", default="nomic-embed-text")
|
|
parser.add_argument("--stats", action="store_true")
|
|
args = parser.parse_args()
|
|
|
|
if args.stats:
|
|
s = FlynnTracker().summary()
|
|
print("📊 Flynn-statistikk:")
|
|
for k, v in (s or {}).items():
|
|
print(f" {k}: {v:.4f}" if isinstance(v, float) else f" {k}: {v}")
|
|
return
|
|
|
|
llm = OllamaBackend(model=args.model, embed_model=args.embed)
|
|
memory = PersistentMorphicMemory()
|
|
guardrails = EmmaGuardrails()
|
|
agent = EmmaMCoTAgent(llm=llm, memory=memory)
|
|
|
|
print(f"🤖 Emma klar | Modell: {args.model} | Morfisk minne: {len(memory)} mønstre")
|
|
print("exit=avslutt stats=Flynn-statistikk\n")
|
|
|
|
history = []
|
|
while True:
|
|
try:
|
|
user_input = input("Chris> ").strip()
|
|
except (KeyboardInterrupt, EOFError):
|
|
break
|
|
if user_input.lower() in ("exit", "quit"):
|
|
break
|
|
if user_input.lower() == "stats":
|
|
print(FlynnTracker().summary())
|
|
continue
|
|
if not user_input:
|
|
continue
|
|
ok, reason = guardrails.can_execute(user_input)
|
|
if not ok:
|
|
print(f"🛡️ {reason}")
|
|
continue
|
|
response = agent.run(user_input, history)
|
|
history.append({"role": "user", "content": user_input})
|
|
history.append({"role": "assistant", "content": response})
|
|
print(f"Emma> {response}\n")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|