AI чат-бот для поддержки клиентов — один из самых востребованных сценариев применения языковых моделей в бизнесе. Современные LLM (GPT-4o, Claude, Gemini) способны понимать контекст диалога, отвечать на сложные вопросы и корректно переключать пользователя на живого оператора. В этой статье мы покажем, как создать такого бота с нуля через ModelSwitch API.
Архитектура AI чат-бота
Типичная архитектура AI-бота для саппорта состоит из трёх слоёв:
- Фронтенд — виджет чата на сайте или интеграция с Telegram, WhatsApp, VK
- Бэкенд — сервер, который принимает сообщения, формирует промпт и отправляет запрос к LLM через ModelSwitch
- Контекстное хранилище — база знаний компании (FAQ, документация, политики возврата)
Ключевой принцип: бот получает системный промпт с инструкциями и контекстом из базы знаний, а затем отвечает пользователю, опираясь на эту информацию.
Реализация на Python
Начнём с базовой реализации чат-бота с историей диалога и системным промптом:
from openai import OpenAI
client = OpenAI(
base_url="https://api.modelswitch.ru/v1",
api_key="msk_ваш_ключ"
)
SYSTEM_PROMPT = """Ты — AI-ассистент службы поддержки компании «МойМагазин».
Правила:
1. Отвечай вежливо и по существу на русском языке.
2. Если не знаешь ответа — скажи, что передашь вопрос оператору.
3. Не выдумывай информацию о товарах и ценах.
4. При жалобе извинись и предложи решение.
База знаний:
- Доставка: 1-3 рабочих дня по Москве, 5-7 дней по России.
- Возврат: 14 дней без объяснения причин.
- Гарантия: 12 месяцев на всю электронику.
- Контакт оператора: напиши «оператор» для перевода на человека."""
conversation_history = [{"role": "system", "content": SYSTEM_PROMPT}]
def chat(user_message: str) -> str:
conversation_history.append({"role": "user", "content": user_message})
response = client.chat.completions.create(
model="gpt-4o-mini", # Быстрая и дешёвая модель для чата
messages=conversation_history,
temperature=0.3,
max_tokens=500
)
assistant_message = response.choices[0].message.content
conversation_history.append({"role": "assistant", "content": assistant_message})
return assistant_message
Для production-проекта стоит использовать gpt-4o-mini — это оптимальная модель по соотношению цена/качество для чат-ботов. Для сложных случаев можно автоматически переключаться на gpt-4o или claude-3.5-sonnet.
Эскалация на живого оператора
Один из главных аспектов бота поддержки — умение определить, когда нужно передать диалог человеку. Реализуем это через function calling:
tools = [{
"type": "function",
"function": {
"name": "escalate_to_human",
"description": "Передать диалог живому оператору",
"parameters": {
"type": "object",
"properties": {
"reason": {"type": "string", "description": "Причина эскалации"},
"priority": {"type": "string", "enum": ["low", "medium", "high"]}
},
"required": ["reason", "priority"]
}
}
}]
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=conversation_history,
tools=tools,
tool_choice="auto"
)
if response.choices[0].message.tool_calls:
call = response.choices[0].message.tool_calls[0]
# Перенаправляем диалог оператору через вашу систему тикетов
create_support_ticket(call.function.arguments)
Модель сама определит, когда пользователь раздражён, задаёт вопрос не по теме базы знаний или явно просит оператора — и вызовет функцию эскалации с указанием приоритета.
Оптимизация и стоимость
При среднем диалоге в 10 сообщений расход составит около 2 000 токенов. Вот расчёт стоимости на gpt-4o-mini через ModelSwitch:
| Метрика | Значение |
|---|---|
| Средний диалог (токены) | ~2 000 |
| Стоимость 1 диалога | ~$0.001 |
| 1 000 диалогов/день | ~$1/день |
| 30 000 диалогов/месяц | ~$30/месяц |
Советы по оптимизации:
- Ограничивайте историю — храните не более 20 последних сообщений, чтобы снизить расход токенов
- Используйте кэширование — частые вопросы кэшируйте на стороне сервера
- Streaming — включайте потоковую передачу для мгновенного начала ответа пользователю
- ModelSwitch аналитика — отслеживайте расход в дашборде и настройте алерты при превышении бюджета
AI чат-бот через ModelSwitch API — это доступное решение даже для малого бизнеса. Один ключ, стандартный OpenAI SDK и возможность переключаться между моделями без изменения кода.