Доступно

Python: первый запрос к API Токенмоста

Рабочий пример Python без сторонних пакетов: ключ, Chat Completions, таймаут, Idempotency-Key, разбор ответа и ошибок.

API Токенмоста работает

Базовый адрес — https://tokenmost.ru/v1. Создайте ключ в личном кабинете, выберите модель в каталоге и отправьте первый запрос. Методы, которые ещё не доступны, отмечены отдельно.

Как это устроено

Серверное приложение Python может вызвать POST https://tokenmost.ru/v1/chat/completions стандартной библиотекой. Ключ передавайте только из окружения, а полный ID модели берите из каталога. Пример отправляет реальный тарифицируемый запрос.

Что потребуется

  • Python 3.10+ и серверная среда без доступа пользователей к секретам.
  • Аккаунт с положительным балансом и отдельным ключом с низким бюджетом и RPM.
  • Точный ID текстовой модели с тарифом и доступным Chat Completions.

Порядок работы

  1. Создайте отдельный ключ и задайте TOKENMOST_API_KEY и TOKENMOST_MODEL в окружении.
  2. Сохраните пример как first_request.py и запустите один раз на сервере.
  3. Убедитесь, что ответ содержит choices[0].message.content и usage; проверьте операцию в кабинете.
  4. При таймауте сохраните исходный Idempotency-Key и тело запроса, затем сверяйте историю перед повтором.
  5. После проверки добавьте в приложение очередь, предел параллельности и обработку 402/429/503.

Готовая конфигурация

first_request.py

import json
import os
import uuid
from urllib.error import HTTPError, URLError
from urllib.request import Request, urlopen

key = os.environ["TOKENMOST_API_KEY"]
model = os.environ["TOKENMOST_MODEL"]
body = json.dumps({
    "model": model,
    "messages": [{"role": "user", "content": "Ответь одним словом: работает"}],
    "max_tokens": 32,
}).encode("utf-8")
operation_id = str(uuid.uuid4())  # сохраните для безопасного сетевого повтора
request = Request(
    "https://tokenmost.ru/v1/chat/completions",
    data=body,
    headers={
        "Authorization": f"Bearer {key}",
        "Content-Type": "application/json",
        "Idempotency-Key": operation_id,
    },
    method="POST",
)
try:
    with urlopen(request, timeout=20) as response:
        result = json.load(response)
    print(result["choices"][0]["message"]["content"])
    print("usage:", result.get("usage"))
except HTTPError as error:
    print("HTTP:", error.code, error.read(2048).decode("utf-8", "replace"))
except URLError as error:
    print("Неопределённый сетевой исход; проверьте историю операции:", operation_id)

Пример запроса

Укажите TOKENMOST_BASE_URL=https://tokenmost.ru/v1, ключ проекта и точный ID модели из каталога. Пример отправляет запрос в публичный API и может списать средства с баланса по тарифу модели.

import json, os, uuid
from urllib.request import Request, urlopen

body = {
    "model": os.environ["TOKENMOST_MODEL"],
    "messages": [{"role": "user", "content": "Что такое API?"}],
    "max_tokens": 128,
}
request = Request(
    os.environ["TOKENMOST_BASE_URL"].rstrip("/") + "/chat/completions",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": "Bearer " + os.environ["TOKENMOST_API_KEY"],
        "Content-Type": "application/json",
        "Idempotency-Key": str(uuid.uuid4()),
    },
)
# HTTPError при неуспешном статусе нужно обработать в приложении.
with urlopen(request, timeout=60) as response:
    result = json.load(response)
    print(result["choices"][0]["message"]["content"])

Что учесть

Пример использует стандартную библиотеку Python и синхронный HTTP-запрос. Для массовой нагрузки добавьте контроль одновременных операций и безопасное журналирование без ключа или полного текста.

Ожидаемый результат

HTTP 200, текст в choices[0].message.content, usage и запись об операции в кабинете. Не считайте пустой ответ успешным бизнес-результатом.

Повторы и расходы

Один запуск примера создаёт новую платную операцию. Для сетевого повтора используйте прежние тело и Idempotency-Key; повтор с новым ключом может списать средства снова. Лимит max_tokens ограничивает вывод, но входная история тоже тарифицируется.

Секреты

Не встраивайте ключ в репозиторий, клиентский код или журналы. Для веб-приложения вызов должен идти с вашего сервера.

Ошибки и диагностика

HTTP 400

Проверьте JSON, max_tokens и поддерживаемые параметры модели.

HTTP 401

Проверьте переменную TOKENMOST_API_KEY и формат Bearer.

HTTP 402

Проверьте баланс и бюджет ключа.

HTTP 404

Проверьте полный ID модели и путь /v1/chat/completions.

HTTP 429

Уменьшите параллельность и учитывайте Retry-After.

HTTP 503 или таймаут

Сохраните Idempotency-Key, проверьте историю операции, затем повторяйте то же тело с тем же ключом.

Источники и связанные инструкции

Читайте дальше

← Все инструкции