Почему графы лучше плоских цепочек
Реальным агентам нужны циклы, повторные попытки и условия — ориентированные ациклические графы и графы выражают то, чего не могут цепочки.
«Почему графы лучше плоских цепочек» — бесплатный урок AI Agents на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Когда цепочки не справляются
Цепочки LCEL отлично подходят для линейных процессов: A -> B -> C. Но возникают сложности, когда нужны:
- Циклы (повторять попытки до успеха)
- Условное ветвление (выбирать A или B на основе состояния)
- Паузы с участием человека
- Сохранение состояния между вызовами
Настоящие агенты — это графы
Агенты принимают решения шаг за шагом. Настоящий агент может:
- Составить Plan
- Найти информацию
- Если информация найдена — подготовить ответ; если нет — выполнить поиск снова
- Проверить результат
- Если результат неверен — исправить его; иначе — вернуть
Это граф, а не линия.
Знакомство с LangGraph
LangGraph (от команды LangChain) позволяет определять агентов как графы:
- Узлы — функции, которые читают и обновляют состояние
- Рёбра — определяют, какой узел запускается следующим
- Состояние — общий сохраняемый словарь
Nodes Are Just Functions
from langgraph.graph import StateGraph
class AgentState(TypedDict):
messages: list
plan: str
answer: str
def plan_step(state: AgentState) -> AgentState:
plan = generate_plan(state['messages'])
return {'plan': plan}Edges Connect Nodes
from langgraph.graph import StateGraph, END
graph = StateGraph(AgentState)
graph.add_node('plan', plan_step)
graph.add_node('search', search_step)
graph.add_node('answer', answer_step)
graph.set_entry_point('plan')
graph.add_edge('plan', 'search')
graph.add_edge('search', 'answer')
graph.add_edge('answer', END)
app = graph.compile()Running the Graph
result = app.invoke({'messages': [{'role': 'user', 'content': 'What is RAG?'}]})
print(result['answer'])Обновления состояния объединяются
Когда узел возвращает частичный словарь, LangGraph объединяет его с состоянием. Вам не нужно записывать всё состояние на каждом шаге.
Условное ветвление
Используйте add_conditional_edges для маршрутизации на основе состояния:
def needs_more_info(state):
if state['confidence'] < 0.7:
return 'search'
return 'answer'
graph.add_conditional_edges('plan', needs_more_info, {
'search': 'search',
'answer': 'answer'
})Loops Are Just Edges Back
graph.add_edge('search', 'plan') # loop back to planner
# The planner decides if more search is needed.Визуализация
LangGraph создаёт диаграммы Mermaid для Вашего графа — это отлично подходит для отладки структуры:
from IPython.display import Image
Image(app.get_graph().draw_mermaid_png())В сравнении с циклами while, написанными вручную
То же самое можно сделать с помощью цикла while в Python. LangGraph добавляет:
- Явную структуру графа (которую можно визуализировать)
- Встроенное создание контрольных точек
- Потоковую передачу обновлений состояния
- Примитивы для взаимодействия с человеком
LangGraph + LCEL
Узлом может быть любой вызываемый объект, включая цепочки LCEL. Комбинируйте их:
summarise_chain = prompt | model | parser
def summarise_node(state):
return {'summary': summarise_chain.invoke(state['text'])}Когда следует использовать граф
Какой сценарий больше всего выигрывает от использования LangGraph по сравнению с плоской цепочкой LCEL?
Итоги
Графы лучше цепочек, когда нужны циклы, ветвления, сохранение данных или взаимодействие с человеком. LangGraph предоставляет необходимую структуру.
Часто задаваемые вопросы
Урок «Почему графы лучше плоских цепочек» бесплатный?
Да — полный текст урока «Почему графы лучше плоских цепочек» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.
Чему я научусь в уроке «Почему графы лучше плоских цепочек»?
Реальным агентам нужны циклы, повторные попытки и условия — ориентированные ациклические графы и графы выражают то, чего не могут цепочки. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Agents?
Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Почему графы лучше плоских цепочек»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Agents?
Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Почему графы лучше плоских цепочек
- Узлы, рёбра и состояние
- Условная маршрутизация и ветвление
- Сохранение состояния графа (контрольные точки)