RU ▾

API Qwen Abliterated: вызов хостинговой модели без GPU

Иллюстрация ноутбука, отправляющего блоки данных по кабелю на сервер хостинговой модели

Обновлено

Вы можете вызвать модель без цензуры по HTTP с помощью SDK OpenAI, который вы уже используете, и не скачивать веса или арендовать GPU. В этом руководстве показана настройка с рабочим кодом и точными расходами.

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

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

Краткий ответ: измените базовый URL

Если вы ищете qwen abliterated api, практичный путь — это хостинговый эндпоинт, поддерживающий протокол OpenAI. Вы сохраняете код клиента, меняете два значения и отправляете запросы на сервер, который запускает модель за вас. Без скачивания GGUF, без выбора квантования и без бюджета VRAM.

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

НастройкаЗначение
Базовый URLhttps://api.qwenabliterated.top/v1
Модельuncensored
Заголовок авторизацииAuthorization: Bearer YOUR_API_KEY
ЭндпоинтыPOST /v1/chat/completions, GET /v1/models
Контекстное окно100 000 токенов, промпт плюс завершение

Получите ключ

Войдите через Google или по электронной почте и паролю, затем откройте страницу API-ключа. Новые пользователи могут получить $0,50 пробного баланса одним кликом, по одному на человека, срок действия — 7 дней, карта не требуется. Этого достаточно, чтобы несколько раз протестировать каждый пример ниже.

Пробные ключи имеют более низкие лимиты, чем полные: 2 параллельных запроса и 60 запросов в минуту против 8 и 300 для полного ключа. Имейте это в виду, если тестируете с параллельными рабочими процессами.

Храните ключ в переменной окружения, а не в системе контроля версий:

export QWENABL_KEY="paste-your-key-here"

Первый запрос на Python

Установите официальный SDK с помощью pip install openai, затем:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.qwenabliterated.top/v1",
    api_key=os.environ["QWENABL_KEY"],
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a blunt technical assistant."},
        {"role": "user", "content": "Explain what a KV cache is in three sentences."},
    ],
    temperature=0.7,
)

print(resp.choices[0].message.content)
print(resp.usage)

Ответ содержит стандартный блок usage, поэтому вы можете логировать токены промпта и завершения и самостоятельно вычислять расходы. Заголовки включают X-Request-Id для вопросов поддержки и X-Balance-USD, чтобы вы могли отслеживать оставшийся баланс без открытия панели управления.

Почему стоит использовать API вместо файлов GGUF

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

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

Чем вы жертвуете, так это свободой выбора конкретного чекпоинта и гарантией того, что байты никогда не покинут вашу сеть. Решите, что важнее для вашего проекта, прежде чем выбирать.

Node.js и curl

SDK Node принимает те же два параметра:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.qwenabliterated.top/v1",
  apiKey: process.env.QWENABL_KEY,
});

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Give me five names for a fantasy tavern." }],
});

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

И с помощью curl, что удобно для проверки ключа перед подключением:

curl -s https://api.qwenabliterated.top/v1/models \
  -H "Authorization: Bearer $QWENABL_KEY"

Успешный вызов возвращает список JSON, который включает uncensored. Код 401 означает, что ключ неверный или отсутствует. документация подробно описывает формат ошибок.

Потоковая передача, JSON-режим и инструменты

Потоковая передача

Установите stream: true и читайте server-sent события. Использование сообщается в конце потока.

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Write a short scene on a night train."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

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

JSON-режим

Передайте response_format={"type": "json_object"} и укажите JSON в промпте. Всё равно разбирайте ответ с проверками; ни одна модель не следует схеме идеально каждый раз.

Вызов функций

Передайте tools и опционально tool_choice. Когда модель запрашивает инструмент, выполните его и верните вывод как сообщение с role: "tool". Вызовы инструментов также потоковые. Параметры сэмплирования temperature, top_p, stop, seed и штрафы за частоту и присутствие передаются как есть.

Интеграция в реальное приложение

Один скрипт — легко. Приложению нужно несколько дополнительных привычек, и они такие же, как при использовании любого API в стиле OpenAI.

Храните ключ на сервере

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

Установите таймауты и ограничьте вывод

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

Логируйте ID запроса

Каждый ответ содержит X-Request-Id. Сохраняйте его рядом с вашей собственной записью о вызове. Когда результат выглядит неверно или запрос падает, этот идентификатор позволяет поддержке найти точный запрос. Заголовок X-Balance-USD полезен для простой сигнализации: если число падает ниже порога, отправьте себе сообщение, прежде чем задача исчерпает баланс.

Проверяйте список моделей при запуске

Проверка работоспособности, вызывающая GET /v1/models, ничего не стоит в токенах и подтверждает ключ, URL и сетевой путь за один шаг. Запускайте его при загрузке службы и аварийно завершайте работу, если возвращается ошибка.

Лимиты и обработка ошибок

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

Соблюдайте заголовок и делайте backoff:

import time
from openai import OpenAI, RateLimitError

def ask(client, messages, tries=5):
    for attempt in range(tries):
        try:
            return client.chat.completions.create(model="uncensored", messages=messages)
        except RateLimitError as e:
            wait = int(e.response.headers.get("Retry-After", 5))
            time.sleep(wait * (attempt + 1))
    raise RuntimeError("still rate limited")

Если вы запускаете пул рабочих процессов, ограничьте его 8 потоками для полного ключа. Превышение этого значения просто превращает работу в ошибки 429. Неудачные или отклонённые запросы не оплачиваются, поэтому повторные попытки не стоят вам ничего лишнего, когда они терпят неудачу.

Стоимость запроса

Входные токены стоят $0,15 за 1M, выходные токены — $0,50 за 1M. Несколько примеров, вычисленных точно:

  • Ход чата с 2000 токенов промпта и 500 токенов завершения: 2000 x $0,15 / 1M = $0,0003, плюс 500 x $0,50 / 1M = $0,00025, итого $0,00055. Тысяча ходов стоит $0,55.
  • Пакетная задача, отправляющая 10M входных токенов и получающая 2M выходных токенов: $1,50 плюс $1,00, итого $2,50.
  • Вызов с длинным контекстом с 90 000 токенов промпта и 1000 выходных токенов: $0,0135 плюс $0,0005, итого $0,014.

Баланс предоплаченный, не сгорает, подписки нет. Пополняйте любую целую сумму от $20 до $500; $50 добавляют 5%, поэтому пополнение на $50 дает $52,50 баланса. Оплата криптовалютой (USDT на TRC20, USDC на Base). См. страницу тарифов для полной таблицы бонусов.

Хостинг или локальные файлы: что выбрать

Локальный GGUF дает вам приватность за счет изоляции и полный контроль над точными весами. Хостинговый API избавляет от работы с оборудованием, длинный контекст и URL, который могут вызывать другие сервисы. Большинство команд, создающих бота, инструмент для написания текстов или бэкенд для игры, находят хостинг проще, так как свободная коробка с GPU — это еще одна вещь, которую нужно поддерживать.

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

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

Нужен ли мне GPU для использования?

Нет. Модель работает на серверах провайдера. Ваш код только отправляет HTTP-запросы, поэтому достаточно ноутбука или небольшого VPS.

Какое имя модели мне отправить?

Укажите uncensored в качестве значения модели. Вы можете подтвердить это, отправив GET-запрос к /v1/models.

Поддерживаются ли Python и Node SDK от OpenAI?

Да. Укажите базовый URL как /v1 адрес сайта и используйте свой ключ. Завершения диалога, потоковая передача, вызов инструментов и JSON-режим работают через стандартные параметры.

Что произойдет, если я отправлю слишком много запросов?

Вы получите HTTP 429 с кодом rate_limited или concurrency. Подождите и повторите запрос, соблюдая заголовок Retry-After, если он присутствует.

Есть ли бесплатный способ протестировать сервис?

Новые пользователи могут получить $0,50 пробного кредита одним нажатием на странице API-ключа. Он действует 7 дней и не требует карты.

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

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

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