Создавайте AI-функции через OpenAI-совместимый API. LLM Stack API предоставляет простой интерфейс к языковым моделям для генерации текста, обработки естественного языка и многого другого. Если ваше приложение уже работает с OpenAI Chat Completions — обычно достаточно заменить API-ключ и base_url.
Генерация текста
Создавайте ответы модели из списка сообщений с помощью Chat Completions — основной эндпоинт для диалогов, генерации кода и анализа текста.
Streaming
Получайте ответ по мере генерации через stream: true — пользователи видят текст сразу, не дожидаясь полного ответа.
OpenAI SDK
Используйте официальные SDK для Python и JavaScript — просто укажите base_url и ваш API-ключ.
Usage и модели
Проверяйте доступные модели, лимиты и текущее использование через /v1/models и /v1/usage.
Доступные эндпоинты
Все эндпоинты следуют формату OpenAI API и доступны по базовому URL https://llm-stack.ru/v1.
Эндпоинт
Метод
Описание
/v1/chat/completions
POST
Сгенерировать ответ модели на основе списка сообщений
/v1/models
GET
Получить список моделей, доступных вашему API-ключу
/v1/usage
GET
Проверить текущее использование и лимиты по API-ключу
Документация / Быстрый старт
Быстрый старт
Начните работу с LLM Stack API за три шага: получите ключ, установите SDK, отправьте первый запрос.
Шаг 1. Получите API-ключ
API-ключ выглядит как llm_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Ключ можно получить через платформу, Telegram-бота или администратора платформы.
Храните API-ключ приватно. Не публикуйте его в публичных репозиториях, frontend-коде, мобильных приложениях и скриншотах. Любой, кто получит ваш ключ, сможет делать запросы от вашего имени.
Шаг 2. Установите OpenAI SDK
LLM Stack API совместим с официальными SDK OpenAI. Установите нужный пакет:
pip install openai
npm install openai
Шаг 3. Отправьте первый запрос
Создайте клиент, указав ваш API-ключ и base_url платформы, затем вызовите Chat Completions:
from openai import OpenAI
# Инициализация клиента с вашим ключом и base_url платформы
client = OpenAI(
api_key="llm_your_key_here",
base_url="https://llm-stack.ru/v1",
)
# Отправка запроса к модели
response = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{"role": "user", "content": "Привет! Объясни, что такое API простыми словами."}
],
)
# Вывод ответа модели
print(response.choices[0].message.content)
import OpenAI from "openai";
// Инициализация клиента с вашим ключом и base_url платформы
const client = new OpenAI({
apiKey: "llm_your_key_here",
baseURL: "https://llm-stack.ru/v1",
});
// Отправка запроса к модели
const response = await client.chat.completions.create({
model: "kimi-k2.6",
messages: [
{ role: "user", content: "Привет! Объясни, что такое API простыми словами." },
],
});
// Вывод ответа модели
console.log(response.choices[0].message.content);
Если вы уже используете OpenAI API в своём проекте, просто замените api_key на ключ LLM Stack и добавьте base_url="https://llm-stack.ru/v1" — остальной код останется без изменений.
Документация / Авторизация
Авторизация
Все запросы к LLM Stack API требуют авторизации. Передавайте API-ключ в заголовке Authorization с префиксом Bearer:
httpзаголовок авторизации
Authorization: Bearer llm_your_key_here
При использовании OpenAI SDK ключ передаётся автоматически — укажите его как api_key в Python или apiKey в JavaScript при инициализации клиента.
Если ключ отсутствует, неверен, отключён или не имеет доступа к выбранной модели — API вернёт ошибку 401 или 403.
Документация / Chat Completions
Chat Completions
Chat Completions — основной эндпоинт для генерации текста. Вы отправляете список сообщений (историю диалога), а модель возвращает свой ответ. Поддерживаются системные инструкции, многоходовые диалоги и управление параметрами генерации.
httpэндпоинт
POST https://llm-stack.ru/v1/chat/completions
Структура запроса
Запрос содержит модель, список сообщений и опциональные параметры генерации. Ниже — пример типичного запроса с системным промптом и сообщением пользователя:
Поле choices[0].message.content содержит текст ответа. finish_reason показывает, почему модель остановилась: stop — естественный конец, length — достигнут лимит max_tokens.
Документация / Streaming
Streaming
Streaming позволяет показывать ответ по мере генерации, не дожидаясь полного завершения. Это особенно полезно для чат-интерфейсов — пользователь видит текст сразу, что значительно улучшает восприятие скорости.
Включается параметром stream: true в запросе. Ответ приходит частями через Server-Sent Events (SSE).
from openai import OpenAI
client = OpenAI(
api_key="llm_your_key_here",
base_url="https://llm-stack.ru/v1",
)
# Включаем streaming через stream=True
stream = client.chat.completions.create(
model="kimi-k2.6",
messages=[
{"role": "user", "content": "Напиши короткий рассказ про космос."}
],
stream=True,
)
# Читаем чанки по мере поступления
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "llm_your_key_here",
baseURL: "https://llm-stack.ru/v1",
});
// Включаем streaming через stream: true
const stream = await client.chat.completions.create({
model: "kimi-k2.6",
messages: [
{ role: "user", content: "Напиши короткий рассказ про космос." },
],
stream: true,
});
// Читаем чанки по мере поступления
for await (const chunk of stream) {
const delta = chunk.choices?.[0]?.delta?.content;
if (delta) process.stdout.write(delta);
}
Каждый чанк содержит поле delta.content с фрагментом текста. Последний чанк имеет finish_reason: "stop" — это сигнал, что генерация завершена.
Документация / Models API
API моделей
Используйте Models API, чтобы узнать, какие модели доступны вашему API-ключу. Разные ключи могут иметь доступ к разным наборам моделей — этот эндпоинт возвращает только те, которые разрешены для вашего ключа.
httpэндпоинт
GET https://llm-stack.ru/v1/models
from openai import OpenAI
client = OpenAI(
api_key="llm_your_key_here",
base_url="https://llm-stack.ru/v1",
)
# Получаем список моделей, доступных этому ключу
models = client.models.list()
for model in models.data:
print(model.id)
Ответ содержит только модели, доступные вашему API-ключу. Если вы попытаетесь использовать модель, которой нет в этом списке, API вернёт ошибку 403.
Документация / Usage API
API использования
Используйте Usage API, чтобы проверить текущее использование и лимиты по вашему API-ключу. Это полезно для отображения квоты в интерфейсе вашего приложения и для предотвращения превышения лимитов.
Поле models показывает, к каким моделям у ключа есть доступ. Сравните requests с limit, чтобы понять, сколько запросов осталось.
Документация / Лимиты
Лимиты
У API-ключа могут быть лимиты запросов. Они зависят от настроек ключа или тарифа. Превышение любого лимита приводит к ошибке 429 Too Many Requests.
Тип лимита
Значение
Описание
На IP
50 requests / minute
Защита от DDoS — ограничение по IP-адресу клиента
На токены
Зависит от ключа
Биллинг по токенам — лимит задаётся при создании ключа
Дневной лимит ключа
Зависит от ключа
Максимальное количество запросов в сутки
Часовой лимит ключа
Зависит от ключа
Максимальное количество запросов в час
При получении 429 реализуйте экспоненциальную задержку (exponential backoff): подождите 1 секунду, затем 2, 4, 8 — пока запрос не пройдёт.
Документация / Ошибки
Ошибки
Ошибки возвращаются в JSON-формате с полем detail, содержащим описание на русском языке. Ниже перечислены основные HTTP-коды и их значения.
Код
Значение
Рекомендуемое действие
401
API-ключ отсутствует или неверный
Проверьте ключ и заголовок Authorization
403
Ключ отключён или модель недоступна
Убедитесь, что ключ активен и модель доступна через /v1/models
429
Превышен лимит запросов
Повторите запрос с задержкой (exponential backoff)
502
Ошибка соединения с провайдером
Временная ошибка — повторите запрос
500
Внутренняя ошибка сервера
Ошибка на нашей стороне — повторите позже
Примеры ошибок
401Неверный API-ключ
{
"detail": "Неверный API ключ"
}
403Модель недоступна для ключа
{
"detail": "Model not available"
}
429Превышен лимит запросов
{
"detail": "Слишком много запросов. Попробуйте позже."
}
Документация / OpenAI SDK
Совместимость с OpenAI SDK
LLM Stack API совместим с OpenAI SDK для Chat Completions. Это значит, что вы можете использовать привычные вызовы SDK, просто указав другой base_url:
textподдерживаемые вызовы
client.chat.completions.create(...) # генерация текста
client.chat.completions.create(..., stream=True) # streaming
client.models.list() # список моделей
Пока не поддерживается
Следующие функции OpenAI API сейчас недоступны в публичном API:
Функция
Описание
Responses API
client.responses.create(...)
Assistants API
Управляемые ассистенты
Realtime API
Реалтайм голос/текст
Files API
Загрузка файлов
Vector stores / file search
Поиск по файлам
Embeddings API
Векторные представления
Images API
Генерация изображений
Audio transcription
Транскрипция аудио
Batch API
Пакетные запросы
Fine-tuning
Дообучение моделей
Built-in tools
Встроенные инструменты
Web search
Веб-поиск
Function calling
Вызов функций на стороне сервера
Если отправить неподдерживаемые поля, API может отклонить запрос.
Документация / Рекомендации
Рекомендации
Следуйте этим практикам для надёжной и безопасной интеграции:
Рекомендация
Описание
Храните ключи безопасно
Используйте environment variables или secret manager. Никогда не хардкодьте ключи в исходном коде
Не раскрывайте ключи в браузере
Вызывайте API со своего backend, а не напрямую из frontend-кода
Используйте streaming для чатов
Пользователь увидит первый текст за доли секунды — интерфейс будет ощущаться значительно быстрее
Обрабатывайте 429
При превышении лимита повторяйте запрос с экспоненциальной задержкой, а не сразу
Используйте /v1/models
Проверяйте доступные модели перед выбором — набор может отличаться для разных ключей
Используйте /v1/usage
Показывайте пользователям их текущую квоту, чтобы они не столкнулись с неожиданным лимитом
Документация / Полные примеры
Полные примеры
Ниже — готовые к запуску примеры чат-приложений, демонстрирующие основные возможности API: инициализацию клиента, системный промпт, многоходовый диалог с сохранением контекста и обработку ответа.
Консольный чат-бот
Готовый к запуску пример интерактивного чата. История сообщений сохраняется между ходами, чтобы модель помнила контекст диалога:
from openai import OpenAI
# Инициализация клиента
client = OpenAI(
api_key="llm_your_key_here",
base_url="https://llm-stack.ru/v1",
)
# Системный промпт задаёт поведение ассистента
messages = [
{"role": "system", "content": "Ты полезный ассистент. Отвечай кратко и понятно."}
]
while True:
user_input = input("You: ")
if user_input.lower() in {"exit", "quit"}:
break
# Добавляем сообщение пользователя в историю
messages.append({"role": "user", "content": user_input})
# Отправляем всю историю диалога в API
response = client.chat.completions.create(
model="kimi-k2.6",
messages=messages,
temperature=0.7,
)
answer = response.choices[0].message.content
# Сохраняем ответ ассистента для контекста следующих ходов
messages.append({"role": "assistant", "content": answer})
print("AI:", answer)
import OpenAI from "openai";
import readline from "node:readline/promises";
import { stdin as input, stdout as output } from "node:process";
// Инициализация клиента
const client = new OpenAI({
apiKey: "llm_your_key_here",
baseURL: "https://llm-stack.ru/v1",
});
const rl = readline.createInterface({ input, output });
// Системный промпт задаёт поведение ассистента
const messages = [
{ role: "system", content: "Ты полезный ассистент. Отвечай кратко и понятно." },
];
while (true) {
const userInput = await rl.question("You: ");
if (["exit", "quit"].includes(userInput.toLowerCase())) {
break;
}
// Добавляем сообщение пользователя в историю
messages.push({ role: "user", content: userInput });
// Отправляем всю историю диалога в API
const response = await client.chat.completions.create({
model: "kimi-k2.6",
messages,
temperature: 0.7,
});
const answer = response.choices[0].message.content;
// Сохраняем ответ ассистента для контекста следующих ходов
messages.push({ role: "assistant", content: answer });
console.log("AI:", answer);
}
rl.close();
Документация / OpenCode
Подключение OpenCode
OpenCode — AI-агент для разработки. Подключите LLM Stack как провайдера одной командой — скрипт автоматически запросит список доступных моделей по вашему ключу и сгенерирует полный конфиг с reasoning_effort.
Скрипт запрашивает GET /v1/models по вашему ключу и генерирует opencode.json со всеми доступными вам моделями, включая варианты reasoning_effort (low / medium / high / xhigh / max). Ничего не нужно прописывать вручную.
После ручной настройки модели не будут перечислены в конфиге — OpenCode будет использовать ту, которую вы укажете через /model llmstack/<model-id>. Для автоматического списка используйте установочный скрипт выше.
Выбор модели
Запустите opencode и переключайте модель через /model. Модели, полученные через установочный скрипт, отображаются с префиксом llmstack/.
bashкоманды в OpenCode
/model # показать список моделей
/model llmstack/gpt-5.6-sol # выбрать конкретную модель
Переменные окружения (без файла конфига)
Альтернативный способ — задать ключ и base URL через переменные окружения. Модели не будут автоматически перечислены — укажите нужную через /model.