条件路由与分支
使用 add_conditional_edges 根据状态进行分派——由智能体决定下一步前往何处。
条件路由与分支 是 CoddyKit 上的免费 AI Agents 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Agents 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Agents 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
为什么需要条件边?
真正的代理需要做出决策。完成一个步骤后,下一个步骤取决于当前状态。条件边可以编码这种逻辑。
添加条件边
三个要素:源节点、路由函数和目标映射:
def route_after_planning(state: AgentState) -> str:
if state.get('confidence', 0) > 0.8:
return 'execute'
return 'replan'
graph.add_conditional_edges(
'planner',
route_after_planning,
{
'execute': 'executor',
'replan': 'planner'
}
)路由函数签名
路由器接收完整状态,并返回一个字符串(并行分支时返回字符串列表)。
自循环
一条边可以返回同一个节点 — 用于重试:
graph.add_conditional_edges(
'validator',
lambda s: 'retry' if not s['valid'] else 'done',
{'retry': 'planner', 'done': END}
)并行分支
返回要运行的节点名称列表,即可并行运行多个下游节点:
def fan_out(state):
return ['search_news', 'search_arxiv', 'search_github']
graph.add_conditional_edges('planner', fan_out)合并并行分支
并行分支会在一个共同的下游节点处重新汇合。状态合并会组合它们的输出(列表和字典请使用归约函数)。
根据工具调用进行路由
经典模式:LLM 响应后,检查工具调用并据此进行路由:
def should_use_tool(state):
last_msg = state['messages'][-1]
if last_msg.tool_calls:
return 'tools'
return END
graph.add_conditional_edges('agent', should_use_tool, {'tools': 'tools', END: END})多路路由
类似 switch-case 的逻辑:
def route_by_intent(state):
intent = classify(state['messages'][-1])
return {'q': 'qa_agent', 'order': 'order_agent', 'support': 'support_agent'}.get(intent, 'fallback')使用 LLM 调用进行路由
您可以使用 LLM 决定下一步前往何处:
def llm_router(state):
decision = llm.invoke(f'Route this to: search, calculate, or end?\nState: {state}').content.strip()
return decision # 'search' / 'calculate' / END避免无限循环
如果没有步骤计数器,代理可能会永远循环。请在状态中添加计数器:
class State(TypedDict):
step: int
...
def route(state):
if state['step'] >= MAX_STEPS:
return END
return 'continue'Increment Counter Reducer
def add(old: int, new: int) -> int:
return old + new
class State(TypedDict):
step: Annotated[int, add]
def any_node(state):
return {'step': 1} # increments by 1可视化分支
带条件边的图的 Mermaid 图表会显示决策菱形 — 便于检查:
print(app.get_graph().draw_mermaid())条件边
add_conditional_edges 中的路由函数会返回什么?
回顾
条件边是代理做出决策的方式。添加步骤计数器以避免循环,并将图可视化,让调试过程更清晰。
常见问题解答
「条件路由与分支」课时是免费的吗?
是的 — 「条件路由与分支」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Agents 课程的其余内容,请升级到 CoddyKit PRO。 AI Agents 课程共包含 4 节课。
「条件路由与分支」这节课中我会学到什么?
使用 add_conditional_edges 根据状态进行分派——由智能体决定下一步前往何处。 你通过在浏览器中直接运行的动手代码来练习 AI Agents,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Agents 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Agents 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「条件路由与分支」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Agents 课中编写并运行代码吗?
能。每节 AI Agents 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 图为何胜过扁平链
- 节点、边与状态
- 条件路由与分支
- 持久化图状态(检查点)