Разработка AI-агента для автоматизации бизнес-процессов

Разработка AI-агента для автоматизации бизнес-процессов

Направления AI-разработки

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

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    997
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

Разработка AI-агента для автоматизации бизнес-процессов

Представьте: бухгалтер тратит 3.5 часа в день на сверку счетов, а менеджер по персоналу — 2 часа на онбординг каждого новичка. Эти процессы съедают время, но их можно автоматизировать. Мы, команда AI/ML инженеров с 10-летним опытом, разрабатываем умных AI-агентов на базе больших языковых моделей (LLM), которые берут на себя рутину. В отличие от классической RPA, наш агент понимает неструктурированный контент (PDF, фото, email) и адаптируется к вариациям данных без перепрограммирования. За нашими плечами 30+ проектов по автоматизации — от обработки счетов до онбординга сотрудников.

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

Почему AI-агент эффективнее RPA?

RPA работает по жёстким сценариям: любое отклонение в структуре письма или PDF — и процесс ломается. AI-агент на LLM (GPT-4o, Claude 3.5) справляется с вариативностью: он извлекает данные из произвольного текста, использует Large language model (LLM) для классификации и принимает решения по правилам. В таблице — ключевые различия.

Характеристика RPA AI-агент
Обработка неструктурированных данных Нет Да (PDF, фото, email)
Адаптация к изменениям Нет Да (few-shot, RAG)
Human-in-the-loop Сложно Встроенная поддержка
Стоимость внедрения Средняя Выше, но окупается за 6–12 мес.
Точность при отклонениях Низкая Высокая (96%+)

Как мы строим AI-агента: пошаговый план

Наш подход к разработке агента состоит из четырёх этапов:

  1. Анализ и проектирование (1–2 недели): изучаем бизнес-процесс, собираем данные, рисуем схему AS-IS и TO-BE.
  2. Разработка ядра (2–3 недели): реализуем граф состояний на LangGraph, подключаем LLM (GPT-4o или Claude 3.5) и векторную базу (ChromaDB/pgvector).
  3. Интеграция с системами (1–2 недели): настраиваем адаптеры для 1С, Jira, Bitrix24, почты. Ниже таблица типовых интеграций.
  4. Тестирование и HITL (1–2 недели): проверяем на реальных данных, настраиваем точки принятия решений человеком.
Система Тип интеграции Сложность
1С (бухгалтерия, управление) REST API / ODBC Средняя
Jira / Trello REST API Низкая
Bitrix24 REST API / вебхуки Средняя
Почтовый сервер (IMAP) SMTP/IMAP Низкая
Файловый обмен (SFTP) Протокол Низкая

Типовые бизнес-процессы для AI-агента

Обработка входящих заявок: агент разбирает email/форму, классифицирует, проверяет данные, маршрутизирует нужному исполнителю, создаёт задачу в трекере. Остальные процессы — онбординг, обработка счетов, отчётность — автоматизируются по тому же принципу.

Архитектура агента для обработки заявок

from langgraph.graph import StateGraph, END from langchain_openai import ChatOpenAI from typing import TypedDict, Optional class ApplicationState(TypedDict): raw_input: str # Входящий текст заявки applicant_name: str application_type: str # тип заявки extracted_data: dict # извлечённые данные validation_result: dict # результат проверки routing_decision: str # куда направить task_id: Optional[str] # ID созданной задачи notification_sent: bool llm = ChatOpenAI(model="gpt-4o", temperature=0) def classify_and_extract(state: ApplicationState) -> ApplicationState: """Классификация заявки и извлечение данных""" response = llm.invoke(f"""Проанализируй входящую заявку и извлеки структурированные данные. Заявка: {state['raw_input']} Верни JSON: {{ "application_type": "vacation|expense|equipment|access|other", "applicant_name": "...", "department": "...", "details": {{}}, // специфичные поля по типу "urgency": "normal|urgent|critical", "missing_info": [] // чего не хватает }}""") import json data = json.loads(response.content) return { **state, "application_type": data["application_type"], "applicant_name": data.get("applicant_name", ""), "extracted_data": data, } def validate_application(state: ApplicationState) -> ApplicationState: """Проверка полноты и соответствия политикам""" app_type = state["application_type"] extracted = state["extracted_data"] validation = {"valid": True, "errors": [], "warnings": []} if app_type == "vacation": # Проверяем остаток отпуска days = extracted["details"].get("days", 0) balance = hr_api.get_vacation_balance(state["applicant_name"]) if days > balance: validation["valid"] = False validation["errors"].append(f"Недостаточно дней отпуска: запрошено {days}, доступно {balance}") elif app_type == "expense": amount = extracted["details"].get("amount", 0) if amount > 50000: # Лимит самостоятельного согласования validation["warnings"].append("Требует согласования руководителя") return {**state, "validation_result": validation} def route_application(state: ApplicationState) -> ApplicationState: """Определение маршрута обработки""" app_type = state["application_type"] validation = state["validation_result"] urgency = state["extracted_data"].get("urgency", "normal") if not validation["valid"]: routing = "reject_with_explanation" elif app_type == "vacation": routing = "hr_manager" elif app_type == "expense" and state["extracted_data"]["details"].get("amount", 0) > 50000: routing = "director_approval" elif app_type == "access": routing = "it_department" else: routing = "auto_approve" return {**state, "routing_decision": routing} def execute_routing(state: ApplicationState) -> ApplicationState: """Выполнение маршрутизации""" routing = state["routing_decision"] if routing == "auto_approve": task_id = jira_api.create_task( title=f"Авто-одобрено: {state['application_type']} от {state['applicant_name']}", status="Done", assignee="system", ) elif routing in ["hr_manager", "director_approval", "it_department"]: assignee_map = { "hr_manager": "[email protected]", "director_approval": "[email protected]", "it_department": "[email protected]", } task_id = jira_api.create_task( title=f"Заявка на {state['application_type']} от {state['applicant_name']}", assignee=assignee_map[routing], description=json.dumps(state["extracted_data"], ensure_ascii=False), priority="High" if state["extracted_data"].get("urgency") == "urgent" else "Normal", ) else: task_id = None notification_service.send( to=state["applicant_name"], message=f"Ваша заявка принята. Routing: {routing}. ID: {task_id}" ) return {**state, "task_id": task_id, "notification_sent": True} # Построение графа процесса graph = StateGraph(ApplicationState) graph.add_node("classify_and_extract", classify_and_extract) graph.add_node("validate", validate_application) graph.add_node("route", route_application) graph.add_node("execute", execute_routing) graph.set_entry_point("classify_and_extract") graph.add_edge("classify_and_extract", "validate") graph.add_edge("validate", "route") graph.add_edge("route", "execute") graph.add_edge("execute", END) application_agent = graph.compile() 

Практический кейс: обработка входящих счетов

Задача: 180+ счетов на оплату в месяц. До автоматизации — 3.5 часа в день главного бухгалтера. Из практики нашего клиента: мы внедрили агента за 6 недель.

Пайплайн агента:

  1. Извлечение текста из PDF (pdfplumber / LlamaParse)
  2. LLM извлекает: поставщик, ИНН, сумма, НДС, дата, номер, договор
  3. Сверка с реестром договоров (векторный поиск)
  4. Проверка в 1С: остаток по договору, бюджет статьи
  5. При OK — создание платёжного поручения в 1С
  6. При расхождении — задача бухгалтеру с объяснением

Метрики после 3 месяцев:

  • Автоматически обработано без вмешательства: 73%
  • Точность извлечения реквизитов: 96%
  • Ошибки (неправильная привязка к договору): 1.2%
  • Экономия времени: 2.5 часа/день

Как происходит интеграция с корпоративными системами?

Мы подключаем агента к вашим системам через REST API, ODBC или файловый обмен. Типовые интеграции: 1С, Jira, Bitrix24, почтовые серверы. Для каждой настраиваем адаптер, который транслирует данные в формат, понятный агенту. Векторная база (ChromaDB, pgvector) хранит эталонные документы для RAG.

Human-in-the-loop: когда агент запрашивает подтверждение

def requires_human_approval(state: ApplicationState) -> bool: """Определяет, нужно ли вмешательство человека""" return ( not state["validation_result"]["valid"] or state["extracted_data"].get("amount", 0) > 100000 or state["application_type"] == "termination" or state["extracted_data"].get("urgency") == "critical" ) # В LangGraph: interrupt_before для HITL agent = graph.compile( interrupt_before=["execute"], # Прерывание перед выполнением checkpointer=MemorySaver(), ) 

Что входит в работу

  • Анализ бизнес-процесса (схема AS-IS и TO-BE)
  • Проектирование архитектуры агента (LangGraph, LLM, vector DB)
  • Разработка и интеграция с вашими системами
  • Тестирование с human-in-the-loop
  • Документация (model card, инструкция)
  • Обучение сотрудников (2 часа)
  • Гарантия 3 месяца и поддержка

Сроки ориентировочно

  • Анализ и проектирование: 1–2 недели
  • Разработка с интеграциями: 3–5 недель
  • Тестирование и HITL-настройка: 1–2 недели
  • Итого: 5–9 недель в зависимости от сложности

Закажите внедрение AI-агента для вашего бизнеса — напишите нам, и мы предложим архитектуру и сроки. Получите консультацию и расчёт стоимости проекта.