PT ▾

chatbotnsfw.comAPI LLM sem censura para desenvolvedores

API de Chatbot NSFW para Desenvolvedores: Como Construir

Uma API de chatbot NSFW para desenvolvedores é um endpoint de chat comum alimentado por um modelo que não recusa conteúdo adulto legal. O endpoint é a parte fácil. A persona, a memória, a verificação de idade e a moderação ao redor são suas para construir.

Última atualização

Palco isométrico com balões de chat brilhantes passando por um portão acima de um rack de servidores

Resumo

  1. A API substitui um modelo que recusa por um que responde ficção adulta; tudo no lado do produto fica com você.
  2. Mantenha a chave no seu servidor, armazene o histórico você mesmo e reenvie uma janela recortada a cada rodada.
  3. Bloqueie o acesso para adultos antes de qualquer chamada de chat e mantenha um bloqueio rígido em conteúdo envolvendo menores de idade.
  4. Streaming, tentativas em 429 e um limite por usuário mantêm um bot pequeno estável com 8 requisições simultâneas.

O que a API oferece e o que você ainda possui

O serviço é uma API de texto hospedada e compatível com OpenAI. Você aponta um SDK OpenAI para https://api.chatbotnsfw.com/v1, usa o ID do modelo uncensored e envia mensagens de chat normais. O modelo é um modelo de pesos abertos ajustado para responder sem recusas de conteúdo para uso adulto legal. É apenas texto: sem imagens, áudio ou vídeo.

Esse é todo o contrato. A API não sabe quem é seu usuário, quantos anos ele tem ou o que sua plataforma permite. Ela também não lembra de nada entre as chamadas. Cada requisição deve conter toda a conversa que você deseja que o modelo veja.

PreocupaçãoQuem cuida disso
Gerando respostas sem recusas de conteúdoA API
Persona, tom e regras da históriaVocê, no prompt do sistema
Memória da conversaVocê, no seu banco de dados
Verificação de idade e consentimentoVocê
Bloqueio de conteúdo envolvendo menores de idadeVocê, e a API tem o mesmo limite rígido
Relatórios, banimentos, termos de usoVocê

Se você ainda não construiu contra uma API de chat, a documentação da API cobre o formato da requisição. O guia de integração de LLM NSFW existente detalha o lado da integração em mais detalhes; este artigo é sobre o produto ao redor dele.

Arquitetura: mantenha a chave no servidor

Seu frontend nunca deve armazenar a chave de API. Coloque um pequeno backend entre o navegador ou aplicativo e a API. O backend autentica seu usuário, verifica a idade, carrega o histórico dele, chama a API e armazena a resposta.

  1. O navegador envia a mensagem do usuário para o seu backend com sua sessão.
  2. O backend verifica se o usuário é verificado como adulto e está dentro do limite de taxa.
  3. O backend constrói a lista de mensagens: prompt do sistema, memória, rodadas recentes, nova mensagem.
  4. O backend chama POST /v1/chat/completions e transmite tokens de volta.
  5. O backend salva a nova rodada após o término do streaming.

Uma chave completa permite 8 requisições concorrentes e 300 requisições por minuto. Isso é suficiente para um bot hobby e um bom começo para um produto pequeno, desde que seu backend não permita que um usuário abra muitos streams ao mesmo tempo. Uma requisição com streaming ocupa seu slot de concorrência até o fim do stream, então um usuário que abandona um stream aberto ainda custa um slot para você.

Escreva a persona como um contrato

O prompt do sistema faz a maior parte do trabalho do produto. Um bom prompt lê-se como um contrato curto com o modelo, não um parágrafo de adjetivos. Cubra quatro coisas: quem é o personagem, como ele fala, qual é a história e o que está fora dos limites.

import os
from openai import OpenAI

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

PERSONA = """You play Mara, a 34-year-old ship's navigator in a slow-burn
space romance. All characters are adults.
Voice: dry, warm, short paragraphs, first person.
Story rules: keep continuity with the notes below; never speak for the user;
stay in character unless the user writes OOC: in brackets.
Hard limits: no sexual content involving anyone under 18, ever. If the user
steers there, refuse in character and change the scene."""

def reply(history, user_text):
    messages = [{"role": "system", "content": PERSONA}]
    messages += history[-24:]
    messages.append({"role": "user", "content": user_text})
    r = client.chat.completions.create(
        model="uncensored",
        messages=messages,
        temperature=0.9,
        top_p=0.95,
    )
    return r.choices[0].message.content

Dois detalhes importam mais do que parecem. Declare que todos os personagens são adultos, em palavras claras, no prompt. E diga ao modelo o que fazer na borda, por exemplo, para mudar a cena, para que a história continue se movendo em vez de terminar em uma mensagem de erro. Aumente temperature para uma prosa mais animada e diminua se o personagem se desviar.

Teste a persona antes de lançar

Execute as mesmas vinte mensagens de usuário através do prompt após cada edição, incluindo as estranhas: um usuário que pede ao bot para sair do personagem, um que muda o cenário no meio da cena, um que empurra em direção à regra dos menores. Salve as saídas e leia-as. Edições de prompt que corrigem um caso muitas vezes quebram outro.

Memória que cabe na janela

A janela de contexto tem 100.000 tokens, prompt mais conclusão, então há espaço para uma história longa. Mais longo nem sempre é melhor. Você paga por cada token de entrada em cada rodada, e um modelo com um histórico enorme pode perder detalhes no início.

Uma disposição prática tem três camadas. O prompt do sistema contém a persona. Um bloco curto de notas contém fatos que devem sobreviver: nomes, estado do relacionamento, promessas feitas na história. As últimas 20 a 30 rodadas vão literalmente. Rodadas mais antigas são resumidas no bloco de notas por uma chamada barata a cada 20 rodadas ou mais.

O código acima já fatia history[-24:], o que mantém as últimas 24 mensagens. Adicione o bloco de notas como uma segunda mensagem de sistema quando houver uma. Os custos permanecem baixos assim: uma interação típica envia alguns milhares de tokens de entrada, o que, a $0,15 por 1M tokens de entrada, é uma fração de centavo. A página de preços tem os números, e o artigo sobre integração mostra os formatos de requisição.

Um produto de conteúdo adulto precisa de uma verificação de idade antes da primeira chamada de chat, não depois. A API não verifica a idade. Essa responsabilidade é sua, e o método certo depende de onde você opera e onde seus usuários vivem.

  • Uma caixa de seleção que diz Tenho mais de 18 anos é um aviso, não verificação. Algumas jurisdições exigem mais.
  • Armazene o resultado no lado do servidor contra a conta e verifique-o em cada solicitação de chat, não apenas no momento do cadastro.
  • Deixe claro a natureza exclusiva para adultos na página de destino e nos termos, antes do cadastro.
  • Mantenha os personagens fictícios adultos em todas as personas, no prompt e no cartão mostrado aos usuários.

Pergunte a um advogado que conhece seu mercado qual é o mínimo. Este artigo não pode te dizer, e o provedor da API não pode decidir isso por você.

Responsabilidades de moderação que ficam com você

Um modelo sem censura altera as recusas do modelo. Não altera o que é sua responsabilidade. Planeje isso desde o primeiro dia:

  • Bloqueio rígido em menores de idade. Conteúdo sexual envolvendo menores é proibido. Adicione sua própria verificação de entrada para tentativas óbvias e encerre a sessão quando for acionada.
  • Relatórios. Dê aos usuários uma maneira de sinalizar uma conversa e decida o que fazer com um relatório.
  • Ações de conta. Consiga suspender um usuário rapidamente.
  • Dados. Decida por quanto tempo você mantém os transcritos e indique isso na sua página de privacidade. O provedor da API não usa prompts para treinamento, mas seu próprio banco de dados é sua responsabilidade.
  • Escopo. Mantenha o produto voltado para uso adulto lícito e ficção. Declare isso nos seus termos.

Requisições falhas ou recusadas não são cobradas, o que significa que uma requisição bloqueada pela sua própria verificação também não custa nada, porque ela nunca chega à API.

Limites por usuário e controle de custos

Uma caixa de chat aberta sem limites é um convite para um usuário drenar seu crédito. Defina um limite diário de tokens para cada conta e verifique antes da chamada à API. A resposta informa quantos tokens cada turno consumiu, então o limite custa um contador.

import os
from openai import OpenAI

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

DAILY_CAP = 400_000   # tokens per user per day
used_today = {}       # user_id -> tokens, keep this in your database

def guarded_reply(user_id, messages):
    if used_today.get(user_id, 0) >= DAILY_CAP:
        return "You have reached today's limit. Come back tomorrow."
    r = client.chat.completions.create(model="uncensored", messages=messages)
    used = r.usage.prompt_tokens + r.usage.completion_tokens
    used_today[user_id] = used_today.get(user_id, 0) + used
    return r.choices[0].message.content

Um limite de 400.000 tokens é um número para ajustar, não uma recomendação. Com um prompt de 6.000 tokens por rodada, permite aproximadamente 65 rodadas por dia. Calcule o valor de um usuário para você, defina o limite com base nisso e observe o cabeçalho X-Balance-USD em seu próprio monitoramento para que um bug não queime o crédito durante a noite.

Mantenha um saldo de crédito separado e pequeno para o staging. O tráfego de teste e o tráfego real nunca devem compartilhar uma chave, porque um loop de teste que tenta novamente a cada erro pode gastar mais em uma hora do que uma semana de usuários reais.

Streaming e tratamento de 429

O chat parece lento sem streaming. Defina stream: true e encaminhe os chunks para o navegador. O streaming também termina com um bloco de uso, que você pode registrar para rastrear custos.

Ao ultrapassar o limite, a API responde com HTTP 429. O código de erro é rate_limited para requisições por minuto e concurrency para muitas requisições ao mesmo tempo. Uma sobrecarga temporária também retorna 429 com Retry-After: 5. Respeite esse cabeçalho.

import os, time
from openai import OpenAI, RateLimitError

client = OpenAI(
    base_url="https://api.chatbotnsfw.com/v1",
    api_key=os.environ["NSFW_API_KEY"],
    max_retries=0,
)

def stream_reply(messages):
    for attempt in range(4):
        try:
            stream = client.chat.completions.create(
                model="uncensored",
                messages=messages,
                stream=True,
            )
            for chunk in stream:
                if chunk.choices and chunk.choices[0].delta.content:
                    yield chunk.choices[0].delta.content
            return
        except RateLimitError:
            time.sleep(5)
    yield "The service is busy. Please try again in a moment."

Adicione um bloqueio por usuário para que uma conta mantenha um stream por vez. Assim, 8 requisições concorrentes suportam aproximadamente 8 usuários conversando simultaneamente, e uma fila absorve o restante.

Para começar, obtenha uma chave de API. Novos usuários podem reivindicar $0,50 de crédito de teste com um clique na página da chave. A chave de teste é limitada a 2 requisições concorrentes e 60 requisições por minuto, o que é suficiente para testar o fluxo.

Perguntas frequentes

Existe uma API de chatbot NSFW oficial dos grandes fornecedores de IA?

Este serviço não é a API oficial de nenhum fornecedor de modelos. Ele executa um único modelo de pesos abertos, operado por um provedor independente e ajustado para responder sem recusas de conteúdo para uso adulto lícito.

A API verifica se meus usuários são adultos?

Não. Verificação de idade, consentimento e seus termos de uso são sua responsabilidade como desenvolvedor. A API proíbe rigorosamente conteúdo sexual envolvendo menores de idade.

Pode gerar imagens para o meu chatbot?

Não. É apenas texto. Não há geração de imagem, áudio ou vídeo, nem embeddings nem fine-tuning.

Como manter um personagem consistente ao longo de um chat longo?

Mantenha uma persona no prompt do sistema, um bloco curto de notas com fatos-chave e as últimas 20 a 30 rodadas mantidas literalmente. Resuma as rodadas mais antigas nas notas.

Como eu pago?

Adicione fundos de $20 a $500 apenas com criptomoedas (USDT na rede TRC20 ou USDC na rede Base). O crédito nunca expira e não há assinatura.

Obtenha sua chave de API agora

Cadastre-se, pegue sua chave e atualize seu base URL. Pronto.