You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.3 KiB
85 lines
2.3 KiB
import subprocess
|
|
from typing import Any, Dict, List
|
|
|
|
from swarms.utils.loguru_logger import initialize_logger
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from swarms.structs.agent import Agent
|
|
|
|
logger = initialize_logger(log_folder="pandas_utils")
|
|
|
|
try:
|
|
import pandas as pd
|
|
except ImportError:
|
|
logger.error("Failed to import pandas")
|
|
subprocess.run(["pip", "install", "pandas"])
|
|
import pandas as pd
|
|
|
|
|
|
def display_agents_info(agents: List[Agent]) -> None:
|
|
"""
|
|
Displays information about all agents in a list using a DataFrame.
|
|
|
|
:param agents: List of Agent instances.
|
|
"""
|
|
# Extracting relevant information from each agent
|
|
agent_data = []
|
|
for agent in agents:
|
|
try:
|
|
agent_info = {
|
|
"ID": agent.id,
|
|
"Name": agent.agent_name,
|
|
"Description": agent.description,
|
|
"max_loops": agent.max_loops,
|
|
# "Docs": agent.docs,
|
|
"System Prompt": agent.system_prompt,
|
|
"LLM Model": agent.llm.model_name, # type: ignore
|
|
}
|
|
agent_data.append(agent_info)
|
|
except AttributeError as e:
|
|
logger.error(
|
|
f"Failed to extract information from agent {agent}: {e}"
|
|
)
|
|
continue
|
|
|
|
# Creating a DataFrame to display the data
|
|
try:
|
|
df = pd.DataFrame(agent_data)
|
|
except Exception as e:
|
|
logger.error(f"Failed to create DataFrame: {e}")
|
|
return
|
|
|
|
# Displaying the DataFrame
|
|
try:
|
|
print(df)
|
|
except Exception as e:
|
|
logger.error(f"Failed to print DataFrame: {e}")
|
|
|
|
|
|
def dict_to_dataframe(data: Dict[str, Any]) -> pd.DataFrame:
|
|
"""
|
|
Converts a dictionary into a pandas DataFrame.
|
|
|
|
:param data: Dictionary to convert.
|
|
:return: A pandas DataFrame representation of the dictionary.
|
|
"""
|
|
# Convert dictionary to DataFrame
|
|
df = pd.json_normalize(data)
|
|
return df
|
|
|
|
|
|
def pydantic_model_to_dataframe(model: BaseModel) -> pd.DataFrame:
|
|
"""
|
|
Converts a Pydantic Base Model into a pandas DataFrame.
|
|
|
|
:param model: Pydantic Base Model to convert.
|
|
:return: A pandas DataFrame representation of the Pydantic model.
|
|
"""
|
|
# Convert Pydantic model to dictionary
|
|
model_dict = model.dict()
|
|
|
|
# Convert dictionary to DataFrame
|
|
df = dict_to_dataframe(model_dict)
|
|
return df
|