Разработка 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 недель