Перейти к основному содержимому

ИИ-модели

Единый OpenAI-совместимый API к языковым моделям. Подставляете ключ в любой клиент, который умеет ходить в OpenAI, — и платите за токены рублями с баланса аккаунта. Отдельной подписки нет.

Раздел в панели — ИИ-модели.

Быстрый старт​

  1. Панель → ИИ-модели → Создать ключ. Ключ показывается один раз: мы храним только его хеш и отдать повторно не можем.
  2. Подставьте адрес и ключ в свой клиент.
curl https://ai.tatnet.cloud/v1/chat/completions \
-H "Authorization: Bearer $TATNET_AI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-5.2",
"messages": [{"role": "user", "content": "Привет"}]
}'

С официальным SDK меняется только base URL:

from openai import OpenAI

client = OpenAI(
base_url="https://ai.tatnet.cloud/v1",
api_key="tnai_live_…",
)
answer = client.chat.completions.create(
model="glm-5.2",
messages=[{"role": "user", "content": "Привет"}],
)

Потоковый режим ("stream": true) работает как у OpenAI, включая stream_options.include_usage.

Claude Code и Anthropic SDK​

Тот же ключ работает и в формате Anthropic Messages API — POST /v1/messages. Поэтому наши модели можно подключить к Claude Code и к любому клиенту на Anthropic SDK.

Claude Code настраивается переменными окружения:

export ANTHROPIC_BASE_URL=https://ai.tatnet.cloud
export ANTHROPIC_AUTH_TOKEN=tnai_live_…
export ANTHROPIC_MODEL=glm-5.2
# Claude Code ходит и в «быструю» модель — укажите нашу, иначе он спросит haiku:
export ANTHROPIC_DEFAULT_HAIKU_MODEL=glm-5.2
claude

Проверено на glm-5.2, kimi-k3 и deepseek-v4-pro: чтение и правка файлов, вызов инструментов, размышления.

В Python:

import anthropic

client = anthropic.Anthropic(base_url="https://ai.tatnet.cloud", api_key="tnai_live_…")
message = client.messages.create(
model="kimi-k3",
max_tokens=2000,
messages=[{"role": "user", "content": "Привет"}],
)

Ключ принимается в заголовке x-api-key или Authorization: Bearer. Цена и списание те же, что у OpenAI-формата.

Чем этот вход отличается от API Anthropic:

  • Размышления. thinking переводится в уровень размышлений модели: бюджет до 4096 токенов — низкий, до 16 384 — средний, больше — высокий; {"type": "disabled"} размышления выключает. Размышления приходят обычными блоками thinking, но без подписи.
  • Серверных инструментов Anthropic нет (веб-поиск, исполнение кода и т. п.). Такие инструменты из запроса убираются, модель их не видит. mcp_servers и container отклоняются.
  • Документы (PDF) не принимаются, как и в OpenAI-формате. Текст и картинки — да, в том числе картинки в результатах инструментов.
  • Кеш промпта включается сам, если модель его поддерживает. Метки cache_control не нужны и ни на что не влияют. Прочитанное из кеша приходит в usage.cache_read_input_tokens и стоит по ставке чтения кеша.
  • /v1/messages/count_tokens возвращает оценку (заголовок X-Tatnet-Token-Count: estimate), а не точный подсчёт токенизатором модели.
  • Ошибки приходят в форме Anthropic: {"type": "error", "error": {...}}. Коды те же, что в таблице ниже; у 402 тип billing_error.

Codex CLI и Responses API​

Есть и вход в формате OpenAI Responses API: POST /v1/responses. Через него работает Codex CLI. Настройка — в ~/.codex/config.toml:

model = "glm-5.2"
model_provider = "tatnet"

[model_providers.tatnet]
name = "TatNet"
base_url = "https://ai.tatnet.cloud/v1"
env_key = "TATNET_AI_KEY"
wire_api = "responses"
export TATNET_AI_KEY=tnai_live_…
codex

Проверено на glm-5.2, kimi-k3 и deepseek-v4-pro: чтение и правка файлов, вызов инструментов. Codex предупредит, что не знает метаданных модели, — на работу это не влияет.

Особенности этого входа:

  • Ответы не хранятся. previous_response_id не поддерживается: передавайте историю целиком (store: false). Codex так и делает.
  • Потолок вывода по умолчанию — 32 000 токенов, если max_output_tokens не задан. Codex этот параметр не передаёт, поэтому для проверки средств считается именно этот потолок. Выше предела модели из таблицы ответ всё равно не будет.
  • Размышления приходят элементом reasoning: текст — в summary. Верните элемент в следующем запросе, и модель продолжит с учётом своих размышлений.
  • Встроенные инструменты OpenAI (веб-поиск, поиск по файлам и т. п.) из запроса убираются. Свои функции и инструменты со свободным вводом (type: custom) работают.
  • Ошибки приходят в обычной форме OpenAI, как у /v1/chat/completions.

Модели​

Модель (model)ПроизводительУмеетОкно / вывод доКогда брать
glm-5.3Z.AIинструменты, размышления1M / 131Kновый флагман Z.AI: код и длинные агентные задачи
glm-5.2Z.AIинструменты1M / 128Kфлагман прошлого поколения: код, агенты, длинный контекст
kimi-k3Moonshotкартинки, инструменты, размышления1M / 262Kсамые сложные задачи и код, когда цена вторична
qwen3.8-maxQwenкартинки, инструменты, размышления1M / 131Kфлагман Qwen: рассуждения, код, изображения
deepseek-v4-proDeepSeekинструменты, размышления1M / 393Kсложные задачи, где нужна сильная модель
mimo-v2.6-proXiaomiкартинки, инструменты, размышления1M / 131Kсильная модель по цене лёгкой
minimax-m3MiniMaxинструменты, размышления512K / 512Kагентные задачи и код, очень длинный вывод
qwen3-coder-nextQwenинструменты262K / 65Kкод и агентные сценарии, быстрый ответ без размышлений
glm-5v-turboZ.AIкартинки, инструменты, размышления203K / 131Kскриншоты, схемы, документы на входе
deepseek-v4.1-flashDeepSeekкартинки, инструменты, размышления1M / 393Kдешёвая быстрая модель, понимает изображения
mimo-v2.6-flashXiaomiкартинки, инструменты, размышления1M / 131Kсамая дешёвая модель каталога

Цены — в рублях за миллион токенов входа, чтения кеша и вывода — смотрите в панели: ИИ-модели → каталог. GET /v1/models цен не отдаёт.

В запросе пишите значение из первой колонки. Тот же список с умениями и пределами отдаёт API:

curl https://ai.tatnet.cloud/v1/models
{"id": "glm-5v-turbo", "object": "model", "owned_by": "tatnet", "context_window": 202752,
"max_output_tokens": 131072,
"capabilities": {"tools": true, "vision": true, "reasoning": true}}

Модель можно сменить в любой момент, поменяв одно поле model: адрес, ключ и формат запроса у всех одинаковые.

Картинки на входе​

Картинки понимают модели с отметкой «картинки»: glm-5v-turbo, kimi-k3, qwen3.8-max, mimo-v2.6-pro, mimo-v2.6-flash, deepseek-v4.1-flash. Передаются как у OpenAI — частью content с типом image_url (ссылкой или data:-URI):

{"model": "glm-5v-turbo", "messages": [{"role": "user", "content": [
{"type": "text", "text": "Что на скриншоте?"},
{"type": "image_url", "image_url": {"url": "https://example.com/screen.png"}}
]}]}

Картинка тарифицируется как входные токены. Их число зависит от размера и модели: у glm-5v-turbo около тысячи токенов у 1024×768 и около шести тысяч у 4K.

:::note Файлы и аудио пока не принимаются В content поддерживаются части text и image_url. Запрос с файлом (type: "file", например PDF) или аудио (input_audio) получает 400 unsupported_content сразу, без обращения к модели и без списания. Текст из PDF передавайте текстом, страницы — картинками. :::

Размышления​

У моделей с отметкой «размышления» часть вывода — рассуждение перед ответом. Эти токены тарифицируются по ставке вывода и расходуются из того же max_tokens, что и ответ: если потолок мал, модель может истратить его на рассуждение и не успеть ответить (finish_reason: "length"). Для сложных задач задавайте max_tokens с запасом.

Размышлениями управляет стандартный параметр reasoning_effort:

МодельКак отвечает на reasoning_effort
deepseek-v4-pro"none" выключает размышления; остальные значения их включают, но на объём почти не влияют
glm-5v-turbo"none" выключает; "minimal" … "high" заметно меняют объём
kimi-k3"none" выключает; "low" и "high" заметно меняют объём (в замере — втрое)
mimo-v2.6-pro, mimo-v2.6-flash, minimax-m3, deepseek-v4.1-flash"none" выключает; "low" … "high" меняют объём слабо
glm-5.3, qwen3.8-maxвыключить нельзя: "none" даёт ошибку 400; "low" — самый короткий режим
glm-5.2, qwen3-coder-nextразмышлений нет, параметр ничего не меняет

Выключенные размышления дешевле, но на задачах с расчётом заметно чаще ошибаются: в нашем замере на простой задаче про время в пути все четыре модели, ответившие с "none", дали неверный ответ, а с размышлениями — верный.

{"model": "deepseek-v4.1-flash", "reasoning_effort": "none",
"messages": [{"role": "user", "content": "Переведи на английский: привет"}]}

:::warning Размышления у DeepSeek включены по умолчанию На непростом вопросе они способны занять весь потолок вывода — а без max_tokens он равен 4096. Для коротких ответов передавайте "reasoning_effort": "none": так дешевле и быстрее. Для трудных задач оставьте размышления, но поднимите max_tokens. :::

Сколько это стоит​

Цена — за миллион токенов, отдельно за вход, за выход и за чтение кеша. Актуальные ставки всегда в панели, в разделе ИИ-модели → Каталог: там показана та цена, которая спишется, без пересчётов.

Списание идёт реальными рублями с баланса, как за домены. Бонусные кредиты на инференс не расходуются и доступ к нему не открывают: чтобы начать, нужно пополнить баланс настоящими деньгами хотя бы один раз.

Расход виден в разделе ИИ-модели → Расход: за текущий месяц, по моделям и по проектам.

Ключи​

  • Ключ работает от имени аккаунта и начинается с tnai_live_.
  • Ключу можно задать предел расхода за месяц. Утёкший ключ упрётся в потолок раньше, чем в баланс аккаунта, и скажет об этом причиной.
  • Ключу можно сузить набор моделей.
  • Отозванный ключ перестаёт работать сразу; история расхода по нему остаётся.

Ключ даёт доступ к платному API — не кладите его в репозиторий и в код, который уезжает в браузер.

Ответы об отказе​

Отказ приходит в обычной для OpenAI форме — {"error": {...}} — и всегда с причиной. Коды различают смысл:

КодЧто это значит
401ключ не найден, отозван или выключен
402не хватает средств, не было реального пополнения, либо ключ упёрся в свой предел
403этому ключу модель не разрешена
404такой модели нет в каталоге
503мы не смогли проверить доступ или тариф — это не отказ по деньгам, повторите запрос

Проверка средств идёт до обращения к модели и по худшему случаю запроса (вход плюс max_tokens вывода). Поэтому запрос, на который не хватает, отклоняется сразу и не тарифицируется.

Если max_tokens (или max_completion_tokens) не задан, действует потолок 4096 токенов вывода — и для проверки средств, и для самой модели. Нужен длинный ответ — задайте потолок явно, но не выше предела модели из таблицы.

Что стоит знать заранее​

  • Таймаута на весь ответ нет: длинные рассуждения модели доезжают целиком.
  • Если ответ оборвался и счётчики токенов не пришли, запрос не тарифицируется.
  • Каталог моделей расширяется; снятая с продажи модель перестаёт предлагаться, но уже сделанные запросы по ней считаются как прежде.