AI Agents · Урок

Условная маршрутизация и ветвление

Используйте add_conditional_edges для маршрутизации на основе состояния — агент сам решает, куда двигаться дальше.

Урок 3 из 414 шагов

«Условная маршрутизация и ветвление» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения 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 проверьте 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?

Итоги

Условные рёбра позволяют агентам принимать решения. Добавьте счётчик шагов, чтобы избежать циклов, и визуализируйте граф, чтобы не потерять контроль над его сложностью.

Можно начать бесплатно

Изучай AI Agents с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
60
Уроки
239

Часто задаваемые вопросы

Урок «Условная маршрутизация и ветвление» бесплатный?

Да — полный текст урока «Условная маршрутизация и ветвление» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Условная маршрутизация и ветвление»?

Используйте add_conditional_edges для маршрутизации на основе состояния — агент сам решает, куда двигаться дальше. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Условная маршрутизация и ветвление»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Почему графы лучше плоских цепочек
  2. Узлы, рёбра и состояние
  3. Условная маршрутизация и ветвление
  4. Сохранение состояния графа (контрольные точки)
← Назад к AI Agents