Привет, чемпионы! В последние месяцы термин Agentic AI всё чаще мелькает в статьях, репозиториях и продуктовых обновлениях крупных компаний. Но что он на самом деле означает? В чем отличие вообще от обычного LLM агента, на которого я накручу все, что мне нужно? Ну и соответственно, как это может помочь бизнесу то?

Сегодня я расскажу вам про все это, а также расскажу какие существуют реальные примеры интеграции в бизнес и сделаем мини примерчик на базе langgraph, который поможет вам понять примитивы концепции в которой у нас будет небольшой оркестратор в виде Qwen3:4b и его маленькие подопечные в виде Qwen3:1.7b. И сравним решения, если мы будем использовать стандартный пайплайн из LLM-агентов.

Что же такое Agentic AI и в чем отличие от LLM-агентов?

Представьте, что вы пришли на работу и вам дали стажера. Стажер может что-то написать или сделать руками, однако у него нет какой-то картины от задачи, что вы ему ставите, а если он дойдет до того, что нет документации к "крутой" легаси функции, что вы используете, то у него случится тряска и он будет использовать ее как черный ящик, пока вы сами не объясните ему, что происходит.

В этом случае ваш стажер, как и LLM агент в целом имеют общий концепт, вы даете задачу он делает это в заданной парадигме, стараясь не залезть куда-то лишний раз, возможно он считает, что это не нужно, а может не хочет перестараться.

Вы можете прикрутить ему какой-либо RAG в виде гайдов или документаций, но вероятнее всего, если он увидит, что что-то не так, то скорее всего будет ждать вас для дальнейших решений.

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

При этом, в отличие от классического агента, он не просто тупо выполняет цепочку шагов. Он может осмыслить, где нужно скорректировать маршрут, перепланирует, если что-то пошло не так, и даже может переформулировать задачу, если видит, что она была поставлена некорректно. Он не будет повторять одну и ту же ошибку в цикле, а делает выводы по ходу выполнения, держит в уме цель, адаптируется под ограниченные ресурсы и умеет объяснить, почему принял то или иное решение.

Это уже не набор инструментов, а инициативный исполнитель (но и стоит то подороже), способный к координации, рефлексии и действию в условиях неопределённости.

Как можно применить для автоматизации Agentic AI в бизнесе?

Автоматизация бизнес-процессов и workflow

Допустим у вас есть отдел продаж или клиентского сопровождения. И у вас есть менеджер, который должен:

  1. взять данные по новому клиенту из CRM,

  2. составить письмо на основе шаблона,

  3. отправить его через корпоративную почту,

  4. дождаться ответа,

  5. сверить реквизиты,

  6. обновить статус сделки,

  7. отправить финальный отчёт руководителю.

    Теперь вместо менеджера этим занимается 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, где мы делимся новыми инструментами, кейсами, инсайтами и рассказываем, как всё это применимо к реальным задачам

Комментарии (1)


  1. via-site
    02.07.2025 07:35

    Бегло прочитал статью. Может уже было, но интересно спросить можно ли добиться эффекта "Agentic AI" c применением langgraph? Или в качестве оркестратора всегда должна выступать LLM?