From 2f60ede75c28965a288493fac3133e4264f20a19 Mon Sep 17 00:00:00 2001 From: cpacker Date: Thu, 19 Oct 2023 16:13:06 -0700 Subject: [PATCH] allow empty /load --- main.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index cb3a12b8..fcddd267 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ import asyncio from absl import app, flags import logging +import glob import os import sys import pickle @@ -174,15 +175,29 @@ async def main(): except Exception as e: print(f"Loading {filename} failed with: {e}") else: - print(f"/load error: no checkpoint specified") + # Load the latest file + print(f"/load warning: no checkpoint specified, loading most recent checkpoint instead") + json_files = glob.glob("saved_state/*.json") # This will list all .json files in the current directory. + + # Check if there are any json files. + if not json_files: + print(f"/load error: no .json checkpoint files found") + else: + # Sort files based on modified timestamp, with the latest file being the first. + filename = max(json_files, key=os.path.getmtime) + try: + memgpt_agent.load_from_json_file_inplace(filename) + print(f"Loaded checkpoint {filename}") + except Exception as e: + print(f"Loading {filename} failed with: {e}") # need to load persistence manager too filename = filename.replace('.json', '.persistence.pickle') try: memgpt_agent.persistence_manager = InMemoryStateManager.load(filename) # TODO(fixme):for different types of persistence managers that require different load/save methods - print(f"Loaded persistence manager from: {filename}") + print(f"Loaded persistence manager from {filename}") except Exception as e: - print(f"/load error: loading persistence manager from {filename} failed with: {e}") + print(f"/load warning: loading persistence manager from {filename} failed with: {e}") continue