Розробка системи контролю якості AI-воркфорсу
Контроль якості AI-воркфорсу - систематична перевірка якості роботи AI-агентів через sampling, автоматичну оцінку та human review. Без QC система деградує непомітно: промпти старіють, LLM оновлюються, дані дрейфують.
Sampling стратегія
Перевіряти всі завдання неможливо при масштабі. Правильний sampling:
Випадкова вибірка: 2–5% всіх завдань для базового моніторингу. Статистично репрезентативна.
Стратифікований sampling: окремі вибірки за типами завдань, пріоритетами, клієнтами. Чи не пропустимо проблему в рідкісній категорії.
Risk-based sampling: посилений контроль для задач з низьким confidence score, нових типів завдань, high-value клієнтів.
Triggered sampling: при аномалії (зростання помилок, зниження confidence) - автоматичне збільшення sampling rate.
class QualitySampler:
def should_sample(self, task: CompletedTask) -> tuple[bool, str]:
# Risk-based приоритеты
if task.confidence_score < 0.6:
return True, "low_confidence"
if task.task_type in self.high_risk_types:
return random.random() < 0.20, "high_risk_type" # 20% sampling
if task.customer_tier == "enterprise":
return random.random() < 0.10, "enterprise_customer"
# Базовый random sampling 3%
return random.random() < 0.03, "random"
Автоматична оцінка через LLM-суддю
class LLMQualityJudge:
def __init__(self, judge_model: str = "gpt-4o"):
self.client = OpenAI()
self.judge_model = judge_model
def evaluate(self, task: AgentTask, result: AgentResult, rubric: EvalRubric) -> QualityScore:
prompt = f"""Ты судья качества AI-агента. Оцени работу агента по рубрике.
ЗАДАЧА: {task.description}
КОНТЕКСТ: {task.context}
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ: {task.expected_outcome}
ФАКТИЧЕСКИЙ РЕЗУЛЬТАТ: {result.output}
ДЕЙСТВИЯ АГЕНТА: {format_agent_trace(result.trace)}
РУБРИКА ОЦЕНКИ:
{rubric.to_text()}
Оцени каждый критерий от 0 до 5 и дай итоговую оценку."""
response = self.client.chat.completions.create(
model=self.judge_model,
messages=[{"role": "user", "content": prompt}],
response_format={"type": "json_object"},
)
scores = json.loads(response.choices[0].message.content)
return QualityScore(
criteria_scores=scores["criteria"],
overall=scores["overall"],
reasoning=scores["reasoning"],
flagged_issues=scores.get("issues", [])
)
Calibration: LLM-суддя vs людина
LLM-суддя схильний до зсувів: favors longer answers, penalizes certain styles. Регулярне калібрування:
def calibrate_judge(judge: LLMQualityJudge, human_labels: list[HumanLabel]) -> CalibrationReport:
judge_scores = [judge.evaluate(l.task, l.result, rubric).overall for l in human_labels]
human_scores = [l.human_score for l in human_labels]
# Cohen's Kappa для согласованности
kappa = cohen_kappa_score(
[round(s) for s in human_scores],
[round(s) for s in judge_scores]
)
# Систематическое смещение
bias = np.mean(np.array(judge_scores) - np.array(human_scores))
return CalibrationReport(
kappa=kappa, # цель > 0.6
bias=bias, # цель ≈ 0
correlation=np.corrcoef(human_scores, judge_scores)[0, 1],
needs_recalibration=kappa < 0.5 or abs(bias) > 0.3
)
Human review workflow
Прапоровані завдання потрапляють у чергу на ручну перевірку. Пріоритет: низький confidence + високий impact → першим. Інтерфейс reviewer: завдання, відповідь агента, оцінка AI-судді, поля для оцінки та коментаря. SLA: enterprise завдання – перевірка протягом 4 годин, стандартні – 24 години.
Звітність та trend tracking
Щотижневий QC-звіт: sampling statistics, distribution оцінок, топ-10 проблем, порівняння з минулим тижнем. Якщо середній quality score знизився на > 0.1 за тиждень автоматичний алерт на команду.







