Разработка AI-системы суфлирования оператору во время звонка
Суфлёр — более активный вариант Agent Assist: система не просто выводит подсказки, но формирует готовые фразы для немедленного произнесения. Оператор озвучивает предложенный текст или адаптирует его. Полезно для новых операторов и сложных скриптов продаж.
Отличие от Agent Assist
| Функция | Agent Assist | Суфлёр |
|---|---|---|
| Вывод | Информация, ссылки | Готовые фразы для произнесения |
| Активность | Реактивная | Проактивная |
| Целевая аудитория | Опытные операторы | Новые операторы |
| Сложность разработки | Средняя | Высокая |
Архитектура суфлёра
class CallPrompter:
def __init__(self):
self.dialog_manager = DialogStateManager()
self.phrase_generator = PhraseGenerator()
self.tts = StreamingTTS()
async def get_next_prompt(
self,
dialog_context: dict,
last_customer_utterance: str
) -> PromptSuggestion:
"""Генерируем следующую фразу для оператора"""
# Определяем стадию диалога
stage = await self.dialog_manager.get_stage(dialog_context)
# Генерируем предложенную фразу
prompt = await self.phrase_generator.generate(
stage=stage,
customer_utterance=last_customer_utterance,
customer_profile=dialog_context.get("customer"),
conversation_history=dialog_context.get("history", [])
)
return PromptSuggestion(
text=prompt.text,
confidence=prompt.confidence,
stage=stage.name,
alternatives=prompt.alternatives[:2] # запасные варианты
)
Генератор фраз под стадию диалога
STAGE_PROMPTS = {
"greeting": "Добрый день! Меня зовут {agent_name}, компания «{company}». Чем могу помочь?",
"verification": "Подскажите, пожалуйста, вашу фамилию и номер договора.",
"objection_price": "Понимаю вашу обеспокоенность ценой. Позвольте рассказать о ценности нашего предложения...",
"closing": "Итак, мы договорились: {summary}. Оформляю заявку на {date}. Всё верно?",
}
async def generate_phrase(stage: str, context: dict) -> str:
template = STAGE_PROMPTS.get(stage)
if template:
return template.format(**context)
# Для нестандартных ситуаций — LLM
response = await client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "system",
"content": f"""Ты суфлёр оператора колл-центра.
Стадия диалога: {stage}.
Последнее слово клиента: {context.get('customer_utterance')}.
Предложи оператору фразу для ответа.
Стиль: профессиональный, тёплый. Максимум 2 предложения."""
}]
)
return response.choices[0].message.content
Опциональное TTS для суфлёра
В некоторых внедрениях — суфлёр буквально проговаривает фразу в ухо оператора через наушник:
async def whisper_to_operator(text: str, agent_audio_ws: WebSocket):
"""Тихое воспроизведение подсказки оператору"""
audio = await tts.synthesize(text, voice="whisper_mode")
await agent_audio_ws.send_bytes(audio)
Метрики эффективности
- Script Adherence Rate: % фраз из скрипта vs собственных
- Prompt Acceptance Rate: % использованных суфлёрских фраз
- Conversion Delta: разница конверсии с суфлёром и без
Сроки: базовый суфлёр с готовыми фразами — 4–6 недель. С LLM-генерацией и TTS-суфлированием — 2–3 месяца.







