in src/smolagents/agents.py [0:0]
def to_dict(self) -> dict[str, Any]:
"""Convert the agent to a dictionary representation.
Returns:
`dict`: Dictionary representation of the agent.
"""
# TODO: handle serializing step_callbacks and final_answer_checks
for attr in ["final_answer_checks", "step_callbacks"]:
if getattr(self, attr, None):
self.logger.log(f"This agent has {attr}: they will be ignored by this method.", LogLevel.INFO)
tool_dicts = [tool.to_dict() for tool in self.tools.values()]
tool_requirements = {req for tool in self.tools.values() for req in tool.to_dict()["requirements"]}
managed_agents_requirements = {
req for managed_agent in self.managed_agents.values() for req in managed_agent.to_dict()["requirements"]
}
requirements = tool_requirements | managed_agents_requirements
if hasattr(self, "authorized_imports"):
requirements.update(
{package.split(".")[0] for package in self.authorized_imports if package not in BASE_BUILTIN_MODULES}
)
agent_dict = {
"class": self.__class__.__name__,
"tools": tool_dicts,
"model": {
"class": self.model.__class__.__name__,
"data": self.model.to_dict(),
},
"managed_agents": [managed_agent.to_dict() for managed_agent in self.managed_agents.values()],
"prompt_templates": self.prompt_templates,
"max_steps": self.max_steps,
"verbosity_level": int(self.logger.level),
"grammar": self.grammar,
"planning_interval": self.planning_interval,
"name": self.name,
"description": self.description,
"requirements": sorted(requirements),
}
return agent_dict