
RuntimeError: No available speakers found.
快速结论:这个报错通常在使用 AutoGen GraphFlow(基于有向图的工作流)时触发,当某个 agent 拥有工具但图中存在边缘(edge)时,GraphFlow 在寻找下一个 speaker 时失败。优先排查图中节点与边缘的配置是否正确,以及工具结果是否被直接用作消息。
问题场景
用户在配置 AutoGen 的 GraphFlow 工作流(通过 DiGraphBuilder 构建图)时,为多个 agent 分配了不同的工具(如 query_muse_search、get_dataset_info、search_relevant_fields、test_iql)并定义了图边缘。在运行过程中,尽管图结构中明确存在边缘,GraphFlow 仍抛出 RuntimeError: No available speakers found。
报错原文
RuntimeError: No available speakers found.
原因分析
可能原因:GraphFlow 在选择下一个 speaker 时,工具结果(tool results)被直接当作消息处理,导致内部状态异常,进而无法正确识别图边缘中定义的下一个 agent。该行为可能是一个与工具结果处理相关的 bug。
环境排查
- AutoGen 版本(使用特定版本,如未注明则需确认)
- Python 版本(通常 3.9+)
- 依赖:
microsoft.autogen、openai、asyncio等 - 图配置:检查
graph_config中的edges是否正确定义了source、target和可选的condition - Agent 工具列表:确认
tools_allow_list中的工具是否都存在且被正确过滤
解决步骤
- 确认图边缘配置正确:检查所有
source和targetagent 的名称是否与agents列表中的name完全匹配(区分大小写)。建议在添加边缘后打印日志,验证每个边缘是否成功添加。 - 检查工具过滤函数:确保
filter_tools(tools, allow_list)返回的工具列表不为空且正确。如果某个 agent 的工具列表为空,即使tools_allow_list非空,也可能引发异常。 - 测试最小可复现用例:尝试移除部分工具或简化图结构(例如只保留 2-3 个 agent 和一条边缘),确认问题是否仍然存在。可优先尝试以下代码片段来隔离问题:
for agent in self.agents_parsed:
for agent_name, agent_config in agent.items():
allow_list = agent_config["tools_allow_list"]
filtered_tools = filter_tools(tools, allow_list)
# ... 其他配置
agent = create_assistant_agent(
name=agent_name,
system_message=agent_config["system_message"],
tools=filtered_tools,
model_client=model_client,
buffered_chat_completions=buffered_chat_completions,
handoffs=handoffs,
)
self.agents.append(agent)
0.2.*),或者查看官方 GitHub 仓库中是否有相关修复。Swarm 类型的团队配置。验证方法
执行简化后的图工作流,观察是否仍然抛出 RuntimeError: No available speakers found。如果不再报错,则原因为边缘配置或工具处理逻辑的问题;如果仍报错,可能是 AutoGen 的 bug,需要进一步排查版本或提交 Issue。



