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

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка AI-агента для обробки заявок
Середній
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

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

AI-агент для обробки запитів автоматизує первинну обробку вхідних запитів: класифікацію, валідацію, збір недостаючих даних та маршрутизацію потрібному спеціалісту або автоматичне виконання. Застосовується у службах підтримки, закупках, HR, юридичних відділах.

Компоненти агента обробки запитів

from pydantic import BaseModel
from typing import Optional, Literal
from openai import OpenAI
import json

client = OpenAI()

class RequestClassification(BaseModel):
    category: Literal["billing", "technical", "account", "shipping", "legal", "other"]
    subcategory: str
    priority: Literal["low", "normal", "high", "critical"]
    requires_human: bool
    missing_fields: list[str]
    confidence: float  # 0-1

def classify_request(request_text: str) -> RequestClassification:
    """Класифікація запиту через Structured Outputs"""
    response = client.beta.chat.completions.parse(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": "Класифікуй вхідний запит."},
            {"role": "user", "content": request_text},
        ],
        response_format=RequestClassification,
        temperature=0,
    )
    return response.choices[0].message.parsed

def collect_missing_info(request_text: str, missing_fields: list[str]) -> str:
    """Формує уточнюючи запитання для збору недостаючих даних"""
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{
            "role": "system",
            "content": "Сформулюй ввічливе запитання для уточнення інформації по запиту."
        }, {
            "role": "user",
            "content": f"Запит: {request_text}\nНедостаючи поля: {missing_fields}"
        }],
    )
    return response.choices[0].message.content

Діалоговий агент для збору даних

class RequestProcessor:
    """Діалоговий агент для повного збору даних запиту"""

    TEMPLATES = {
        "billing": ["invoice_number", "amount", "payment_date"],
        "technical": ["product_name", "version", "error_description", "steps_to_reproduce"],
        "account": ["user_email", "account_id", "issue_description"],
    }

    def __init__(self):
        self.conversations: dict[str, list] = {}
        self.collected_data: dict[str, dict] = {}

    def process_message(self, session_id: str, message: str) -> str:
        if session_id not in self.conversations:
            self.conversations[session_id] = []
            self.collected_data[session_id] = {}

        self.conversations[session_id].append({"role": "user", "content": message})

        # Оновлюємо зібрані дані
        self._extract_and_update(session_id, message)

        # Перевіряємо повноту
        required = self._get_required_fields(session_id)
        missing = [f for f in required if f not in self.collected_data[session_id]]

        if not missing:
            return self._finalize_request(session_id)

        # Запитуємо наступне поле
        return self._ask_for_field(session_id, missing[0])

    def _ask_for_field(self, session_id: str, field: str) -> str:
        field_questions = {
            "invoice_number": "Укажіть номер рахунку або інвойса",
            "amount": "Яка сума вказана у рахунку?",
            "error_description": "Опишіть помилку докладніше",
        }
        return field_questions.get(field, f"Уточніть: {field}")

    def _finalize_request(self, session_id: str) -> str:
        data = self.collected_data[session_id]
        ticket_id = create_ticket(data)
        return f"Запит створено: #{ticket_id}. Ми зв'яжемося з вами протягом 24 годин."

Практичний кейс: агент обробки запитів IT-підтримки

Завдання: первинна обробка IT-запитів у компанії 800 працівників.

Категорії: доступ до систем (34%), обладнання (22%), ПО (18%), мережа (14%), інше (12%).

Агент обробляє:

  1. Класифікує запит та пріоритет (SLA залежить від priority)
  2. Запитує недостаючу інформацію (версія ОС, скриншот помилки)
  3. Пробує автоматичне вирішення по базі знань (RAG по runbooks)
  4. При невдачі — створює тикет з повними даними та призначає виконавця

Метрики:

  • Авто-вирішення L1 (відповідь без участі інженера): 41%
  • Час до першої відповіді: 4ч → миттєво
  • Коректність класифікації: 93%
  • Повнота даних у створених тикетах: 78% → 96%

Графік

  • Розвиток агента класифікації + routing: 2–3 тижні
  • Інтеграція з тикетною системою (Jira/Zendesk): 1–2 тижні
  • База знань (RAG): 2–3 тижні
  • Тестування та налаштування: 1–2 тижні
  • Всього: 6–10 тижнів