将一个大任务分给多个 Agent 好处:
- 每个代理更专注于其核心任务,因此性能更高
- 分离记忆可以减少每一步输入 token 的数量,从而降低延迟和成本。
Smolagents 中的 managed_agents 参数允许一个 agent 管理多个其他 agents。
下面一个 agent,它的任务是执行 GoogleSearchTool,VisitWebpage,calculate_cargo_travel_time。
...
model = InferenceClientModel(
"Qwen/Qwen2.5-Coder-32B-Instruct", provider="together", max_tokens=8096
)
web_agent = CodeAgent(
model=model,
tools=[
GoogleSearchTool(provider="serper"),
VisitWebpageTool(),
calculate_cargo_travel_time,
],
name="web_agent",
description="Browses the web to find information",
verbosity_level=0,
max_steps=10,
)
...
下面的 agent 作用是管理 web_agent:
...
manager_agent = CodeAgent(
model=InferenceClientModel("deepseek-ai/DeepSeek-R1", provider="together", max_tokens=8096),
tools=[calculate_cargo_travel_time],
managed_agents=[web_agent],
additional_authorized_imports=[
"geopandas",
"plotly",
"shapely",
"json",
"pandas",
"numpy",
],
planning_interval=5,
verbosity_level=2,
final_answer_checks=[check_reasoning_and_plot],
max_steps=15,
)
...
通过 manager_agent.visualize() 可视化,两个 Agent 是如何协同工作的。