Dwarakesh-V's picture
Copy files from Github to HF spaces
369c2da
import json
import os
from tree import struct_tree
SECOND_PERSON_MENTIONS = ["you", "your", "yours", "yourself", "y'all", "y'all's", "y'all'self", "you're", "your'e""u", "ur", "urs", "urself"]
def tree_from_json(filepath):
"""
Load a tree from a structured JSON file.
Root node name is taken from the filename (without extension).
Each node must have: intent, examples, response, and optionally children.
"""
with open(filepath, 'r') as f:
data = json.load(f)
filename_intent = os.path.splitext(os.path.basename(filepath))[0]
root_value = (filename_intent, ["Everything"], data["response"])
tree = struct_tree(root_value)
def add_children(parent_node, children_data):
for child in children_data:
# Validation
if not all(k in child for k in ("intent", "label", "examples", "response")):
raise ValueError(f"Missing required fields in node: {child}")
intent = child["intent"]
label = child["label"]
examples = child["examples"]
# Replace second-person mentions with "Amber AI" to match context
# for i in range(len(examples)):
# for spm in SECOND_PERSON_MENTIONS:
# examples[i] = examples[i].replace(spm, "Amber AI")
response = child["response"]
value = (intent, label, examples, response)
new_node = tree.add_node(parent_node, value)
if "children" in child:
add_children(new_node, child["children"])
if "children" in data:
add_children(tree.root, data["children"])
return tree