RU ▾

Начните с пробного баланса

E-mail и пароль — ключ сразу на экране.

https://api.uncensoredllmhub.com/v1

Uncensored LLM Hub: один эндпоинт для чатов и агентов

Uncensored LLM Hub — это размещённый текстовый API, совместимый с OpenAI, с одной моделью и одним базовым URL. На этой странице показано, практическую настройку чат-приложения и агента поверх него.

Обновлено

Центральный светящийся хаб, соединённый световыми потоками с окном чата, агентом и документами

Ключевые моменты

  • Один базовый URL и один ID модели, uncensored, работают с любым SDK или клиентом OpenAI.
  • Поддерживаются потоковая передача, вызов функций и JSON-режим с контекстным окном на 100 000 токенов.
  • Полный ключ позволяет 8 параллельных запросов и 300 в минуту, поэтому спланируйте небольшую очередь для загруженных приложений.
  • Биллинг составляет $0,15 за 1 млн входных токенов и $0,50 за 1 млн выходных токенов из предоплаченного баланса, промпты не используются для обучения.

Что вы получаете от одного эндпоинта

Uncensored LLM Hub ищут, когда нужна модель, которая отвечает без отказов в выдаче контента для законного использования взрослыми, но не хочется запускать GPU. Сервис — это обычный HTTPS API. Вы указываете клиент OpenAI на https://api.uncensoredllmhub.com/v1, отправляете идентификатор модели uncensored и аутентифицируетесь с помощью Authorization: Bearer YOUR_KEY. Существуют два метода: POST /v1/chat/completions для диалогов и GET /v1/models для списка моделей.

Важно понимать, что стоит за этим эндпоинтом. Это одна модель с открытыми весами, запущенная независимым провайдером и настроенная на обход фильтров. Это не официальный API крупного вендора и не роутер, выбирающий между моделями. Она обрабатывает только текст: без изображений, аудио, видео, эмбеддингов или дообучения. Одно строгое правило применяется без исключений: нет сексуального контента с участием несовершеннолетних.

Такой узкий охват — это суть. Один стабильный эндпоинт легко использовать как основу для архитектуры. Разделы ниже показывают небольшой чат-бэкенд, затем цикл агента, а затем ограничения, которые нужно учитывать при проектировании.

Шаг 1: подключение существующего клиента

Поскольку API следует формату OpenAI, вам редко нужно писать новый клиентский код. Откройте свой SDK или инструмент, измените базовый URL и ключ, и укажите модель на uncensored. Сначала зарегистрируйтесь на странице API-ключ (через Google или по email и паролю), затем получите пробный баланс $0.50 в один клик. Для пробного баланса не нужна карта, срок действия — 7 дней, лимит — один на человека.

Минимальный запрос на Python:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.uncensoredllmhub.com/v1",
    api_key="YOUR_API_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise assistant for a writing tool."},
        {"role": "user", "content": "Give me three opening lines for a mystery set on a ferry."},
    ],
    temperature=0.9,
    top_p=0.95,
)
print(resp.choices[0].message.content)

Параметры сэмплирования, такие как temperature, top_p, stop, seed и штрафы за частоту и присутствие, передаются модели, поэтому настройки, знакомые вам от других провайдеров, работают так же. Этот же вызов работает в инструментах, принимающих пользовательский эндпоинт, совместимый с OpenAI, например SillyTavern или Open WebUI: вставьте базовый URL, добавьте ключ, введите ID модели вручную.

Шаг 2: потоковая передача ответов в интерфейс чата

Чат-приложения кажутся медленными, если пользователь смотрит на пустое поле, пока не придет полный ответ. Потоковая передача решает эту проблему. Установите stream: true, и API отправит ответ в виде событий, отправляемых сервером (SSE), с отчетом об использовании в конце потока. Вот версия для Node, которая передает токены по мере их поступления:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.uncensoredllmhub.com/v1",
  apiKey: process.env.API_KEY,
});

export async function streamReply(history, onToken, signal) {
  const stream = await client.chat.completions.create(
    { model: "uncensored", messages: history, stream: true },
    { signal }
  );
  let text = "";
  for await (const chunk of stream) {
    const piece = chunk.choices[0]?.delta?.content ?? "";
    if (piece) {
      text += piece;
      onToken(piece);
    }
  }
  return text;
}

Две привычки избавят от проблем в будущем. Во-первых, всегда передавайте сигнал отмены и отменяйте его, когда пользователь закрывает вкладку или нажимает стоп. Запрос с потоковой передачей занимает слот параллельных запросов до конца потока, поэтому брошенные потоки сокращают вашу квоту. Во-вторых, сохраняйте полный собранный текст, так как вы добавите его в историю как сообщение ассистента для следующего хода.

Если вы видите неясные ошибки во фронтенде при потоковой передаче, наша заметка о диагностике сбоев потоковой передачи охватывает обычные причины, такие как неверный базовый URL, прокси, буферизирующий события, и два кода 429.

Шаг 3: целенаправленное использование длинного контекста

Контекстное окно составляет 100 000 токенов, которые разделяются промптом и завершением. Для инструмента написания историй, чата с персонажами или помощника по документам это оставляет место для длинной истории, крупного системного промпта и справочных материалов одновременно. Вам не нужно задавать max_tokens; завершение может использовать всё, что осталось.

Использовать длинный контекст дёшево при таких ценах. Заполнение всего окна входными данными стоит 0,1 × $0,15 = $0,015 за 100 000 входных токенов. Добавьте ответ на 2 000 токенов (0,002 × $0,50 = $0,001), и почти полный запрос обойдётся в $0,016. Вам всё равно придётся управлять окном по трём причинам: задержка растёт с размером промпта, каждый ход повторно отправляет историю, так что расходы накапливаются в течение сессии, а очень длинные истории размывают инструкции в начале.

Простая политика работает хорошо:

  1. Держите системный промпт и любой фиксированный справочный текст в начале.
  2. Сохраняйте самые последние ходы дословно.
  3. Когда история превышает выбранный вами порог, например 60 000 токенов, попросите модель кратко пересказать самую старую часть в короткую заметку и замените эти ходы ею.
  4. Читайте usage.prompt_tokens из каждого ответа, чтобы знать, насколько большим будет следующий запрос, вместо оценки по символам.

Шаг 4: инструменты и структурированный вывод для агентов

Агентам нужны от модели две вещи: способ вызывать функции и вывод, который можно парсить. Оба поддерживаются. Вызов инструментов использует стандартные параметры tools и tool_choice, вызовы инструментов можно получать потоком, а результаты возвращаются как сообщения с role: "tool". Один цикл запрос-ответ выглядит так:

import json
from openai import OpenAI

client = OpenAI(
    base_url="https://api.uncensoredllmhub.com/v1",
    api_key="YOUR_API_KEY",
)

tools = [{
    "type": "function",
    "function": {
        "name": "lookup_order",
        "description": "Find an order by its number.",
        "parameters": {
            "type": "object",
            "properties": {"order_id": {"type": "string"}},
            "required": ["order_id"],
        },
    },
}]

messages = [{"role": "user", "content": "Where is order A-1042?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
msg = first.choices[0].message

if msg.tool_calls:
    call = msg.tool_calls[0]
    args = json.loads(call.function.arguments)
    result = {"order_id": args["order_id"], "status": "shipped"}  # your real lookup goes here
    messages.append(msg)
    messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})
    final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
    print(final.choices[0].message.content)

Всегда проверяйте аргументы перед выполнением чего-либо с побочными эффектами. Модель может выдать некорректное или неожиданное значение, и ваш код — последняя линия защиты.

Для чистого структурированного вывода без инструментов используйте JSON-режим с параметром response_format, установленным в {"type": "json_object"}. Опишите нужную структуру в промпте, а ответ парсите внутри блока try, чтобы при ошибке срабатывала повторная попытка, а не сбой.

curl https://api.uncensoredllmhub.com/v1/chat/completions   -H "Authorization: Bearer $API_KEY"   -H "Content-Type: application/json"   -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Reply with JSON: {"title": string, "tags": [string]}"},
      {"role": "user", "content": "Describe a noir story set in a rainy port city."}
    ]
  }'

Ограничения, которые нужно учитывать

Полный ключ позволяет 8 одновременных запросов и 300 запросов в минуту. Пробный ключ позволяет 2 и 60. Тело запроса может занимать до 8 МБ. Каждый ответ содержит X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests и X-RateLimit-Limit-Concurrency, что полезно для логирования.

При превышении лимита API возвращает HTTP 429. Код ошибки rate_limited означает слишком много запросов в минуту, а concurrency — слишком много одновременно. Временная перегрузка также возвращает 429 с заголовком Retry-After: 5. Для многопользовательского приложения поставьте перед API небольшую очередь: семафор размером ниже лимита одновременности и повторную попытку, которая учитывает Retry-After. Для агента, который разветвляется на параллельные вызовы инструментов, ограничьте разветвление тем же числом.

Полный список параметров и формат ошибок находятся в API-документации.

Стоимость, пополнение и обработка данных

Тарификация составляет $0,15 за 1 млн входных токенов и $0,50 за 1 млн выходных токенов из предоплаченного баланса. Подписки нет, кредит никогда не сгорает, а неудачные или отклоненные запросы не оплачиваются. Ход чата из 1 500 входных и 500 выходных токенов стоит 0,0015 × $0,15 + 0,0005 × $0,50 = $0,000225 + $0,00025 = $0,000475, так что $20 кредита покрывают около 42 000 таких ходов.

Вы можете пополнить любую целую сумму от $20 до $500. Бонус составляет +5% от $50, +10% от $100 и +15% от $200. Оплата картой (Visa, Mastercard, Apple Pay, Google Pay) или криптовалютой (USDT на TRC20, USDC на Base). Текущая таблица цен доступна на странице тарифов.

Что касается данных: промпты не используются для обучения. Прочитайте политику конфиденциальности для полного текста. Вы несете ответственность за то, что строите с помощью модели, и сервис предназначен только для законного использования взрослыми.

Вопросы и ответы

Какой ID модели использовать?

Используйте uncensored как ID модели в каждом запросе. Установите базовый URL в https://api.uncensoredllmhub.com/v1 и отправьте ваш ключ в виде Bearer-токена.

Работает ли это с моим существующим кодом OpenAI?

Да. Любой SDK или клиент OpenAI работает после изменения базового URL и ключа. Поддерживаются чат-завершения, потоковая передача, вызов функций и JSON-режим.

Может ли он генерировать изображения или эмбеддинги?

Нет. Это API, работающий только с текстом, без генерации изображений, аудио или видео, без эмбеддингов и без дообучения.

Насколько большой может быть диалог?

Контекстное окно составляет 100 000 токенов, которые разделяются промптом и ответом. Тело запроса может занимать до 8 МБ.

Ваш ключ — всего в одной форме

Создайте аккаунт, скопируйте ключ, измените базовый URL. Это вся настройка.

Получить API-ключ

https://api.uncensoredllmhub.com/v1