Условная маршрутизация и ветвление
Используйте add_conditional_edges для маршрутизации на основе состояния — агент сам решает, куда двигаться дальше.
«Условная маршрутизация и ветвление» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Почему графы лучше плоских цепочек
- Узлы, рёбра и состояние
- Условная маршрутизация и ветвление
- Сохранение состояния графа (контрольные точки)