chappi-e / src /tools /handle_json.py
santiagoahl
Integrate Project work to HF template
5dfdf10
from langchain.tools import tool
import json
@tool
def handle_json(file_path: str) -> str:
"""
Process json files.
This tool receives a file path to a json file as input and returns a dict object containing the json object.
Args:
file_path (str): Path to json file. It must have extension .json
Returns:
dict: Processed json object
Raises:
ValueError: In such a case the file_path points to a non .json file
Example:
>>> path = "data/temp-data/temp_json.json"
>>> handle_json(path)
{'key1': 1, 'key2': 2, 'key3': 30}
"""
filetype = file_path.split(".")[-1]
try:
assert file_path.endswith(filetype)
except AssertionError:
return ValueError(
f"{file_path} has no valid file type. Received .{filetype}, expected .json"
)
with open(file_path, "r") as f:
obj = f.read()
return json.loads(obj)
if __name__ == "__main__":
print("Testing process...\n", "-" * 50, "\n")
print("Processing json...\n", "-" * 50, "\n")
path = "data/temp-data/temp_json.json"
result = handle_json.invoke({'file_path': path})
print("The json has been processed...\n", "-" * 50, "\n")
print(result)
# TODO: implement pydantic to validate data