Розробка 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–2 тижні): вивчаємо бізнес-процес, збираємо дані, малюємо схему AS-IS та TO-BE.
- Розробка ядра (2–3 тижні): реалізуємо граф станів на LangGraph, підключаємо LLM (GPT-4o або Claude 3.5) та векторну базу (ChromaDB/pgvector).
- Інтеграція з системами (1–2 тижні): налаштовуємо адаптери для 1С, Jira, Bitrix24, пошти. Нижче таблиця типових інтеграцій.
- Тестування та 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 тижнів.
Пайплайн агента:
- Вилучення тексту з PDF (pdfplumber / LlamaParse)
- LLM вилучає: постачальник, ІПН, сума, ПДВ, дата, номер, договір
- Звірка з реєстром договорів (векторний пошук)
- Перевірка в 1С: залишок за договором, бюджет статті
- При OK — створення платіжного доручення в 1С
- При розбіжності — задача бухгалтеру з поясненням
Метрики після 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-агента для вашого бізнесу — напишіть нам, і ми запропонуємо архітектуру та строки. Отримайте консультацію та розрахунок вартості проєкту.







