SingularityPrinciple's picture
Launch DiffusionGemma-26B-A4B-it-Infinite-Context preview
0cabe9d verified
Raw
History Blame Contribute Delete
4.29 kB
import argparse
import json
import sys
from .runtime import NZFCGramLongMemoryChat
def main():
parser = argparse.ArgumentParser(description="NZFC-GRAM v1.2 local long-memory chat CLI")
parser.add_argument("--repo-dir", default=".", help="Path to cloned Hugging Face repo root")
parser.add_argument("--model-id", default="google/gemma-4-E2B-it")
parser.add_argument("--memory-db", default=None, help="Optional SQLite memory DB path")
parser.add_argument("--user-id", default="default_user")
parser.add_argument("--project-id", default="default")
parser.add_argument("--session-id", default="main")
parser.add_argument("--language", default="ko", choices=["ko", "en", "auto"])
parser.add_argument("--save-scope", default="project", choices=["session", "project", "user"])
parser.add_argument("--debug", action="store_true")
parser.add_argument("--no-model", action="store_true", help="Load retrieval stack only; generation will fail unless model is loaded")
args = parser.parse_args()
print("=" * 100)
print("NZFC-GRAM v1.2 Local Long-Memory Chat")
print("=" * 100)
print("repo_dir:", args.repo_dir)
print("model_id:", args.model_id)
print("user_id:", args.user_id)
print("project_id:", args.project_id)
print("session_id:", args.session_id)
print("save_scope:", args.save_scope)
print("=" * 100)
print("Commands:")
print(" /exit")
print(" /stats")
print(" /remember <text>")
print(" /forget_tag <tag>")
print(" /reset_session")
print("=" * 100)
bot = NZFCGramLongMemoryChat(
repo_dir=args.repo_dir,
model_id=args.model_id,
memory_db_path=args.memory_db,
load_model=not args.no_model,
require_model=not args.no_model,
)
while True:
try:
msg = input("\nUser> ").strip()
except EOFError:
break
except KeyboardInterrupt:
print("\n[EXIT]")
break
if not msg:
continue
if msg in ["/exit", "exit", "quit", "/quit"]:
break
if msg == "/stats":
print(json.dumps(bot.stats(), ensure_ascii=False, indent=2))
continue
if msg.startswith("/remember "):
text = msg[len("/remember "):].strip()
rec = bot.remember(
text,
user_id=args.user_id,
project_id=args.project_id,
session_id=args.session_id,
scope=args.save_scope,
)
print("[REMEMBERED]", rec["rid"])
continue
if msg.startswith("/forget_tag "):
tag = msg[len("/forget_tag "):].strip()
out = bot.forget_tag(
tag,
user_id=args.user_id,
project_id=args.project_id,
session_id=args.session_id,
scope=args.save_scope,
)
print(json.dumps(out, ensure_ascii=False, indent=2))
continue
if msg == "/reset_session":
out = bot.reset_session(
user_id=args.user_id,
project_id=args.project_id,
session_id=args.session_id,
)
print(json.dumps(out, ensure_ascii=False, indent=2))
continue
out = bot.chat(
msg,
user_id=args.user_id,
project_id=args.project_id,
session_id=args.session_id,
save_turn=True,
save_scope=args.save_scope,
return_debug=args.debug,
response_language=args.language,
)
print("\nAssistant>")
print(out["answer"])
if args.debug:
print("\n[DEBUG]")
debug_copy = dict(out)
if "debug" in debug_copy:
debug_copy["debug"] = {
"memory_pack_chars": len(debug_copy["debug"].get("memory_pack", "")),
"system_prompt_chars": len(debug_copy["debug"].get("system_prompt", "")),
"user_prompt_chars": len(debug_copy["debug"].get("user_prompt", "")),
}
print(json.dumps(debug_copy, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()