Чат-бот и поддержка на go2llm: дешёвые модели, высокий RPS и контроль расхода на пользователя
У чат-бота профиль нагрузки другой, чем у кодинг-агента: кэша почти нет, основная статья — вход, потому что каждая реплика тащит за собой историю диалога. go2llm считает такой сценарий по профилю 70 / 25 / 5, и в нём deepseek-v4-flash стоит $0,032847 за 1M смешанных токенов против $0,641944 у claude-sonnet-5.
Дата публикации: 11 сентября 2026, каталог цен v38. Часть обзора сценариев go2llm.
Задача
Бот в Telegram, виджет поддержки на сайте, автоответчик в CRM. Признаки нагрузки: короткие ответы (150–400 токенов), много одновременных пользователей, жёсткое требование к задержке первого токена и полное отсутствие терпимости к тому, что один болтливый пользователь съест месячный бюджет.
Почему здесь нельзя брать профиль кодинг-агента 10/5/85. У агента один пользователь держит длинную сессию, и неизменный префикс из системного промпта, описаний инструментов и содержимого файлов читается из кэша десятки раз подряд. У чат-бота всё наоборот: пользователей тысячи, сессии короткие, между обращениями одного человека проходят минуты, кэшируемый префикс маленький (системный промпт бота — это сотни токенов, не десятки тысяч). Считать бота по 10/5/85 — значит занизить счёт в разы.
Профиль, который go2llm предлагает как рабочий для чат-бота, выведен из бюджета одного запроса на 2 000 токенов:
| Статья | Что входит | Токенов на запрос | Доля |
|---|---|---|---|
| input | системный промпт + история диалога + реплика пользователя | 1 400 | 70% |
| output | ответ бота | 500 | 25% |
| cache read | попадание в тёплый кэш (редко) | 100 | 5% |
Формула: mixed = in × 0,70 + out × 0,25 + cache × 0,05.
Какие модели подходят и почему
Для короткого фактического ответа по базе знаний топовая модель не нужна — нужна дешёвая, быстрая и стабильно следующая инструкции. Смешанные цены по профилю 70/25/5:
| Модель | in | out | cache | mixed 70/25/5, $/1M | Кому |
|---|---|---|---|---|---|
glm-5.3-flash | 0,018 | 0,06 | 0,0036 | 0,02778 | самый дешёвый массовый ответ |
deepseek-v4-flash | 0,0226 | 0,0679 | 0,00072 | 0,032847 | рабочий дефолт |
mimo-v2.5 | 0,056 | 0,112 | 0,00112 | 0,067256 | очень дешёвый выход |
minimax-m3 | 0,0396 | 0,158 | 0,00792 | 0,067602 | альтернатива дефолту |
gpt-5.6-luna | 0,04 | 0,24 | 0,004 | 0,0882 | OpenAI-протокол, дёшево |
gemini-3.5-flash-lite | 0,07 | 0,583 | 0,007 | 0,195107 | Google-семейство |
glm-5.3 | 0,141 | 0,442 | 0,0261 | 0,210506 | сложнее сценарии |
claude-haiku-4-5 | 0,13 | 0,65 | 0,013 | 0,25415 | когда нужен Claude-стиль |
claude-sonnet-5 | 0,329 | 1,64 | 0,0329 | 0,641944 | эскалация сложных тикетов |
Разворот для deepseek-v4-flash: 0,0226 × 0,70 = 0,01582; 0,0679 × 0,25 = 0,016975; 0,00072 × 0,05 = 0,000036. Сумма — $0,032847.
Неочевидный вывод: minimax-m3 ($0,067602) и mimo-v2.5 ($0,067256) в профиле чат-бота стоят практически одинаково, хотя по input minimax дешевле почти на треть (0,0396 против 0,056). Виноват out — 0,158 против 0,112 при весе 25%. У чат-бота выход весит в пять раз больше, чем у кодинг-агента, и дорогой out вылезает наружу.
Рабочая связка — двухуровневый роутинг: 90% тикетов закрывает deepseek-v4-flash, 10% сложных эскалируются на claude-sonnet-5. go2llm даёт обе модели по одному ключу gk_sk_… и одному балансу, отдельного контракта на каждую не нужно.
Как подключить
OpenAI SDK, base URL https://go2llm.tech/v1 (с /v1):
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://go2llm.tech/v1",
)
response = client.chat.completions.create(
model="deepseek-v4-flash",
max_tokens=500,
messages=[
{"role": "system", "content": "Ты — поддержка сервиса. Отвечай в 2-3 предложениях."},
{"role": "user", "content": "Как сбросить пароль?"},
],
)
print(response.choices[0].message.content)
print(response.usage) # у go2llm здесь есть cost_usd
Стриминг обязателен: пользователь должен видеть первые слова сразу. TypeScript:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://go2llm.tech/v1",
apiKey: process.env.GO2LLM_API_KEY,
});
const stream = await client.chat.completions.create({
model: "deepseek-v4-flash",
stream: true,
max_tokens: 500,
messages: [{ role: "user", content: "Как сбросить пароль?" }],
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
Финальный usage-блок SSE-стрима у go2llm содержит cost_usd — пишите его в свою таблицу рядом с user_id, это и есть учёт расхода на пользователя.
Сколько это стоит
Объём: 100 000 запросов в месяц по 2 000 токенов = 200M токенов. По профилю 70/25/5 это 140M входа, 50M выхода, 10M чтения кэша.
deepseek-v4-flash:
- вход: 140 × $0,0226 = $3,164
- выход: 50 × $0,0679 = $3,395
- чтение кэша: 10 × $0,00072 = $0,0072
- итого $6,5662 ≈ 567 ₽ по курсу ЦБ 86,3793 ₽/$ на 01.09.2026
glm-5.3-flash на том же объёме: 140 × 0,018 = $2,52; 50 × 0,06 = $3,00; 10 × 0,0036 = $0,036 → $5,556 ≈ 480 ₽.
claude-sonnet-5 на том же объёме: 140 × 0,329 = $46,06; 50 × 1,64 = $82,00; 10 × 0,0329 = $0,329 → $128,389. Это почти в 20 раз дороже DeepSeek — вот цена решения «возьмём модель получше на весь поток».
Стоимость одного запроса на deepseek-v4-flash: $6,5662 ÷ 100 000 = $0,000065662. Диалог из трёх реплик — $0,00019699. Welcome-грант go2llm в $1 при регистрации — это 1 ÷ 0,00019699 ≈ 5 076 диалогов. Полноценный пилот на живых пользователях помещается в грант.
Смешанный роутинг 90/10 на том же объёме: 180M токенов на DeepSeek ($5,91) плюс 20M на Sonnet ($12,84) = $18,75. Дороже чистого DeepSeek в 2,9 раза, но в 6,8 раза дешевле, чем гнать всё на Sonnet.
Как контролировать расход
Важное ограничение, о котором надо знать до запуска. По умолчанию go2llm ставит на ключ лимит 20 RPM. Это примерно один запрос в 3 секунды — для продового бота с заметным трафиком мало, и это надо учитывать при архитектуре: очередь, backoff по Retry-After, разнесение нагрузки по нескольким ключам. Лимит считается на ключ и суммарно по всем моделям и endpoints, а не на аккаунт и не на модель, — поэтому несколько ключей действительно расширяют пропускную способность. Отдельно действует лимит параллельных запросов на аккаунт, по умолчанию 2. Механизма самостоятельного повышения лимита в кабинете нет: если нужно больше, напишите в @go2llm_support.
Остальные рычаги на ключ в кабинете go2llm: квота в долларах, список разрешённых моделей, IP allow-list, срок действия. Рецепт для бота:
- продовому боту — отдельный ключ с IP allow-list вашего сервера и allowed models =
deepseek-v4-flash,claude-sonnet-5; - квота на ключ с запасом 30% к расчёту — например $8,5 при расчёте $6,57 выше;
- staging-бот — свой ключ с квотой $1 и сроком действия;
- ключ с квотой
0не имеет отдельного лимита и упирается только в баланс аккаунта — продовому боту так не делать.
Расход на конкретного пользователя go2llm сам не режет — это делается на вашей стороне: пишете usage.cost_usd из каждого ответа в свою таблицу по user_id и отказываете, когда пользователь выбрал дневной лимит. max_tokens — второй рычаг: 500 вместо «сколько получится» ограничивает самую дорогую статью расхода.
При исчерпании баланса go2llm вернёт 402 insufficient_balance, и баланс не уйдёт ниже нуля. Бот должен уметь отдать человеческую заглушку вместо стектрейса.
Грабли
429 rate_limit в первый же час пиковой нагрузки. Те самые 20 RPM. Обрабатывайте Retry-After, не ретраите мгновенно.
402 insufficient_balance в проде. Алерт по остатку придётся строить на своей стороне: публичного endpoint'а для чтения баланса по ключу нет — по ключу gk_sk_… доступны только /v1/messages, /v1/chat/completions и /v1/images/generations, а баланс виден в кабинете по сессии. Рабочий способ — накапливать usage.cost_usd из ответов и слать себе предупреждение, когда сумма подходит к пополненному объёму.
История диалога растёт без границ. В профиле 70/25/5 вход — 70% счёта. Обрезайте историю до N последних реплик или суммаризируйте — иначе цена диалога растёт квадратично.
400 unsupported_content_type. Пользователь прислал в бот картинку или PDF, и вы переслали её в текстовый endpoint. go2llm такое не принимает на /v1/chat/completions и /v1/messages.
Ретрай оборвавшегося стрима. go2llm может переключиться на совместимый fallback-маршрут только до начала ответа. После первого валидного SSE-события переключения нет, и автоматически повторять поток нельзя — иначе пользователь увидит два разных ответа.
503 product_paused / no_eligible_route. Проверьте GET /status. Полный справочник — коды ошибок go2llm.
FAQ
Какую модель ставить дефолтом для русскоязычной поддержки? Начните с deepseek-v4-flash ($0,032847 за 1M по профилю 70/25/5) и glm-5.3-flash ($0,02778). Прогоните на них 100 реальных тикетов, сравните качество и usage.cost_usd. Тест на welcome-гранте $1 обойдётся в центы.
Можно ли выдать каждому пользователю свой ключ go2llm? Технически ключи у go2llm проектные, а не пользовательские, и IP allow-list заточен под серверы, а не под конечных клиентов. Правильный контур — один серверный ключ плюс ваш собственный учёт по user_id на основе cost_usd.
Сколько стоит перейти на go2llm с другого провайдера? Меняются base_url на https://go2llm.tech/v1 и ключ. Поля, streaming и tool calls совпадают с OpenAI Chat Completions — код бота переписывать не нужно. Подробности в документации.
Дальше
Кодинг-агент · Извлечение данных · Генерация контента · Командный доступ · Цены