ИИ-модели
Единый OpenAI-совместимый API к языковым моделям. Подставляете ключ в любой клиент, который умеет ходить в OpenAI, — и платите за токены рублями с баланса аккаунта. Отдельной подписки нет.
Раздел в панели — ИИ-модели.
Быстрый старт
- Панель → ИИ-модели → Создать ключ. Ключ показывается один раз: мы храним только его хеш и отдать повторно не можем.
- Подставьте адрес и ключ в свой клиент.
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.3 | Z.AI | инструменты, размышления | 1M / 131K | новый флагман Z.AI: код и длинные агентные задачи |
glm-5.2 | Z.AI | инструменты | 1M / 128K | флагман прошлого поколения: код, агенты, длинный контекст |
kimi-k3 | Moonshot | картинки, инструменты, размышления | 1M / 262K | самые сложные задачи и код, когда цена вторична |
qwen3.8-max | Qwen | картинки, инструменты, размышления | 1M / 131K | флагман Qwen: рассуждения, код, изображения |
deepseek-v4-pro | DeepSeek | инструменты, размышления | 1M / 393K | сложные задачи, где нужна сильная модель |
mimo-v2.6-pro | Xiaomi | картинки, инструменты, размышления | 1M / 131K | сильная модель по цене лёгкой |
minimax-m3 | MiniMax | инструменты, размышления | 512K / 512K | агентные задачи и код, очень длинный вывод |
qwen3-coder-next | Qwen | инструменты | 262K / 65K | код и агентные сценарии, быстрый ответ без размышлений |
glm-5v-turbo | Z.AI | картинки, инструменты, размышления | 203K / 131K | скриншоты, схемы, документы на входе |
deepseek-v4.1-flash | DeepSeek | картинки, инструменты, размышления | 1M / 393K | дешёвая быстрая модель, понимает изображения |
mimo-v2.6-flash | Xiaomi | картинки, инструменты, размышления | 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 токенов вывода — и для проверки средств, и для самой модели. Нужен
длинный ответ — задайте потолок явно, но не выше предела модели из таблицы.
Что стоит знать заранее
- Таймаута на весь ответ нет: длинные рассуждения модели доезжают целиком.
- Если ответ оборвался и счётчики токенов не пришли, запрос не тарифицируется.
- Каталог моделей расширяется; снятая с продажи модель перестаёт предлагаться, но уже сделанные запросы по ней считаются как прежде.