Документация API go2llm

Чат-бот и поддержка на 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 40070%
outputответ бота50025%
cache readпопадание в тёплый кэш (редко)1005%

Формула: mixed = in × 0,70 + out × 0,25 + cache × 0,05.

Какие модели подходят и почему

Для короткого фактического ответа по базе знаний топовая модель не нужна — нужна дешёвая, быстрая и стабильно следующая инструкции. Смешанные цены по профилю 70/25/5:

Модельinoutcachemixed 70/25/5, $/1MКому
glm-5.3-flash0,0180,060,00360,02778самый дешёвый массовый ответ
deepseek-v4-flash0,02260,06790,000720,032847рабочий дефолт
mimo-v2.50,0560,1120,001120,067256очень дешёвый выход
minimax-m30,03960,1580,007920,067602альтернатива дефолту
gpt-5.6-luna0,040,240,0040,0882OpenAI-протокол, дёшево
gemini-3.5-flash-lite0,070,5830,0070,195107Google-семейство
glm-5.30,1410,4420,02610,210506сложнее сценарии
claude-haiku-4-50,130,650,0130,25415когда нужен Claude-стиль
claude-sonnet-50,3291,640,03290,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 — код бота переписывать не нужно. Подробности в документации.

Дальше

Кодинг-агент · Извлечение данных · Генерация контента · Командный доступ · Цены


Получить ключ и сделать первый запрос за 3 минуты → go2llm.tech