from autogen import UserProxyAgent, config_list_from_json from autogen.agentchat.contrib.teachable_agent import TeachableAgent try: from termcolor import colored except ImportError: def colored(x, *args, **kwargs): return x verbosity = 0 # 0 for basic info, 1 to add memory operations, 2 for analyzer messages, 3 for memo lists. recall_threshold = 1.5 # Higher numbers allow more (but less relevant) memos to be recalled. use_cache = False # If True, cached LLM calls will be skipped and responses pulled from cache. False exposes LLM non-determinism. # Specify the model to use. GPT-3.5 is less reliable than GPT-4 at learning from user input. filter_dict = {"model": ["gpt-4"]} def create_teachable_agent(reset_db=False): """Instantiates a TeachableAgent using the settings from the top of this file.""" # Load LLM inference endpoints from an env variable or a file # See https://microsoft.github.io/autogen/docs/FAQ#set-your-api-endpoints # and OAI_CONFIG_LIST_sample config_list = config_list_from_json(env_or_file="OAI_CONFIG_LIST", filter_dict=filter_dict) teachable_agent = TeachableAgent( name="teachableagent", llm_config={"config_list": config_list, "request_timeout": 120, "use_cache": use_cache}, teach_config={ "verbosity": verbosity, "reset_db": reset_db, "path_to_db_dir": "./tmp/interactive/teachable_agent_db", "recall_threshold": recall_threshold, }, ) return teachable_agent def interact_freely_with_user(): """Starts a free-form chat between the user and TeachableAgent.""" # Create the agents. print(colored("\nLoading previous memory (if any) from disk.", "light_cyan")) teachable_agent = create_teachable_agent(reset_db=False) user = UserProxyAgent("user", human_input_mode="ALWAYS") # Start the chat. teachable_agent.initiate_chat(user, message="Greetings, I'm a teachable user assistant! What's on your mind today?") # Let the teachable agent remember things that should be learned from this chat. teachable_agent.learn_from_user_feedback() # Wrap up. teachable_agent.close_db() if __name__ == "__main__": """Lets the user test TeachableAgent interactively.""" interact_freely_with_user()