FAQ-бот на GigaChat за 2 часа: пошаговый гайд с кодом
В этой статье - готовый рецепт. Открываете её, заводите Сбер ID, копируете код, разворачиваете на VPS, через 2 часа в вашем Telegram-боте отвечает FAQ-агент на базе GigaChat. На реальной FAQ-базе вашей компании. Без агентств, без подрядчиков, без месяцев интеграции.
Это не "продакшен на тысячу пользователей". Это рабочий минимум, который снимает с менеджеров 50-70% типовых вопросов клиентов. Когда он окупится, можно нанимать команду на масштабирование. До этого - не тратьте деньги.
Что получится в конце:
- Telegram-бот, который отвечает на типовые вопросы клиентов
- Знаниевая база из ваших регламентов / условий / FAQ
- Эскалация менеджеру когда AI не уверен
- Стоимость работы: 1000-3000 ₽/мес инфраструктура + токены GigaChat
Что нужно перед стартом
- Любой VPS на Ubuntu (от 600 ₽/мес у Beget, Selectel, Timeweb)
- Python 3.10+
- Telegram-аккаунт для создания бота через @BotFather
- Юрлицо или ИП для подключения GigaChat (на физ-лицо тоже можно, но ограничения)
- 1-2 файла с вашими FAQ (текстовые или Markdown - в любом виде)
Время: 2-3 часа от нуля. Если опыта Python нет вообще - 4-6 часов с гуглением.
Шаг 1: Регистрация в GigaChat (30 минут)
- Откройте https://developers.sber.ru/portal/products/gigachat-api
- Войдите через Сбер ID (или зарегистрируйтесь)
- Подтвердите ИП / ООО (паспорт + ИНН + бумаги)
- После подтверждения подключите тариф - на старте достаточно бесплатного "Freemium" (1 млн токенов/мес)
- Перейдите в кабинет → API доступ → создайте credentials (Client ID + Authorization Key)
- Скачайте Authorization Key как Base64 (он понадобится для запросов)
Тонкость. Между подачей документов и активацией - 1-3 рабочих дня. Заявку подайте сегодня, остальные шаги можете делать параллельно.
Шаг 2: Telegram-бот через @BotFather (5 минут)
- Откройте Telegram, напишите боту @BotFather:
/newbot - Имя бота: например, "FAQ Noltis Bot"
- Username: например,
noltis_faq_bot(должен заканчиваться на_bot) - Получите токен вида
7901931833:AAEQAAF3Qz_Xgf8invNBHoG9LSVQUqjQ0cU- запишите - Опционально:
/setdescription- описание бота,/setuserpic- аватарка
Бот пока ничего не делает, нужен Python-код ниже.
Шаг 3: VPS и развёртывание
Возьмите VPS 2 ГБ RAM / 1 vCPU. Установите Ubuntu 22.04. По SSH:
apt update && apt upgrade -y
apt install -y python3-pip python3-venv git
mkdir -p /opt/faq-bot && cd /opt/faq-bot
python3 -m venv .venv
source .venv/bin/activate
pip install aiogram requests python-dotenv tenacity
Шаг 4: Загрузка вашей FAQ-базы
Создайте файл /opt/faq-bot/faq.md с вашими реальными вопросами и ответами. Пример формата:
## Где находится ваш офис?
Москва, ул. Тверская 1, офис 200. Работаем пн-пт с 10:00 до 19:00.
## Сколько стоит разработка чат-бота?
От 80 000 рублей под ключ. Зависит от сложности сценариев и интеграций.
Точную цену считаем после брифа, обычно в течение 24 часов.
## Делаете ли вы голосовых ИИ-агентов?
Да, делаем. Цены от 150 000 рублей, срок 3-5 недель.
Подробнее: https://noltis.ru/product/voice-ai/
## Работаете с физлицами?
Преимущественно с ИП и ООО. С физлицами - только разовые проекты от 30 000 ₽.
20-50 вопросов с ответами на старте - достаточно. Расширите по мере появления нестандартных вопросов от клиентов.
Шаг 5: Код бота
Создайте /opt/faq-bot/.env:
TG_TOKEN=ваш_токен_телеграм_бота
GIGACHAT_AUTH_KEY=ваш_Authorization_Key_в_Base64
GIGACHAT_SCOPE=GIGACHAT_API_PERS
ESCALATION_CHAT_ID=ваш_телеграм_chat_id_для_эскалации
ESCALATION_CHAT_ID найдёте, написав @userinfobot в Telegram - он покажет ваш ID.
Создайте /opt/faq-bot/bot.py:
import asyncio, os, uuid, requests, time
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from dotenv import load_dotenv
from tenacity import retry, stop_after_attempt, wait_exponential
load_dotenv()
TG_TOKEN = os.getenv("TG_TOKEN")
GIGACHAT_AUTH_KEY = os.getenv("GIGACHAT_AUTH_KEY")
GIGACHAT_SCOPE = os.getenv("GIGACHAT_SCOPE", "GIGACHAT_API_PERS")
ESCALATION_CHAT_ID = int(os.getenv("ESCALATION_CHAT_ID", "0"))
with open("/opt/faq-bot/faq.md", encoding="utf-8") as f:
FAQ_BASE = f.read()
_token_cache = {"token": None, "exp": 0}
@retry(stop=stop_after_attempt(3), wait=wait_exponential(min=1, max=8))
def get_access_token():
if _token_cache["token"] and _token_cache["exp"] > time.time() + 60:
return _token_cache["token"]
rid = str(uuid.uuid4())
resp = requests.post(
"https://ngw.devices.sberbank.ru:9443/api/v2/oauth",
headers={
"RqUID": rid,
"Authorization": f"Basic {GIGACHAT_AUTH_KEY}",
"Content-Type": "application/x-www-form-urlencoded",
},
data={"scope": GIGACHAT_SCOPE},
verify=False, timeout=10,
)
resp.raise_for_status()
data = resp.json()
_token_cache["token"] = data["access_token"]
_token_cache["exp"] = data["expires_at"] / 1000
return _token_cache["token"]
@retry(stop=stop_after_attempt(3), wait=wait_exponential(min=1, max=8))
def ask_gigachat(question: str) -> dict:
token = get_access_token()
prompt = f"""Ты ассистент компании. Отвечай на вопросы клиентов на основе FAQ-базы ниже.
ПРАВИЛА:
- Если вопрос есть в базе - отвечай по ней, своими словами, естественно
- Если ответа нет в базе - отвечай "{{не знаю}}" (ровно так в фигурных скобках)
- Не выдумывай факты, цены, сроки
- Отвечай 1-3 предложения, дружелюбно но по делу
- Без шаблонов "уважаемый клиент"
FAQ-БАЗА:
{FAQ_BASE}
ВОПРОС: {question}
ОТВЕТ:"""
resp = requests.post(
"https://gigachat.devices.sberbank.ru/api/v1/chat/completions",
headers={"Authorization": f"Bearer {token}", "Content-Type": "application/json"},
json={
"model": "GigaChat",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.3,
"max_tokens": 250,
},
verify=False, timeout=20,
)
resp.raise_for_status()
text = resp.json()["choices"][0]["message"]["content"].strip()
return {"text": text, "uncertain": "{не знаю}" in text}
bot = Bot(token=TG_TOKEN)
dp = Dispatcher()
@dp.message(Command("start"))
async def cmd_start(m: types.Message):
await m.answer("Здравствуйте! Я ассистент. Задайте вопрос - постараюсь ответить.")
@dp.message()
async def handle(m: types.Message):
if not m.text:
return
try:
result = ask_gigachat(m.text)
if result["uncertain"]:
await m.answer(
"Я не уверен в ответе. Передаю вопрос менеджеру - ответит в течение часа в рабочее время."
)
if ESCALATION_CHAT_ID:
await bot.send_message(
ESCALATION_CHAT_ID,
f"Эскалация:\nКлиент @{m.from_user.username or m.from_user.id}\nВопрос: {m.text}"
)
else:
await m.answer(result["text"])
except Exception as e:
await m.answer("Технический сбой, попробуйте через минуту.")
if ESCALATION_CHAT_ID:
await bot.send_message(ESCALATION_CHAT_ID, f"ОШИБКА: {e}\nВопрос: {m.text}")
async def main():
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
Шаг 6: Запуск в фоне через systemd
Создайте /etc/systemd/system/faq-bot.service:
[Unit]
Description=FAQ Bot on GigaChat
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/faq-bot
ExecStart=/opt/faq-bot/.venv/bin/python /opt/faq-bot/bot.py
Restart=on-failure
RestartSec=5
User=root
[Install]
WantedBy=multi-user.target
Запустите:
systemctl daemon-reload
systemctl enable faq-bot
systemctl start faq-bot
systemctl status faq-bot
Если в status строка active (running) - бот работает. Пишите ему в Telegram, должен отвечать.
Шаг 7: Проверка и доводка
- Откройте Telegram, найдите своего бота, нажмите /start
- Задайте 5-10 вопросов из вашей FAQ-базы - должен отвечать правильно
- Задайте 5-10 нестандартных вопросов - должен отвечать "не знаю" и эскалировать
- Проверьте что эскалация прилетает вам в ESCALATION_CHAT_ID
Если AI отвечает шаблонно или выдумывает факты - попросите чуть жёстче в промпте ("не выдумывай", "только из базы").
Что улучшить когда окупится (продолжения)
Этот гайд - минимальный жизнеспособный продукт. После того как бот покажет ROI (обычно 1-2 месяца), его стоит улучшить:
- RAG вместо передачи всей базы в каждом запросе. Если ваша FAQ-база разрастётся до 100+ записей, передавать её целиком в каждый запрос дорого. Лучше векторизовать и подмешивать только релевантные. Глубже разбирал в Памяти ИИ-агентов.
- Память диалога. Сейчас каждый вопрос - новый. Если клиент уточняет ("а как это по объёму?"), бот не помнит контекст. Добавляется через сохранение истории в Redis или БД.
- Подключение к CRM. Эскалированные вопросы летят в Bitrix24/amoCRM как лиды, а не просто в Telegram руководителю.
- Аналитика. Какие вопросы задают чаще, какие AI не закрывает - повод обновить FAQ или продукт.
- Расширение каналов. Тот же логика-бот в WhatsApp, MAX, на сайте в виде чат-виджета.
Близкие материалы: Что у ИИ-агента под капотом - архитектура целиком, Промпт-инжиниринг для бизнеса - шаблоны промптов под разные задачи, Год на GigaChat - опыт длительной эксплуатации, YandexGPT vs GigaChat - выбор LLM.
Если самим лень и нужно под ключ
Если этот сетап страшен (а у вас нет инженера в команде), под ключ:
- FAQ-бот на GigaChat + Telegram + базовая эскалация: 80 000 - 130 000 ₽
- + RAG, память диалога, аналитика: 150 000 - 250 000 ₽
- + интеграция с CRM, WhatsApp, чат на сайте: 250 000 - 450 000 ₽
- Поддержка: 8 000 - 20 000 ₽/мес
Опишите ваши задачи и FAQ в брифе - подберу под вас оптимальный стек. Часто оказывается, что хватает базового бота за 100 тыс. ₽, и через 2-3 месяца станет очевидно, нужны ли расширения.
Есть процесс, который пора отдать машине?
Опишите задачу в брифе - верну оценку с ценой и сроками за 24 часа. Бесплатно, до подписания.
Оставить заявку