Что подразумевают под текстовым API без цензуры
Если вы искали nsfw ai api, вам, вероятно, нужно одно: модель, которую можно вызвать из своего кода и которая не прерывает историю отказом. На испанском и португальском аббревиатура — «IA» (inteligencia artificial, inteligência artificial), поэтому запросы вроде «ia nsfw» распространены. Потребность одинакова на всех языках: художественная проза, ролевые игры и приложения-компаньоны для взрослых, построенные на модели, которая следует системному промпту, который вы написали.
Массовые размещённые модели настроены на отказ от широкого спектра запросов. Это разумно для общего ассистента, но ломает приложение для историй. Модель здесь — одна модель с открытыми весами, запущенная независимым провайдером и настроенная на ответы без отказов по контенту для законного использования взрослыми. Это не официальный API ни одного крупного вендора, и это не роутер, перенаправляющий ваш вызов в модель другого поставщика.
Вы общаетесь с ней так же, как с OpenAI: JSON поверх HTTPS, ключ Bearer, массив messages. Ничего в вашем клиенте менять не нужно, кроме двух строк.
Что вы на самом деле вызываете
Сохраните факты в одном месте перед написанием кода.
- Базовый URL:
https://api.nsfwia.com/v1 - Идентификатор модели:
uncensored - Аутентификация:
Authorization: Bearer YOUR_KEY - Эндпоинты:
POST /v1/chat/completions,POST /v1/responsesиGET /v1/models - Контекстное окно: 100 000 токенов, промпт и ответ вместе
- Возможности: потоковая передача через SSE, вызов инструментов, JSON-режим, а также передача параметров temperature, top_p, stop, seed и штрафов.
Это только текст. Нет генерации изображений, аудио или видео, нет эмбеддингов и нет дообучения. Если вашему продукту нужны эти функции, подключите к этому API другие сервисы.
Отправьте свой первый запрос
Создайте аккаунт, откройте страницу API-ключа и скопируйте свой ключ. Новые пользователи могут получить $0,50 пробного баланса в один клик, действительный в течение 7 дней. Затем выполните это:
curl https://api.nsfwia.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "system", "content": "You are a novelist writing for adult readers. Stay in character."},
{"role": "user", "content": "Open a noir story set in a rainy port city."}
],
"temperature": 0.9
}'
Тот же вызов с официальным SDK Python:
from openai import OpenAI
client = OpenAI(
base_url="https://api.nsfwia.com/v1",
api_key="YOUR_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are a novelist writing for adult readers."},
{"role": "user", "content": "Open a noir story set in a rainy port city."},
],
temperature=0.9,
)
print(resp.choices[0].message.content)
Если вызов возвращает текст, вы завершили настройку. Код 401 означает, что ключ неверный или содержит лишний пробел. Код 404 обычно означает, что в базовом URL отсутствует /v1.
Потоковая передача и системные промпты
Приложения для историй и чатов кажутся медленными без потоковой передачи. Установите stream: true и читайте события, отправляемые сервером, по мере их поступления. Данные об использовании приходят в конце потока.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.nsfwia.com/v1",
apiKey: process.env.NSFW_API_KEY,
});
const stream = await client.chat.completions.create({
model: "uncensored",
stream: true,
messages: [
{ role: "system", content: "You are the narrator of an adult interactive fiction game." },
{ role: "user", content: "Describe the tavern the player just entered." },
],
});
for await (const part of stream) {
process.stdout.write(part.choices[0]?.delta?.content ?? "");
}
Поскольку модель не возражает против жанра, системный промпт становится вашим главным инструментом управления. Укажите сеттинг, тон, точку зрения и желаемую длину. Поместите туда и жесткие правила, например «никакого контента с участием несовершеннолетних» или «оставайся в рамках истории». Чёткий системный промпт даёт больше для качества вывода, чем любые настройки сэмплирования.
Структурированный вывод и инструменты
Приложениям часто нужны данные, а не текст: лист персонажа, инвентарь, список вариантов выбора для игрока. Добавьте response_format: {"type": "json_object"} и укажите в промпте, какие ключи вы ожидаете, и ответ будет объектом JSON, который можно распарсить. Для игровой логики передайте tools с определениями функций. Когда модель отвечает с tool_calls, запустите функцию в своём коде и отправьте результат обратно с role: "tool". Обе функции работают при потоковой передаче, так что рассказчик может описать сцену и вызвать функцию броска кубика в одном и том же ходу.
Вносите небольшие изменения при настройке вывода. Меняйте один параметр за раз, например, снижайте temperature для более стабильного текста или добавляйте штраф за присутствие, если модель повторяется, затем сравнивайте результаты на одном и том же промпте с фиксированным seed.
Написание промптов на испанском или португальском
Ничто не мешает вам отправлять системный промпт и реплики пользователя на испанском или португальском. Некоторые разработчики оставляют системный промпт на английском, позволяя пользователю писать на своём языке, что сохраняет стабильность инструкций, пока история остаётся локальной. Другие пишут всё на языке пользователя. Попробуйте оба варианта на своих тестовых сценах и сравните, так как мы не публикуем языковые бенчмарки, и правильный выбор зависит от вашего контента.
Статьи на этом сайте на английском языке, но API не важно, какой язык содержит JSON. Наша статья мифы против фактов охватывает распространённые заблуждения о моделях без цензуры, включая то, что означает «без цензуры» и что не означает.
Лимиты и стоимость
| Пункт | Значение |
|---|---|
| Цена ввода | $0,15 за 1 млн токенов |
| Цена вывода | $0,50 за 1 млн токенов |
| Полный ключ | 8 одновременных запросов, 300 запросов в минуту |
| Пробный ключ | 2 одновременных запроса, 60 запросов в минуту |
| Максимальный размер тела запроса | 8 МБ |
Типичный ход ролевой игры с 2 000 входными токенами и 500 выходными токенами стоит $0,0003 за входные плюс $0,00025 за выходные, итого $0,00055. Пробного баланса $0,50 поэтому хватает примерно на 900 таких ходов. Неудачные или отклонённые запросы не тарифицируются, а предоплаченный баланс не сгорает. Пополнения от $20 до $500 криптовалютой (USDT в сети TRC20 или USDC в сети Base) с бонусом 5% от $50, 10% от $100 и 15% от $200. Полные детали на странице с ценами.
Если вы превысите лимит, вы получите HTTP 429. Код ошибки rate_limited означает слишком много запросов в минуту, а concurrency означает слишком много одновременно. Потоковый запрос удерживает свой слот до завершения потока, поэтому закрывайте потоки, которые вы больше не читаете.
Правила, которые остаются в силе
Сервис предназначен только для законного использования взрослыми. Контент с участием несовершеннолетних — это строгий лимит и он никогда не допустим, независимо от формулировок. Промпты не используются для обучения. Сохраните свои проверки возраста, экраны согласия и местные юридические обязанности в вашем продукте, потому что API предоставляет вам мощную текстовую модель и ничего более. Полная ссылка на запросы находится в документации.
