Разработка AI-системы оценки качества обслуживания (Quality Assurance AI)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка AI-системы оценки качества обслуживания (Quality Assurance AI)
Сложная
~1-2 недели
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка AI-системы оценки качества обслуживания (Quality Assurance AI)

AI-система QA автоматически прослушивает и оценивает 100% записей звонков по чек-листу — вместо выборочной ручной проверки 3–5% менеджером по качеству. Масштабирование контроля без роста штата.

Архитектура QA-системы

from dataclasses import dataclass
from typing import Callable

@dataclass
class QACriterion:
    id: str
    name: str
    weight: float  # вес в итоговой оценке
    evaluator: Callable  # функция оценки

class CallQAEvaluator:
    def __init__(self, scorecard: list[QACriterion]):
        self.scorecard = scorecard

    async def evaluate_call(self, call_id: str, transcript: dict) -> dict:
        scores = {}
        total_weighted = 0
        total_weight = sum(c.weight for c in self.scorecard)

        for criterion in self.scorecard:
            score = await criterion.evaluator(transcript)
            scores[criterion.id] = {
                "name": criterion.name,
                "score": score,  # 0-10
                "weight": criterion.weight
            }
            total_weighted += score * criterion.weight

        final_score = total_weighted / total_weight

        return {
            "call_id": call_id,
            "final_score": round(final_score, 1),
            "grade": self._score_to_grade(final_score),
            "breakdown": scores,
            "violations": [c for c in self.scorecard if scores[c.id]["score"] < 5]
        }

Критерии оценки и их реализация

async def evaluate_greeting(transcript: dict) -> float:
    """Оценка приветствия (0–10)"""
    first_agent_text = next(
        (t["text"] for t in transcript["turns"] if t["speaker"] == "OPERATOR"), ""
    )
    response = await client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{
            "role": "system",
            "content": """Оцени приветствие оператора от 0 до 10.
            Критерии:
            - Назвал имя компании (+2)
            - Назвал своё имя (+2)
            - Поздоровался уважительно (+2)
            - Предложил помощь (+2)
            - Тон доброжелательный (+2)
            Верни только число."""
        }, {"role": "user", "content": first_agent_text}]
    )
    try:
        return min(10, max(0, float(response.choices[0].message.content.strip())))
    except ValueError:
        return 5.0

async def evaluate_hold_notification(transcript: dict) -> float:
    """Предупредил ли оператор о постановке на удержание"""
    hold_keywords = ["подождите", "поставлю на удержание", "одну минуту"]
    agent_texts = " ".join(t["text"].lower() for t in transcript["turns"]
                           if t["speaker"] == "OPERATOR")
    return 10.0 if any(kw in agent_texts for kw in hold_keywords) else 0.0

Типовой чек-лист (20 критериев)

Категория Критерии Вес
Приветствие Имя, компания, доброжелательность 15%
Идентификация Верификация клиента 10%
Понимание проблемы Уточнение, активное слушание 20%
Решение Компетентность, правильность 25%
Завершение Резюме, удовлетворённость 15%
Соответствие стандартам Запреты, compliance 15%

Авторепорты операторам

Еженедельный отчёт оператору: динамика оценки, топ-3 сильных и слабых стороны, примеры лучших и худших звонков недели.

Сроки: базовый QA-модуль с 10 критериями — 4–6 недель. Полная система с дашбордами — 3 месяца.