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

NsfwAiApiРуководство

Лучшая локальная LLM для ролевой или хостинговый API?

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

Обновлено

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

Локальная или хостинговая: быстрое решение

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

ФакторЛокальная модельХостинговое API
Модель ценообразованияОборудование и питание, без стоимости за токенОплата за токен из предоплаченного баланса
Размер моделиОграничено памятью вашей GPUЧто запустит провайдер
Длина контекстаОграничено памятью, так как более длинный контекст требует больше памяти100 000 токенов здесь
КонфиденциальностьНичего не покидает вашу машинуПромпты отправляются провайдеру; здесь они не используются для обучения
НастройкаВремя выполнения, веса, квантование, обновленияБазовый URL и ключ
Работает с любого устройстваТолько если вы откроете доступ к своей машинеДа

Что на самом деле определяет лучшую локальную модель

Рейтинги лучших локальных LLM для ролевой игры быстро устаревают, и ни одно имя не подходит всем. Вместо этого оценивайте кандидатов по тому, что проявляется в реальной сессии.

  • Поведение при отказе. Многие базовые и инструктивные модели были дообучены для отказа от определённых тем. Модели, дообученные для художественной литературы или отмеченные как uncensored, обычно отказывают реже, но качество варьируется, поэтому тестируйте их на своих сценах.
  • Следование персонажу. Следите за тем, чтобы модель не переходила на повествование действий вашего персонажа, не повторяла одни и те же фразы каждый ход и не забывала, кто находится в комнате.
  • Качество прозы. Прочитайте десять ответов подряд. Некоторые модели хороши для одного хода, но утомляют к десятому.
  • Обработка контекста. Модель может заявлять о большом окне, но всё равно терять детали из его середины. Проведите тест, в котором факт из начала чата важен позже.
  • Размер и квантование. Большая модель, сжатая в сильное квантование, может потерять больше, чем меньшая, запущенная с более высокой точностью. Сравнивайте, не предполагайте.

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

Где локальная модель исчерпывает возможности

Стена, с которой сталкиваются большинство ролевиков, — это память, и она проявляется в двух местах. Первое — сама модель: большая модель пишет лучше, но требует больше памяти GPU. Второе — контекст. Каждое сообщение в длинной истории отправляется снова с каждым новым ходом, и кэш, который её хранит, также растёт с длиной, поэтому длинная кампания может нагрузить GPU, который отлично справляется с короткими чатами.

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

Компромисс — это стоимость, поэтому полезно её измерить. Предположим, что история чата содержит 30 000 токенов, а модель генерирует 300 токенов в ответе. Один ход стоит 30 000 входных токенов по $0,15 за 1 млн, что составляет $0,0045, плюс 300 выходных токенов по $0,50 за 1 млн, что составляет $0,00015. Это $0,00465 за ход или $0,465 за 100 ходов. Долгий вечер игры обойдётся дешевле доллара. На странице цен указаны тарифы и бонусные уровни для больших пополнений.

Рабочая хостинговая настройка на Python

Эндпоинт совместим с OpenAI, поэтому официальный пакет openai работает без изменений, кроме базового URL и ключа. Идентификатор модели — uncensored. Сначала получите ключ на странице API-ключей; новые аккаунты могут получить пробный баланс $0,50 в один клик, без необходимости ввода данных для оплаты.

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

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.nsfwaiapi.com/v1",
    api_key=os.environ["NSFWAIAPI_KEY"],
)

SYSTEM = '''You are the narrator and all non-player characters in an adult fiction roleplay.
Setting: a rain-soaked port city, late autumn, gaslight and smuggler politics.
Rules:
- Write in third person, past tense, 2 to 4 short paragraphs per reply.
- Never write the player's actions, words or thoughts. Stop where the player decides.
- Keep each character's voice and goals consistent. Track who is present in the scene.
- All characters are adults. Do not write sexual content involving minors under any circumstances.
- Stay in the story. No disclaimers or out-of-character commentary unless the player asks with (OOC).'''

history = [{"role": "system", "content": SYSTEM}]
MAX_TURNS = 40  # keep the last 40 messages besides the system prompt

def say(user_text):
    history.append({"role": "user", "content": user_text})
    trimmed = [history[0]] + history[1:][-MAX_TURNS:]
    stream = client.chat.completions.create(
        model="uncensored",
        messages=trimmed,
        temperature=0.9,
        top_p=0.95,
        frequency_penalty=0.3,
        max_tokens=600,
        stream=True,
    )
    reply = ""
    for chunk in stream:
        if chunk.choices and chunk.choices[0].delta.content:
            piece = chunk.choices[0].delta.content
            reply += piece
            print(piece, end="", flush=True)
    print()
    history.append({"role": "assistant", "content": reply})

say("I push open the door of the Gull and Anchor and look for the harbor master.")

Поскольку окно составляет 100 000 токенов, вы можете значительно увеличить MAX_TURNS, прежде чем усечение станет проблемой. Усечение — всё же хорошая привычка: более короткие промпты обходятся дешевле и удерживают модель в фокусе на последних событиях.

Настройки клиента для SillyTavern и аналогичных приложений

Большинство интерфейсов для ролевых игр имеют экран подключения к источнику завершения диалога, совместимому с OpenAI или пользовательскому. Например, SillyTavern позволяет добавить эндпоинт, совместимый с OpenAI. Поля одинаковы везде:

  • Базовый или эндпоинт URL: https://api.nsfwaiapi.com/v1. Некоторые приложения требуют полный путь, заканчивающийся на /chat/completions; если приложение запрашивает базу, остановитесь на /v1.
  • API-ключ: ваш ключ, отправляемый как токен Bearer.
  • Модель: uncensored. Если приложение может получить список моделей, оно может вызвать GET /v1/models.
  • Потоковая передача: включена. Ответы появляются по мере написания, и приложение может прервать генерацию досрочно, если вам не нравится направление.

Для сэмплирования температура около 0,8–1,0 подходит для нарративного текста, а top_p — около 0,95. Небольшой штраф за частоту или присутствие уменьшает повторяющиеся фразы, которые часто накапливаются в длинных чатах. Увеличивайте штраф только при появлении повторов, так как высокие значения заставляют текст странным образом избегать повторов. Стоп-последовательности передаются как есть, поэтому добавление имени игрока с двоеточием в качестве стоп-строки помогает, если модель пытается говорить за вас. Установите размер контекстного окна приложения на то значение, за которое вы готовы платить; вам не нужно заполнять все 100 000 токенов.

Имейте в виду параллельные запросы, если вы запускаете несколько вкладок чата или бота для друзей. Полный ключ позволяет 8 параллельных запросов и 300 в минуту, а пробный ключ — 2 и 60. Потоковый ответ удерживает свой слот до конца потока, поэтому застрявшая вкладка может занять слот. В документации указаны ограничения и заголовки ответа, включая X-Balance-USD, который показывает ваш оставшийся баланс.

Небольшая процедура для поддержания здоровья длинных историй

Долгие сессии ролевых игр часто идут не так, и несколько привычек предотвращают большую часть этого. Пишите краткое резюме истории каждые 20–30 ходов и держите его в начале промпта, после системного сообщения. Обновляйте его вручную или просите модель создать его, затем проверяйте, сохранились ли имена, места и обещания. Закрепите факты, которые никогда нельзя забыть, такие как отношения и незакрытые сюжетные линии, в самом системном промпте.

Если ответ уходит в направление, которое вам не нравится, перегенерируйте его, а не спорьте с ним в чате. Споры загрязняют историю и учат модель, что сцена посвящена спору. Когда вы хотите направить, добавьте одну чёткую строку в скобках, например, заметку о настроении следующей сцены, и позвольте следующему ответу её нести. Сохраняйте согласованность имён персонажей и давайте каждому неигровому персонажу однострочную заметку о голосе, так как модели смешивают персонажей, которые звучат похоже.

Честные ограничения этой модели

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

Она генерирует только текст. Нет изображений для ваших персонажей, нет голоса и нет эмбеддингов для поиска по книге лора, поэтому, если вам нужны портреты или речь, вам нужно добавить отдельный сервис для каждого. Дообучения также нет. Качество также будет зависеть от вашего промпта: неясный системный промпт даёт неясную художественную литературу, а хороший профиль персонажа с примерами диалогов делает больше, чем любая настройка сэмплирования.

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

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

Локальная LLM лучше хостингового API для ролевой игры?

Ни один вариант не превосходит другие во всех аспектах. Локальная версия даёт вам офлайн-конфиденциальность и отсутствие стоимости за токен, тогда как хостинг предоставляет более длинный контекст и отсутствие ограничений оборудования. Многие люди используют оба варианта.

Могу ли я использовать SillyTavern с этим API?

Да. SillyTavern и аналогичные приложения принимают эндпоинт, совместимый с OpenAI. Введите https://api.nsfwaiapi.com/v1 в качестве URL, ваш ключ и идентификатор модели uncensored.

Сколько контекста может использовать сессия ролевой игры?

Контекстное окно составляет 100 000 токенов, включая промпт и ответ вместе. Длинные чаты обходятся дороже, потому что история отправляется с каждым ходом.

Генерирует ли он изображения или голос для моих персонажей?

Нет. Сервис работает только с текстом, без генерации изображений, аудио или видео и без эмбеддингов.

Получить ключ можно, заполнив одну форму

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

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

NsfwAiApiAPI LLM без цензуры для генерации NSFW-текста