Представьте: вы — владелец сервиса. Средний чек — 50 000 рублей. В день приходит 200 сообщений в Telegram и WhatsApp. У вас три менеджера по поддержке. Они обрабатывают одно сообщение за 8-12 минут, потому что нужно найти информацию в базе знаний, проверить статус заказа, оформить возврат или просто утешить клиента.
К вечеру очередь не закрывается. Клиенты ждут ответа по 4 часа. Отзывы портятся. Конверсия падает. Вы нанимаете двух новых сотрудников — а через месяц они уходят, потому что рутинная работа выматывает.
Это реальная история, с которой начинаются 80% стартапов в сфере автоматизации поддержки. Каждый раз один и тот же вопрос: можно ли доверить рутину AI-агенту?
Ответ — да, но с оговорками. AI-агент не заменит человека в сложных ситуациях. Но 70% рутинных вопросов он обработает быстрее, точнее и дешевле.
В этой статье расскажу, как устроена архитектура AI-агента для мессенджеров, как интегрировать распознавание речи (ASR) и языковые модели (LLM), и покажу реальные примеры из TEOM.
Определения: термины, которые понадобятся
Прежде чем углубляться в архитектуру, определю несколько ключевых терминов:
AI-агент — программа, которая анализирует входящие сообщения, принимает решения и выполняет действия (отвечает пользователю, обновляет базу данных, вызывает API). В отличие от простого бота, агент способен к рассуждению: он понимает контекст, задаёт уточняющие вопросы и адаптируется под ситуацию.
ASR (Automatic Speech Recognition) — автоматическое распознавание речи. Превращает аудио- и видеозаписи в текст. В контексте мессенджеров ASR используется для транскрибации голосовых сообщений. Точность зависит от модели: GigaAM показывает WER 23.9% на русском языке, что значительно лучше Google Speech-to-Text.
LLM (Large Language Model) — большая языковая модель. Нейросеть, обученная на триллионах слов, которая понимает и генерирует текст. Примеры: GPT-4, Claude, GigaChat, Qwen. LLM — это «мозг» AI-агента: она анализирует запрос, формирует ответ и решает, какие действия выполнить.
Webhook — механизм обратного вызова. Когда пользователь отправляет сообщение в Telegram, сервер Telegram отправляет HTTP-запрос на ваш URL (webhook). Это позволяет реагировать на события в реальном времени без постоянного опроса сервера.
API (Application Programming Interface) — интерфейс программного взаимодействия. Набор правил и протоколов для обмена данными между программами. Через API ваш AI-агент общается с Telegram, WhatsApp, базой данных и внешними сервисами.
Pipeline — конвейер обработки данных. Последовательность шагов, через которые проходит входящее сообщение: от получения до формирования ответа. В AI-агентах pipeline обычно включает: приём сообщения → распознавание (если голос) → анализ LLM → формирование ответа → отправка.
Token — минимальная единица текста, которую обрабатывает LLM. Для русского языка один токен — это примерно 3-4 символа. Языковые модели ограничены количеством токенов: GPT-4 обрабатывает до 128 000 токенов за запрос, Qwen — до 131 000.
Context window (контекстное окно) — максимальный объём текста, который LLM может «держать в голове» одновременно. Определяет, сколько предыдущих сообщений агент помнит при генерации ответа. Маленькое контекстное окно = агент забывает контекст разговора.
Акт I: Зов приключения — почему простой бот не работает
Первая мысль каждого разработчика: «Напишу Telegram-бота на Python, подключу OpenAI API — готово». И это работает. Пока клиент не задаёт вопрос, который требует знания конкретики вашего бизнеса.
Вот что происходит с простым ботом:
``python
Простой бот без контекста — работает poorly
import openai
def handle_message(user_text: str) -> str:
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[
{"role": "system", "content": "Ты консультант по товарам."},
{"role": "user", "content": user_text}
]
)
return response.choices[0].message.content
`
Проблема: бот не знает, что конкретно купил клиент, какой у него статус заказа, и какие действия уже были предприняты. Он отвечает общими фразами, которые не решают проблему. Клиент раздражается.
Три уровня сложности
Уровень
Задача
Простой бот
AI-агент
1
«Какой у меня статус заказа?»
Не знает
Запрашивает API, возвращает статус
2
«Хочу вернуть товар, он сломался»
Отвечает общими фразами
Уточняет причину, проверяет политику возврата, создаёт заявку
3
«Вчера я разговаривал с Ольгой, она сказала, что замена будет через 2 дня, но прошло уже 5»
Полный провал
Помнит контекст, проверяет историю, эскалирует на менеджера
Простой бот справляется только с первым уровнем. AI-агент — со всеми тремя.
Telegram и WhatsApp работают по-разному. Telegram предоставляет чистый API и webhook-механизм. WhatsApp Business API требует аккредитации и работает через официальный провайдер (Twilio, MessageBird или Meta Cloud API).
`python
Пример: FastAPI webhook для Telegram
from fastapi import FastAPI, Request
import httpx
app = FastAPI()
TELEGRAM_BOT_TOKEN = "your-bot-token"
@app.post("/webhook/telegram")
async def telegram_webhook(request: Request):
data = await request.json()
message = data.get("message", {})
chat_id = message["chat"]["id"]
text = message.get("text", "")
voice = message.get("voice") # голосовое сообщение
if voice:
# Скачиваем аудио и передаём в ASR
audio_data = await download_telegram_voice(voice["file_id"])
text = await transcribe_audio(audio_data)
# Передаём текст в AI-агента
response = await ai_agent.process(chat_id, text)
await send_telegram_message(chat_id, response)
return {"ok": True}
`
Слой 2: Распознавание речи (ASR)
Голосовые сообщения — это 40% трафика в поддержке. Клиенту проще проговорить проблему, чем набирать текст. ASR-модель превращает аудио в текст, и дальше LLM работает уже с текстом.
В TEOM используется GigaAM — модель, обученная на русском языке. Она значительно превосходит Whisper по точности на русском контенте: WER 23.9% против 35-40% у Whisper. Подробнее о в отдельной статье.
`python
import teom_client
async def transcribe_audio(audio_bytes: bytes) -> str:
client = teom_client.Client(api_key="your-key")
result = await client.transcribe(
audio=audio_bytes,
language="ru",
diarize=False # для одного спикера
)
return result.text
`
Слой 3: Языковая модель (LLM)
LLM — это мозг агента. Она анализирует входящий текст, определяет намерение пользователя, обращается к базе знаний и формирует ответ. Ключевой момент: модель должна «знать» ваш бизнес. Для этого используется RAG (Retrieval-Augmented Generation) — генерация с.retrieve из базы знаний.
`python
Пример: агент с контекстом из базы знаний
from qwen_api import QwenClient
async def process_message(chat_id: int, user_text: str) -> str:
# 1. Получаем контекст разговора
history = await get_conversation_history(chat_id)
# 2. Ищем релевантную информацию в базе знаний
knowledge = await search_knowledge_base(user_text, top_k=3)
# 3. Формируем промпт
system_prompt = f"""Ты — консультант компании TechStore.
База знаний:
{knowledge}
История разговора:
{history}
"""
client = QwenClient()
response = await client.chat(
model="qwen-plus",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_text}
],
temperature=0.3 # низкая креативность = точные ответы
)
# 4. Сохраняем в историю
await save_to_history(chat_id, user_text, response.text)
return response.text
`
Слой 4: Действия (Actions)
Ответить текстом — это полдела. AI-агент должен выполнять действия: проверять статус заказа, создавать заявки на возврат, обновлять данные в CRM. Для этого используется функциональный вызов (function calling) LLM.
`python
Функции, которые LLM может вызвать
TOOLS = [
{
"type": "function",
"function": {
"name": "get_order_status",
"description": "Получить статус заказа по номеру",
"parameters": {
"type": "object",
"properties": {
"order_id": {"type": "string", "description": "Номер заказа"}
},
"required": ["order_id"]
}
}
},
{
"type": "function",
"function": {
"name": "create_return_request",
"description": "Создать заявку на возврат товара",
"parameters": {
"type": "object",
"properties": {
"order_id": {"type": "string"},
"reason": {"type": "string"}
},
"required": ["order_id", "reason"]
}
}
}
]
async def handle_with_tools(chat_id: int, user_text: str) -> str:
messages = [{"role": "user", "content": user_text}]
while True:
response = await llm.chat(
messages=messages,
tools=TOOLS,
tool_choice="auto"
)
if not response.tool_calls:
return response.text # нет вызовов — возвращаем ответ
# Выполняем вызовы и добавляем результаты
for call in response.tool_calls:
result = await execute_tool(call.function.name, call.function.arguments)
messages.append({"role": "tool", "content": str(result), "tool_call_id": call.id})
`
Акт III: Реальный кейс — AI-агент для TEOM
Задача
Автоматизировать поддержку TEOM: отвечать на вопросы о транскрибации, помогать с выбором тарифа, решать технические проблемы.
Голосовые сообщения — это 35% обращений в поддержку TEOM. Вот как работает пайплайн:
База знаний с pgvector
Для поиска релевантной информации используется векторная база данных. Все статьи базы знаний разбиваются на чанки, эмбеддинги сохраняются в pgvector, и при каждом запросе LLM получает 3 наиболее релевантных фрагмента.
`sql
-- Таблица базы знаний
CREATE TABLE knowledge_base (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
content TEXT NOT NULL,
embedding VECTOR(1536), -- pgvector
category TEXT,
updated_at TIMESTAMP DEFAULT NOW()
);
-- Поиск релевантных статей
SELECT title, content,
1 - (embedding <=> $1::vector) AS similarity
FROM knowledge_base
ORDER BY embedding <=> $1::vector
LIMIT 3;
``
Результаты
Метрика
До AI-агента
После
Среднее время ответа
47 мин
12 сек
Процент автоматических ответов
0%
72%
Удовлетворённость клиентов
3.2/5
4.1/5
Загрузка операторов
100%
28%
Акт IV: Практические советы
1. Не заставляйте пользователя думать
AI-агент не должен спрашивать «Чем я могу помочь?». Лучше: «Вижу, вы обращались по заказу #12345. Статус: в обработке. Хотите уточнить сроки или оформить возврат?»
2. Эскалируйте вовремя
Если пользователь написал «Это катастрофа!» или повторяет одно и то же сообщение третий раз — передавайте живому оператору. AI-агент должен знать свои границы.
3. Помните контекст
Context window современных моделей позволяет держать 50-100 последних сообщений. Используйте это: клиент не должен повторять, о чём он просил в начале разговора.
4. Тестируйте на реальных данных
Не доверяйте бенчмаркам вслепую. Создайте датасет из 200 реальных обращений и прогоните через агента. Посчитайте точность, время ответа и процент эскалаций.
Почему TEOM
TEOM предоставляет API для транскрибации аудио и видео с поддержкой русского языка. В контексте AI-агентов это означает:
Голосовые сообщения из Telegram/WhatsApp обрабатываются через GigaAM (WER 23.9% на русском)
Скорость обработки: 16x realtime (минута аудио за 4 секунды). Подробнее о .
Хранение данных в России (152-ФЗ совместимость)
Простое API: один HTTP-запрос — готовый текст
CTA
Готовы построить AI-агента для своей поддержки? Начните с транскрибации голосовых сообщений — это 40% рутины, которую можно автоматизировать прямо сейчас.
Попробуйте TEOM бесплатно — 5 часов транскрибации в месяц, без привязки карты. Или свяжитесь с нами, чтобы обсудить интеграцию AI-агента в ваш бизнес.