Как встроить LLM в свой код на Python и Node.js через API TokenMaster

· python nodejs интеграция api

Чтобы добавить языковую модель в свой сервис, бота или скрипт, не нужны отдельные SDK под каждого провайдера: TokenMaster отдаёт все модели через OpenAI-совместимый API, поэтому подходит обычный клиент openai в Python и стандартный fetch/axios в Node.js. Достаточно указать Base URL и ключ — и можно отправлять запросы к DeepSeek, GLM и Qwen одним и тем же кодом.

Что понадобится

  • Python 3.8+ с установленной библиотекой openai (устанавливается через pip install openai).
  • Node.js 18+ (в нём уже есть встроенный fetch; для axios — npm install axios).
  • API-ключ TokenMaster вида sk-… — создаётся в разделе «Ключи» после регистрации на tokenmaster.ru.
  • Активный баланс для запросов к моделям.

Перед началом стоит проверить окружение: для Python подойдёт библиотека openai ветки 1.x, а в актуальных LTS-версиях Node.js встроенный fetch доступен сразу, без установки дополнительных пакетов.

Python: клиент openai с base_url

Самый простой путь — официальная библиотека openai. Установите её:

pip install openai

Затем создайте клиент, указав base_url — это и есть адрес шлюза TokenMaster:

from openai import OpenAI

client = OpenAI(
    api_key="sk-ВАШ_КЛЮЧ",
    base_url="https://tokenmaster.ru/v1",
)

response = client.chat.completions.create(
    model="deepseek-flash",
    messages=[
        {"role": "system", "content": "Ты — полезный ассистент."},
        {"role": "user", "content": "Объясни, что такое API, в одном абзаце."},
    ],
)

print(response.choices[0].message.content)

Ответ модели лежит в response.choices[0].message.content. Поменяв только поле model (например, на deepseek-v4-pro, glm-4.5 или модель Qwen), вы переключаетесь между провайдерами без изменения остального кода.

Для чатов и ассистентов удобен потоковый вывод — текст приходит частями, как в обычном диалоге. Для этого добавьте stream=True и читайте фрагменты в цикле:

stream = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{"role": "user", "content": "Расскажи коротко о Python."}],
    stream=True,
)

for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

Node.js: fetch и axios к /v1/chat/completions

В Node.js можно обойтись вообще без зависимостей — встроенный fetch отправляет POST-запрос прямо на эндпоинт /chat/completions:

const response = await fetch("https://tokenmaster.ru/v1/chat/completions", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer sk-ВАШ_КЛЮЧ",
  },
  body: JSON.stringify({
    model: "deepseek-flash",
    messages: [
      { role: "user", content: "Привет! Представься в двух предложениях." },
    ],
  }),
});

const data = await response.json();
console.log(data.choices[0].message.content);

Ответ приходит в формате OpenAI: текст модели находится в data.choices[0].message.content, а в data.usage — информация о потраченных токенах. Если в проекте уже используется axios, код почти не отличается — меняется только способ отправки:

import axios from "axios";

const { data } = await axios.post(
  "https://tokenmaster.ru/v1/chat/completions",
  {
    model: "deepseek-flash",
    messages: [{ role: "user", content: "Привет! Представься в двух предложениях." }],
  },
  {
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer sk-ВАШ_КЛЮЧ",
    },
  }
);

console.log(data.choices[0].message.content);

В обоих вариантах в data.choices[0].message.content приходит только текст ответа. Полный ответ содержит и служебные поля: data.usage — число токенов запроса и ответа, data.model — модель, которая фактически обработала вызов. Это удобно для учёта расходов и логирования.

Подключение TokenMaster

TokenMaster — это AI-шлюз с OpenAI-совместимым API, поэтому параметры подключения одинаковы для любого языка:

  • Base URL: https://tokenmaster.ru/v1
  • API Key: ваш ключ вида sk-…

Один ключ и один баланс дают доступ сразу к нескольким семействам моделей: DeepSeek (deepseek-flash, deepseek-v4-pro), GLM / Zhipu (glm-4.5, glm-5 и другие) и Qwen. Актуальный список и цены — в «Model Square» на tokenmaster.ru/pricing, а документация по эндпоинтам — на tokenmaster.ru/docs. Оплата принимается из России, без привязки к зарубежной карте.

Проверка работы

Запустите пример — если в консоли появился осмысленный текст, интеграция работает. Типичные ошибки:

  • 401 / invalid api key — ключ скопирован не полностью или неверно; проверьте, что он начинается с sk- и передан в заголовке Authorization: Bearer ….
  • connection error — неправильный адрес; Base URL должен быть ровно https://tokenmaster.ru/v1, а для Node.js эндпоинт — https://tokenmaster.ru/v1/chat/completions.
  • insufficient quota — на балансе TokenMaster недостаточно средств; пополните его в разделе «Кошелёк».

Частые вопросы

Нужно ли ставить SDK конкретных провайдеров? Нет. Достаточно стандартного клиента openai (Python) или обычного fetch/axios (Node.js) — OpenAI-совместимый формат работает из коробки.

Как сменить модель? Просто поменяйте значение model в теле запроса: deepseek-flash, deepseek-v4-pro, glm-4.5, glm-5 или модель Qwen. Код при этом не меняется.

Подходит ли это для продакшена? Да. Для больших нагрузок добавьте обработку ошибок, повторы при таймаутах и храните ключ в переменных окружения, а не в коде.

Как включить потоковый вывод? В Python добавьте stream=True в chat.completions.create. В Node.js проще всего взять официальный SDK openai с параметром stream: true — он отдаёт текст частями через delta.content; при работе с fetch нужно читать SSE-поток из тела ответа.

Итог

Встроить LLM в свой код проще, чем кажется: в Python используется клиент openai с base_url, а в Node.js — обычный fetch или axios к /v1/chat/completions. Укажите Base URL https://tokenmaster.ru/v1, ключ sk-… и модель — и DeepSeek, GLM и Qwen станут доступны из любого приложения одним и тем же кодом.

Подключите модели через TokenMaster

Один ключ sk-… и base URL https://tokenmaster.ru/v1 — доступ к DeepSeek, GLM, Qwen и другим моделям. Зарегистрироваться →