
Привет, чемпионы! В последние месяцы термин Agentic AI всё чаще мелькает в статьях, репозиториях и продуктовых обновлениях крупных компаний. Но что он на самом деле означает? В чем отличие вообще от обычного LLM агента, на которого я накручу все, что мне нужно? Ну и соответственно, как это может помочь бизнесу то?
Сегодня я расскажу вам про все это, а также расскажу какие существуют реальные примеры интеграции в бизнес и сделаем мини примерчик на базе langgraph, который поможет вам понять примитивы концепции в которой у нас будет небольшой оркестратор в виде Qwen3:4b и его маленькие подопечные в виде Qwen3:1.7b. И сравним решения, если мы будем использовать стандартный пайплайн из LLM-агентов.
Что же такое Agentic AI и в чем отличие от LLM-агентов?
Представьте, что вы пришли на работу и вам дали стажера. Стажер может что-то написать или сделать руками, однако у него нет какой-то картины от задачи, что вы ему ставите, а если он дойдет до того, что нет документации к "крутой" легаси функции, что вы используете, то у него случится тряска и он будет использовать ее как черный ящик, пока вы сами не объясните ему, что происходит.
В этом случае ваш стажер, как и LLM агент в целом имеют общий концепт, вы даете задачу он делает это в заданной парадигме, стараясь не залезть куда-то лишний раз, возможно он считает, что это не нужно, а может не хочет перестараться.
Вы можете прикрутить ему какой-либо RAG в виде гайдов или документаций, но вероятнее всего, если он увидит, что что-то не так, то скорее всего будет ждать вас для дальнейших решений.

Agentic AI — это уже своего рода senior, которому вы даёте задачу. Он уже знает, как можно пользоваться какими-то вещами, что в данной корпоративной системе ему доступно, а что нет, и какие стажёры и джуны для этого ему доступны. Он может нарезать им задачки, далее получать от них обратную связь и делать ревью кода, а после, соединив всё вместе, выдать решение вам.
При этом, в отличие от классического агента, он не просто тупо выполняет цепочку шагов. Он может осмыслить, где нужно скорректировать маршрут, перепланирует, если что-то пошло не так, и даже может переформулировать задачу, если видит, что она была поставлена некорректно. Он не будет повторять одну и ту же ошибку в цикле, а делает выводы по ходу выполнения, держит в уме цель, адаптируется под ограниченные ресурсы и умеет объяснить, почему принял то или иное решение.
Это уже не набор инструментов, а инициативный исполнитель (но и стоит то подороже), способный к координации, рефлексии и действию в условиях неопределённости.

Как можно применить для автоматизации Agentic AI в бизнесе?
Автоматизация бизнес-процессов и workflow
Допустим у вас есть отдел продаж или клиентского сопровождения. И у вас есть менеджер, который должен:
взять данные по новому клиенту из CRM,
составить письмо на основе шаблона,
отправить его через корпоративную почту,
дождаться ответа,
сверить реквизиты,
обновить статус сделки,
-
отправить финальный отчёт руководителю.
Теперь вместо менеджера этим занимается Agentic AI. Он подключён к CRM, к корпоративной почте, к шаблонам писем и к таск-трекеру вроде Jira. Агент сам инициирует процесс, например, раз в час проверяет новые сделки или входящие лиды. Находит тех, у кого не отправлено приветственное письмо создаёт и отправляет. Если приходит ответ, он умеет его прочитать, извлечь нужную информацию (например, согласование КП или правки в договор), и автоматически обновить статус в CRM. Если есть критичные правки, то он отправит их юристу. Если всё в порядке — обновит карточку клиента, поднимет флаг в Slack нужной команде и создаст финальный отчёт. Всё это без человека.
Причём Agentic AI не просто бездумно бегает по пайплайну он отслеживает, где что застряло, может сам спросить дополнительную информацию у клиента («не могли бы вы уточнить ИНН?»), переформулировать письмо, если видит, что клиент не понял шаблон, и даже инициировать видеозвонок, если 3-я итерация ответа снова не дала результата.
Такой агент это уже не чат-бот, не RPA-скрипт, и не тупой автомат. Это самостоятельный "коллега", который знает, что ему нужно достичь (например, закрыть сделку), и сам умеет добираться до цели через множество систем и нестабильных входных данных. Именно за этим стоит будущее внутренней автоматизации в компаниях.
Нечто подобное было анонсировано и Cloud.ru они представили своего AI-помощника по имени Клаудия, который, по заявлениям, будет как полноценный облачный DevOps-компаньон.
Приступим к небольшому agentic ai
В данном случае мы сделаем на базе langgraph решение, которое позволит вам изучать какие-либо темы или получать отчеты по поиску на разные темы и я расскажу, как вы можете это улучшить для себя.
Давайте представим, что вы хотите сделать аналитика какой-либо информации. Для анализа самостоятельно вы бы проходились по источникам, изучали бы их, делали выводы и после составляли общее впечатление. Но что если у вас будет помощник, что будет искать вам источники информации, делать summary по каждому из них и давать вам ответ? Правильно, вы получите LLM-агента. Что в нем может пойти не так? Его анализ тех или иных источников может быть неудачный, поиск статей может быть плохой, в результате чего вы получите мало информации и так далее. Тогда на помощь приходит AgenticAI.
Приступим!
Сначала сделаем нашего планировщика тем:
Скрытый текст
import logging
import re
from langchain_ollama.llms import OllamaLLM
from langchain_core.messages import HumanMessage
from .base_agent import BaseAgent
logger = logging.getLogger("AgenticAIPipeline")
class PlannerAgent(BaseAgent):
def __init__(self):
self.llm = OllamaLLM(
model="qwen3:4b",
system="Ты — научный эксперт и планировщик. Твоя задача — разбить тему на наиболее информативные и важные подпункты для доклада. Отвечай на русском."
)
def run(self, state: dict) -> dict:
prompt = (
f"Разбей тему '{state['topic']}' на 4-7 информативных и важных подпунктов (аспектов) для подробного доклада. "
"Каждый подпункт должен быть самостоятельной подтемой (например: определение, области применения, примеры, риски, перспективы и т.п.). "
"Выведи подпункты в виде простого нумерованного списка, без пояснений и примечаний. Пиши только на русском!"
)
msg = HumanMessage(content=prompt)
out = self.llm.invoke([msg])
subtopics = []
for line in out.splitlines():
m = re.match(r"\d+\s*[.)-]?\s*(.+)", line)
if m:
subtopics.append(m.group(1).strip())
if not subtopics and out.strip():
subtopics = [x.strip() for x in re.split(r"\n|\. ", out) if x.strip()]
logger.info(f"LLM выделил следующие подпункты для раскрытия темы:\n" + "\n".join(f"{i+1}. {s}" for i, s in enumerate(subtopics)))
state.update({"subtopics": subtopics})
return state
Он позволит нам разбить нашу систему и выдавать задачи для его маленьких собратьев.
После этого реализуем нашего маленького агента для репортов на основе того, что у нас будет получено из статей для каждого из подпукнта:
Скрытый текст
import logging
import re
from langchain_ollama.llms import OllamaLLM
from langchain_core.messages import HumanMessage
from utils.text_cleaner import remove_think_blocks
logger = logging.getLogger("AgenticAIPipeline")
class ReportAgent:
def __init__(self):
self.llm = OllamaLLM(
model="qwen3:1.7b",
system="Ты — эксперт по искусственному интеллекту. Отвечай всегда только на русском языке."
)
def run(self, state: dict) -> dict:
subtopic_blocks = "\n\n".join(
f"### {item['subtopic']}\n{item['summary']}" for item in state["subtopic_summaries"]
)
prompt = (
"Ты — эксперт по искусственному интеллекту. Пиши только на русском языке! "
f"Вот summary по подпунктам темы '{state['topic']}':\n\n"
f"{subtopic_blocks}\n\n"
"На основе только этих summary напиши связный, подробный и структурированный доклад по теме (4-5 абзацев), переходя логично между подпунктами, делая выводы, давая примеры. "
"Не добавляй ничего выдуманного. В самом конце дай список подпунктов как оглавление."
)
msg = HumanMessage(content=prompt)
out = self.llm.invoke([msg])
summary = out if isinstance(out, str) else getattr(out, "content", str(out))
summary = remove_think_blocks(summary)
logger.info("Финальный доклад сгенерирован.")
state.update({"final_summary": summary})
return state
В нашем workflow мы добавим review агента, который будет выступать критиком отчетов от наших маленьких агентов по топикам и в случае того, что ему не понравится что-то он потребует иницировать заново поиск статей только в большем количестве для решения задачи:
Скрытый текст
import logging
from langchain_ollama.llms import OllamaLLM
from langchain_core.messages import HumanMessage
logger = logging.getLogger("AgenticAIPipeline")
class ReviewAgent:
def __init__(self):
self.llm = OllamaLLM(
model="qwen3:4b",
system="Ты — эксперт-оценщик качества summary. Оценивай строго, отвечай только 'ok' или 'more'."
)
def need_more_info(self, subtopic, summary) -> bool:
prompt = (
f"Вот краткое summary по теме '{subtopic}':\n\n"
f"{summary}\n\n"
"Оцени, достаточно ли это информативно для качественного доклада. "
"Если информации мало, нет примеров, нет конкретики или фактов, то напиши 'Повторить сбор (more)'. "
"Если summary достаточно информативно и покрывает все важные аспекты, напиши 'Достаточно (ok)'. "
"Пиши только 'ok' или 'more'!"
)
logger.info(f"[ReviewAgent] Анализ summary для подпункта: '{subtopic}'\nТекст summary:\n{summary}\n")
msg = HumanMessage(content=prompt)
out = self.llm.invoke([msg])
logger.info(f"[ReviewAgent] Ответ LLM-оценщика для подпункта '{subtopic}': {out}")
return 'more' in out.lower()
Пример того, что произойдет, если критику не понравится:

После чего мы присутпаем к тому, чтобы наш главный агент сделал общий отчет для нас:
Скрытый текст
import logging
from langchain_ollama.llms import OllamaLLM
from langchain_core.messages import HumanMessage
from langchain_community.utilities.duckduckgo_search import DuckDuckGoSearchAPIWrapper
from utils.article_parser import parse_article
from utils.text_cleaner import remove_think_blocks
from .review_agent import ReviewAgent
logger = logging.getLogger("AgenticAIPipeline")
class SummaryAgent:
def __init__(self):
self.llm = OllamaLLM(
model="qwen3:1.7b",
system="Ты — эксперт по искусственному интеллекту. Отвечай всегда только на русском языке, даже если вопрос или информация на другом языке."
)
self.search_tool = DuckDuckGoSearchAPIWrapper()
self.reviewer = ReviewAgent()
def run(self, state: dict) -> dict:
subtopic_summaries = []
for subtopic in state["subtopics"]:
logger.info(f"Обработка подпункта: '{subtopic}'")
n_articles = 5
max_attempts = 2 # можно больше
for attempt in range(max_attempts):
try:
search_results = self.search_tool.results(f"{state['topic']} {subtopic}", n_articles)
except Exception as e:
logger.error(f"Ошибка поиска для подпункта '{subtopic}': {e}")
break
articles = []
for art in search_results:
text = parse_article(art["link"], art["title"])
if text:
articles.append({"url": art["link"], "title": art["title"], "text": text})
if not articles:
logger.warning(f"Не удалось найти статьи для подпункта '{subtopic}'. Пропускаем.")
break
collected_texts = "\n\n".join(f"{a['title']}:\n{a['text'][:1000]}" for a in articles)[:5000]
prompt = (
f"Сделай подробное summary по подпункту '{subtopic}' в контексте темы '{state['topic']}'. "
f"Используй только факты из текстов ниже, не добавляй ничего выдуманного. "
f"Пиши на русском, 1-2 абзаца, с примерами, если они есть.\n\n"
f"{collected_texts}"
)
msg = HumanMessage(content=prompt)
summary = self.llm.invoke([msg])
summary = summary if isinstance(summary, str) else getattr(summary, "content", str(summary))
summary = remove_think_blocks(summary)
# --- Вызов review-агента ---
need_more = self.reviewer.need_more_info(subtopic, summary)
if not need_more or attempt == max_attempts - 1:
subtopic_summaries.append({"subtopic": subtopic, "summary": summary})
logger.info(f"Summary для подпункта '{subtopic}' сгенерировано (попытка {attempt+1}, статей: {n_articles}).")
break
else:
logger.info(f"Агент-оценщик считает информацию недостаточной — повторяем сбор с большим количеством статей.")
n_articles = 10 # или увеличивай прогрессивно
state.update({"subtopic_summaries": subtopic_summaries})
return state
Как итог мы получаем мета-Agentic AI систему, которую можно представить вот так:

В данном случае мы можем добавить динамический выбор методов поиска информации за счет решений LLM, а также добавить песочницу для кода, в которой LLM может ставить гипотезы по написанию каких-либо скриптов. К чему же мы можем так прийти?
К тому, что мы можем задать тему начиная от базовой статьи + code, заканчивая названием курса по какой-либо теме и при должном расширении получить программу с модулями и реализацией кода для примеров в каждом из них.
Итоги
Спасибо, что дочитали до конца! Если хотите 2 часть про, то как сделать вашу систему Agentic AI для написания и верификации простых скриптов для решения задач, то пишите в комментариях и поддержите лайками! Надеюсь данная работа покажет вам как можно сделать ваши прототипы Agentic AI систем дома.
Ссылку на полный репозиторий вы можете найти тут
? Ставьте лайк и пишите, какие темы разобрать дальше! Главное — пробуйте и экспериментируйте!
✔️ Присоединяйтесь к нашему Telegram-сообществу @datafeeling, где мы делимся новыми инструментами, кейсами, инсайтами и рассказываем, как всё это применимо к реальным задачам
via-site
Бегло прочитал статью. Может уже было, но интересно спросить можно ли добиться эффекта "Agentic AI" c применением langgraph? Или в качестве оркестратора всегда должна выступать LLM?