Spaces:
Running
Running
| import sys | |
| import json | |
| from core import interact_with_user, cache_embeddings | |
| from json_parser import tree_from_json | |
| from tree import struct_tree | |
| from time import time | |
| import os | |
| # Load model once | |
| BASE_DIR = os.path.dirname(os.path.abspath(__file__)) | |
| PROJECT_ROOT = os.path.dirname(BASE_DIR) | |
| filepath_root = os.path.join(PROJECT_ROOT, "tree_data") | |
| filepath_naive = "portfolio_tree_data.json" | |
| filepath = os.path.join(filepath_root, filepath_naive) | |
| print("Loading engine...", file=sys.stderr) | |
| s = time() | |
| tree_file = tree_from_json(filepath) | |
| print(f"Loaded tree json in {time() - s:.2f}s", file=sys.stderr) | |
| s = time() | |
| cache_embeddings(tree_file) | |
| print(f"Cached embeddings in {time() - s:.2f}s", file=sys.stderr) | |
| tree_file.save(filepath[:-5] + ".pkl") | |
| s = time() | |
| tree_data = struct_tree.load(filepath[:-5] + ".pkl") | |
| print(f"Loaded tree pickle in {time() - s:.2f}s", file=sys.stderr) | |
| print("READY", file=sys.stderr) | |
| sys.stderr.flush() | |
| # Request loop | |
| while True: | |
| line = sys.stdin.readline() | |
| if not line: | |
| break | |
| try: | |
| data = json.loads(line) | |
| user_query = data.get("query", "") | |
| result = interact_with_user(tree_data, user_query) | |
| sys.stdout.write(json.dumps({"response": result}) + "\n") | |
| sys.stdout.flush() | |
| except Exception as e: | |
| sys.stdout.write(json.dumps({"error": str(e)}) + "\n") | |
| sys.stdout.flush() | |