条件付きルーティングと分岐
add_conditional_edgesを使い、状態に応じて処理を振り分けます。次に進む先はエージェントが決定します。
「条件付きルーティングと分岐」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
条件付きエッジが必要な理由
実際のエージェントは判断を下します。あるステップの後に何をするかは、現在の状態によって決まります。条件付きエッジでそのロジックを表現します。
条件付きエッジの追加
必要な要素は3つです。始点ノード、ルーター関数、宛先マップです:
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)並列分岐の結合
並列分岐は、共通の下流ノードで再び合流します。状態のマージによって各分岐の出力が統合されます(リストやdictにはリデューサーを使用します)。
ツール呼び出しによるルーティング
典型的なパターンは、LLMの応答後にtool_callsを確認し、それに応じてルーティングすることです:
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のルーター関数は何を返しますか?
まとめ
条件付きエッジは、エージェントが判断を下すための仕組みです。ループを避けるためにステップカウンターを追加し、混乱しないようにグラフを可視化しましょう。
よくある質問
「条件付きルーティングと分岐」レッスンは無料ですか?
はい。「条件付きルーティングと分岐」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「条件付きルーティングと分岐」で何を学びますか?
add_conditional_edgesを使い、状態に応じて処理を振り分けます。次に進む先はエージェントが決定します。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「条件付きルーティングと分岐」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- グラフがフラットなチェーンに勝る理由
- ノード、エッジ、状態
- 条件付きルーティングと分岐
- グラフ状態の永続化(チェックポイント)