0Pricing
AI Agents · レッスン

条件付きルーティングと分岐

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. グラフがフラットなチェーンに勝る理由
  2. ノード、エッジ、状態
  3. 条件付きルーティングと分岐
  4. グラフ状態の永続化(チェックポイント)
← AI Agentsに戻る