from pkg_resources import packaging from datetime import datetime import os import autogen import json AUTOGEN_VERSION = packaging.version.parse(autogen.__version__) def default_llm_config(config_list, timeout=180): """Return a default config list with a given timeout, and with caching disabled. The formatting depends on the version of Autogen installed. Args: config_list (list): the OAI config list to include in the final llm_config timeout (int): the timeout for calls to the LLM Returns: None """ llm_config = { "config_list": config_list, } # Add options depending on the version if AUTOGEN_VERSION < packaging.version.parse("0.2.0b1"): llm_config["request_timeout"] = timeout llm_config["use_cache"] = False elif AUTOGEN_VERSION < packaging.version.parse("0.2.0b4"): llm_config["timeout"] = timeout llm_config["cache"] = None else: llm_config["timeout"] = timeout llm_config["cache_seed"] = None return llm_config def init(): """Helper function to initialize logging in a testbed scenario. Specifically, write timestamp and version information, then initialize autogen logging. Args: None Returns: None """ # Print some information about the run with open("timestamp.txt", "wt") as f: f.write("Timestamp: " + datetime.now().isoformat() + "\n") f.write("pyautogen version: " + str(autogen.__version__) + "\n") # Start logging if AUTOGEN_VERSION < packaging.version.parse("0.2.0b1"): autogen.Completion.start_logging(compact=False) def finalize(agents): """Helper function to finalize logging in a testbed scenario. Calling this function will save all the chat completions logged by Autogen to disk, and will save the messages dictionaries of all agents passed via the agents argument. Args: agents (list): a list of the agents whose messages will be logged to disk. Returns: None """ script_dir = os.path.dirname(os.path.realpath(__file__)) def messages_to_json(agent): messages = dict() for item in agent.chat_messages.items(): messages[item[0].name] = item[1] return json.dumps(messages, indent=4) for agent in agents: fname = agent.name + "_messages.json" with open(os.path.join(script_dir, fname), "wt") as fh: fh.write(messages_to_json(agent)) # Stop logging, and write logs to disk if AUTOGEN_VERSION < packaging.version.parse("0.2.0b1"): with open(os.path.join(script_dir, "completion_log.json"), "wt") as fh: fh.write(json.dumps(autogen.Completion.logged_history, indent=4)) autogen.Completion.stop_logging()