Розробка AI-агента для технічної підтримки (L1/L2)

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
Розробка AI-агента для технічної підтримки (L1/L2)
Середній
від 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-агента для техпідтримки (L1/L2)

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

Ієрархія техпідтримки та роль AI

L0 (самообслуговування): FAQ, документація — повністю AI L1 (перша лінія): типові проблеми, стандартні рішення — AI обробляє 60–80% L2 (друга лінія): нестандартні випадки, аналіз логів — AI асистує інженеру L3 (експертний рівень): розробники, спеціалісти — поза межами AI-агента

Архітектура L1/L2 агента

from langchain_openai import ChatOpenAI
from langchain_community.vectorstores import Qdrant
from langchain.tools import Tool
import json

class TechSupportAgent:
    def __init__(self, kb_retriever, integrations: dict):
        self.llm = ChatOpenAI(model="gpt-4o", temperature=0)
        self.kb = kb_retriever           # Векторна база знань
        self.integrations = integrations  # Словник інтеграцій

        self.tools = self._build_tools()

    def _build_tools(self) -> list:
        return [
            {
                "type": "function",
                "function": {
                    "name": "search_knowledge_base",
                    "description": "Пошук рішень у базі знань за описом проблеми",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "query": {"type": "string"},
                            "product": {"type": "string"},
                        },
                        "required": ["query"]
                    }
                }
            },
            {
                "type": "function",
                "function": {
                    "name": "check_service_status",
                    "description": "Перевірити статус сервісу або системи",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "service_name": {"type": "string"}
                        },
                        "required": ["service_name"]
                    }
                }
            },
            {
                "type": "function",
                "function": {
                    "name": "reset_user_password",
                    "description": "Скинути пароль користувача (потребує підтвердження особи)",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "user_email": {"type": "string"},
                            "verified": {"type": "boolean", "description": "Особа користувача підтверджена"}
                        },
                        "required": ["user_email", "verified"]
                    }
                }
            },
            {
                "type": "function",
                "function": {
                    "name": "escalate_to_l2",
                    "description": "Ескалювати завдання інженеру L2",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "issue_summary": {"type": "string"},
                            "steps_tried": {"type": "array", "items": {"type": "string"}},
                            "priority": {"type": "string", "enum": ["normal", "high", "critical"]}
                        },
                        "required": ["issue_summary", "steps_tried"]
                    }
                }
            },
        ]

    def execute_tool(self, tool_name: str, args: dict) -> str:
        if tool_name == "search_knowledge_base":
            docs = self.kb.similarity_search(args["query"], k=3,
                                             filter={"product": args.get("product")})
            return "\n".join([d.page_content for d in docs])

        elif tool_name == "check_service_status":
            return self.integrations["monitoring"].get_service_status(args["service_name"])

        elif tool_name == "reset_user_password":
            if not args.get("verified"):
                return "ERROR: Необхідно підтвердити особу користувача перед скиданням пароля"
            return self.integrations["active_directory"].reset_password(args["user_email"])

        elif tool_name == "escalate_to_l2":
            ticket_id = self.integrations["jira"].create_ticket(
                summary=args["issue_summary"],
                description=f"Виконані кроки: {args['steps_tried']}",
                priority=args.get("priority", "normal"),
                component="L2",
            )
            return f"Завдання створено: {ticket_id}"

        return "Tool not found"

Діагностичне дерево рішень

Для складних технічних проблем агент дотримується структурованого процесу:

DIAGNOSTIC_SYSTEM_PROMPT = """Ти — технічний спеціаліст підтримки. Дотримуйся методології:

1. ІДЕНТИФІКАЦІЯ: уточни точні симптоми, повідомлення про помилки, версію ПО/ОС
2. ІЗОЛЯЦІЯ: визнач, коли почалася проблема, що змінилося
3. ДІАГНОСТИКА: перевір можливі причини від простих до складних
4. РІШЕННЯ: запропонуй покроковий розв'язок, перевір результат
5. ЕСКА ЛЮВАННЯ: якщо 2 спроби не допомогли — створи тикет L2 з повним контекстом

Під час роботи:
- Запитуй максимум 2 запитання за раз
- Перевіряй результат після кожного кроку
- Документуй усі виконані кроки
- При скиданні пароля — обов'язково підтверди особу через 3 контрольних запитання"""

Практичний кейс: L1 підтримка SaaS платформи

Обсяг: 2400 звернень на місяць, команда 6 операторів L1 + 3 інженери L2.

Топ-5 тематик: авторизація (31%), проблеми з завантаженням даних (22%), звіти (18%), інтеграції (15%), інше (14%).

Результати після 6 місяців:

Метрика До агента З агентом
L1 авто-вирішення 0% 58%
Середній час закриття L1 4.2ч 0.3ч (авто) / 3.1ч (еськалювання)
CSAT 3.7 4.2
Навантаження на інженерів L2 100% 71%
Помилки агента (невірне рішення) 3.1%

Верифікація особи перед діями

def verify_user_identity(session_id: str, claimed_email: str) -> bool:
    """Багатофакторна верифікація перед привілейованими діями"""

    user = user_service.get_by_email(claimed_email)
    if not user:
        return False

    # Верифікаційні запитання
    verification_questions = [
        f"Назови останні 4 цифри номеру телефону, прив'язаного до аккаунту",
        f"Який відділ компанії ви представляєте?",
        f"Назви дату створення аккаунту (місяць та рік)",
    ]

    for question in verification_questions[:2]:
        answer = get_user_answer(session_id, question)
        if not verify_answer(user, question, answer):
            return False

    return True

Графік

  • База знань + RAG: 2–3 тижні
  • Агент з діагностичним деревом: 2–3 тижні
  • Інтеграції (AD, моніторинг, тикети): 2–3 тижні
  • Тестування на реальних кейсах: 2 тижні
  • Всього: 8–11 тижнів