0Pricing
AI Agents · 课时

条件路由与分支

使用 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 图为何胜过扁平链
  2. 节点、边与状态
  3. 条件路由与分支
  4. 持久化图状态(检查点)
← 返回 AI Agents