from swarms.tools.agent.singletool import load_single_tools, STQuestionAnswerer import datetime tool_name, tool_url = "db_diag", "http://127.0.0.1:8079/tools/db_diag/" tool_name, tool_config = load_single_tools(tool_name, tool_url) print(tool_name, tool_config) stqa = STQuestionAnswerer() # langchain agent = stqa.load_tools( tool_name, tool_config, prompt_type="react-with-tool-description" ) # langchain: react-with-tool-description autogpt: autogpt # database on 123.56.63.105 """ start_timestamp_str = "2023-05-19 22:21:30" dt = datetime.datetime.strptime(start_timestamp_str, "%Y-%m-%d %H:%M:%S") timestamp = dt.timestamp() start_time = timestamp end_timestamp_str = "2023-05-19 22:23:30" dt = datetime.datetime.strptime(end_timestamp_str, "%Y-%m-%d %H:%M:%S") timestamp = dt.timestamp() end_time = timestamp print(" ===== time period: ", start_time, end_time) """ # text = "The database performance is bad during {} to {}.".format(start_timestamp_str, end_timestamp_str) # trigger database diagnosis text = "Here is a database performance problem. Please help me to diagnose the causes and give some optimization suggestions." agent( """ {} First, obtain_start_and_end_time_of_anomaly and memorize the start and end time of the anomaly. Second, you need to diagnose the causes of the anomaly from the following two aspects: - call the whether_is_abnormal_metric API and examine whether CPU usage is high (or abnormal). Next, if the CPU usage is high (or abnormal), cpu_diagnosis_agent and obtain the diagnosis results. - call the whether_is_abnormal_metric API and examine whether memory usage is high (or abnormal). Next, if the memory usage is high (or abnormal), memory_diagnosis_agent and obtain the diagnosis results. Third, you need to match each cause with potential solutions cached in the vector database. Finally, list the above diagnosed causes and their matched solutions in easy-to-understand format using bullet points. ================================ A Demonstration example: Thought: I need to check whether the CPU usage is high or abnormal during the given time period. Action: whether_is_abnormal_metric Action Input: {{"start_time": xxxx, "end_time": xxxx, "metric_name": "cpu_usage"}} Note. 1) The first action must be obtain_start_and_end_time_of_anomaly; 2) Do not use any image in the output; 3) Give some optimization suggestions based on the diagnosis results. """.format( text ) ) """ 1) Action can only be one of the following API names: obtain_start_and_end_time_of_anomaly, whether_is_abnormal_metric, obtain_values_of_metrics, cpu_diagnosis_agent, memory_diagnosis_agent. Any other content in Action is unacceptable; """