Разработка AI-системы автоматической оценки звонков операторов

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка 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-системы автоматической оценки звонков операторов

Автоматическое скоринг-система присваивает числовую оценку каждому звонку по стандартизированной методологии, создаёт рейтинги операторов и обнаруживает паттерны, требующие корректирующего обучения.

Многомерная модель оценки

from pydantic import BaseModel
from typing import Optional

class CallScorecard(BaseModel):
    call_id: str
    operator_id: str
    duration_seconds: float

    # Compliance (соответствие требованиям)
    greeting_score: float        # 0-10
    hold_procedure_score: float  # 0-10
    farewell_score: float        # 0-10
    gdpr_compliance: float       # 0-10

    # Quality (качество обслуживания)
    problem_understanding: float # 0-10
    solution_accuracy: float     # 0-10
    empathy_score: float         # 0-10

    # Efficiency (эффективность)
    aht_relative: float          # 0-10 (относительно целевого AHT)
    first_call_resolution: float # 0 или 10

    # Sales/Upsell (если применимо)
    offer_made: Optional[float] = None
    offer_quality: Optional[float] = None

    @property
    def total_score(self) -> float:
        scores = [
            self.greeting_score * 0.10,
            self.hold_procedure_score * 0.05,
            self.farewell_score * 0.05,
            self.gdpr_compliance * 0.10,
            self.problem_understanding * 0.20,
            self.solution_accuracy * 0.25,
            self.empathy_score * 0.15,
            self.aht_relative * 0.05,
            self.first_call_resolution * 0.05,
        ]
        return round(sum(scores), 1)

Автоматическая оценка через LLM

async def score_call_llm(transcript: dict) -> CallScorecard:
    full_dialog = format_dialog(transcript["turns"])

    response = await client.chat.completions.create(
        model="gpt-4o",
        messages=[{
            "role": "system",
            "content": """Ты эксперт по оценке качества обслуживания.
            Оцени звонок по каждому критерию от 0 до 10.
            Будь объективен, основывай оценку только на тексте.
            Верни JSON с полями: greeting_score, hold_procedure_score, farewell_score,
            gdpr_compliance, problem_understanding, solution_accuracy, empathy_score,
            first_call_resolution. Для каждого поля добавь comment_FieldName с пояснением."""
        }, {"role": "user", "content": full_dialog[:6000]}],
        response_format={"type": "json_object"}
    )

    data = json.loads(response.choices[0].message.content)
    return CallScorecard(
        call_id=transcript["call_id"],
        operator_id=transcript["operator_id"],
        duration_seconds=transcript["duration"],
        **{k: v for k, v in data.items() if not k.startswith("comment_")}
    )

Рейтинг операторов

async def calculate_operator_ratings(period: str) -> list[dict]:
    """Расчёт рейтингов за период (неделя/месяц)"""
    calls = await db.get_scored_calls(period=period)

    operator_stats = {}
    for call in calls:
        op_id = call["operator_id"]
        if op_id not in operator_stats:
            operator_stats[op_id] = {"scores": [], "call_count": 0}
        operator_stats[op_id]["scores"].append(call["total_score"])
        operator_stats[op_id]["call_count"] += 1

    ratings = []
    for op_id, stats in operator_stats.items():
        ratings.append({
            "operator_id": op_id,
            "avg_score": np.mean(stats["scores"]),
            "min_score": np.min(stats["scores"]),
            "call_count": stats["call_count"],
            "trend": calculate_trend(stats["scores"])  # рост/снижение
        })

    return sorted(ratings, key=lambda x: x["avg_score"], reverse=True)

Calibration: согласованность AI и людей

Периодически сравниваем AI-оценки с ручными оценками QA-менеджеров. Целевой показатель: корреляция Пирсона > 0.85.

Сроки: система скоринга с 15 критериями — 4–6 недель. С рейтингами и дашбордами — 2–3 месяца.