spicyapiDocumentação
Apps e plugins
Conteúdo principal

Apps de roleplay (RisuAI, Agnai, Chub, KoboldAI Lite, Janitor AI)

Conecte os modelos de texto da SpicyAPI ao RisuAI, Agnai, Chub, KoboldAI Lite e Janitor AI. Os campos exatos de cada app, quais modelos servem para roleplay, como lidar com modelos de raciocínio e como limitar o gasto.

Apps de roleplay permitem conversar com personagens, e a maioria deixa você levar o seu próprio modelo de IA por uma conexão compatível com OpenAI. A SpicyAPI fala esse protocolo, então você pode apontar esses apps para ela, escolher qualquer modelo de texto da SpicyAPI e pagar com o seu saldo.

Esta página cobre cinco apps web e desktop: RisuAI, Agnai, Chub, KoboldAI Lite e Janitor AI. Para o SillyTavern, veja SillyTavern. Os apps são feitos por terceiros e mudam as telas; os nomes de campos abaixo vêm do código-fonte publicado e das páginas de ajuda de cada app, e cada seção diz o que foi conferido e o que não foi.

Versão resumida

  1. Crie uma chave de API separada para o app em spicyapi.ai/console/keys e defina um limite de gasto diário.
  2. No app, escolha a conexão compatível com OpenAI ou "reverse proxy". Informe https://api.spicyapi.ai/v1 como endereço (o Janitor AI quer o mais longo, https://api.spicyapi.ai/v1/chat/completions), cole a sua chave e defina o modelo como um id de chat terminado em /chat, copiado do catálogo ao vivo.
  3. Defina Max tokens como pelo menos 1.000 para modelos de raciocínio e envie uma mensagem.

O que você precisa

  • Uma conta SpicyAPI com saldo. Veja Prepare sua conta e Cobrança.
  • Uma chave de API que começa com sk-spicy-. Veja Autenticação.
  • Um id de modelo. Os modelos de texto se chamam <maker>/<model>/chat, escritos aqui como MODEL_ID_FROM_CATALOG. MODEL_ID_FROM_CATALOG representa um id de modelo de chat que você copia do catálogo ao vivo (GET /api/v1/models); nunca digite o marcador em si. O id precisa ser digitado exatamente, inclusive o /chat no final. A lista completa está em spicyapi.ai/models; com a sua chave, GET https://api.spicyapi.ai/v1/models também a retorna, e os ids de chat são os que terminam em /chat. Veja Catálogo de modelos e schemas.

Qual app usa qual campo

AppEndereço a informarOnde vai a chaveModeloQuem envia a requisição
RisuAIhttps://api.spicyapi.ai/v1 (o completo .../v1/chat/completions também funciona)Key/PasswordRequest Model, digitadoO servidor do RisuAI no site, o seu computador no app desktop
Agnaihttps://api.spicyapi.ai/v1 (não o caminho completo)API KeyEscolhido em um preset, a partir de uma lista obtida da SpicyAPIO servidor do Agnai
Chubhttps://api.spicyapi.ai/v1 (não o caminho completo)Reverse Proxy KeyLista suspensa obtida da SpicyAPIO seu navegador
KoboldAI Litehttps://api.spicyapi.ai/v1Campo API key da conexão OpenAILista suspensa obtida da SpicyAPIO seu navegador
Janitor AIhttps://api.spicyapi.ai/v1/chat/completions (o caminho completo)API KeyModel Name, digitadoNão verificado, veja a seção do Janitor AI

A diferença entre o endereço curto e o completo importa. Apps que adicionam /chat/completions sozinhos quebram se você o incluir, e o Janitor AI precisa dele escrito por inteiro.

Escolha um modelo

Roleplay pede um modelo que se mantenha no personagem, escreva respostas longas e não recuse pedidos comuns de história. O ranking de roleplay e LLMs classifica os modelos de texto da SpicyAPI nesses pontos e mostra os preços atuais. Consulte-o em vez de confiar em uma lista escrita aqui, porque modelos e classificações mudam.

Cada página de modelo também mostra um rótulo de política de conteúdo (por exemplo, sem restrições, intermediário ou filtrado). Esse rótulo indica com que liberdade o modelo responde; escolha um modelo cujo rótulo combine com as histórias que você quer escrever.

O DeepSeek V4.1 Flash é um bom primeiro modelo para testar: está perto do topo do ranking e é um dos mais baratos. Copie o id dele (termina em /chat) do catálogo ao vivo em spicyapi.ai/models em vez de digitá-lo de memória.

Dois limites que vale conhecer:

  • Alguns modelos aceitam no máximo 256 mensagens por requisição. Em um chat muito longo, um app que envia o histórico inteiro pode passar disso. Procure no app a configuração de quanto histórico enviar, ou o tamanho do contexto, e reduza. A página do modelo lista os limites dele.
  • Entrada de imagem só funciona com modelos que leem imagens. Um chat de roleplay comum não precisa disso.

Configurações de amostragem

Os apps de roleplay enviam um monte de configurações de amostragem a cada mensagem: temperature, top-p, top-k, min-p, top-a, frequency, presence e repetition penalty. Os modelos diferem quanto às que aceitam.

A SpicyAPI ignora as que o modelo não usa em vez de recusar a mensagem. Ela também ignora n: 1, uma lista de stop vazia e stop strings em um modelo que não tem nenhuma. Quando ignora algo, a resposta traz um cabeçalho X-Spicy-Ignored-Params com os nomes das configurações descartadas, para você ver exatamente o que não teve efeito.

Quando um modelo aceita uma configuração, mas não o valor que você enviou, a SpicyAPI usa o valor aceito mais próximo: uma temperature acima do máximo do modelo vira esse máximo, e uma lista de stop strings maior do que o modelo permite mantém as primeiras entradas. Essas mudanças aparecem em um cabeçalho X-Spicy-Adjusted-Params, por exemplo temperature=1, stop=kept 1 of 3. Assim você pode deixar seus presets habituais como estão.

Campos que não são de amostragem são diferentes: se um app enviar algo que o modelo não conhece de forma alguma, a SpicyAPI ainda responde com um erro 400 que cita o campo.

Modelos de raciocínio e Max tokens

Alguns modelos pensam antes de responder. O raciocínio consome tokens, e esses tokens contam para Max tokens (também chamado de Max output, Response length ou max_new_tokens, conforme o app).

  • Defina Max tokens com folga. Se for muito pequeno, digamos 20 ou 200, um modelo de raciocínio pode gastar todo o orçamento pensando e não devolver texto. Você recebe um erro upstream_failed dizendo que o orçamento de saída foi gasto com raciocínio. Comece com 1.000 ou mais e aumente se as respostas forem cortadas.
  • Pensar custa dinheiro e tempo. Você paga pelos tokens de raciocínio como por qualquer outra saída, e a primeira palavra chega mais tarde. Alguns modelos aceitam a instrução de pensar menos por meio de reasoning_effort. Os níveis variam por modelo; um nível que o modelo não oferece é trocado pelo mais próximo que ele oferece, e configurações de raciocínio no estilo OpenRouter (o Agnai envia essas) são traduzidas para reasoning_effort. Apps que têm uma caixa Additional Parameters ou de parâmetros personalizados podem enviá-lo, por exemplo reasoning_effort com um valor menor; a maioria dos apps abaixo não o envia sozinha.
  • Alguns apps exibem o raciocínio no chat. O Janitor AI o envolve em tags <think>. O Chub não o mostra de jeito nenhum.

Mantenha o gasto sob controle

Chats de roleplay são longos, e os apps reenviam a conversa inteira a cada mensagem, então o custo por mensagem cresce junto com o chat.

Para cada app, crie uma chave própria no console. Abra Advanced ao criá-la e defina um limite de gasto diário (e um mensal, se quiser). Se o app se comportar mal, entrar em loop ou a chave vazar, o prejuízo para no limite, e você pode revogar só aquela chave sem mexer em mais nada. Uma chave também pode ser restrita a modelos específicos. Veja Autenticação.

Esses apps guardam sua chave nos servidores deles ou no seu navegador. O site do RisuAI, o Agnai e o Janitor AI enviam a sua chave e o seu chat pelos servidores deles; o Chub e o KoboldAI Lite enviam as requisições direto do seu navegador. Uma chave separada e com limite é a precaução certa em todos os casos.

RisuAI

O RisuAI roda em risuai.xyz, como app desktop ou no seu próprio servidor. Conferido no código-fonte do RisuAI (versão 2026.8.250).

Escolha o modelo Custom API

Nas configurações do bot, abra a lista de modelos e escolha Custom API.

Preencha os três campos

  • URL (exibido como "Reverse Proxy"): https://api.spicyapi.ai/v1. O RisuAI adiciona /chat/completions sozinho quando o endereço termina em /v1, e o completo https://api.spicyapi.ai/v1/chat/completions também funciona.
  • Key/Password: a sua chave sk-spicy-. Ela é enviada como bearer token.
  • Request Model: o id do modelo, MODEL_ID_FROM_CATALOG. O RisuAI não tem lista de modelos para endereços personalizados, então digite-o.

Defina a lista Format como OpenAI Compatible.

Defina Max tokens e envie uma mensagem

Aumente o tamanho máximo da resposta se você escolheu um modelo de raciocínio (veja acima) e converse.

De onde vêm as requisições. No risuai.xyz, o RisuAI normalmente repassa as requisições pelo próprio servidor, então a sua chave e o seu chat passam por ele. O app desktop e um servidor próprio enviam as requisições direto da sua máquina. Só a opção "Force Plain Fetch" do site, escondida entre as configurações não recomendadas, envia as requisições pelo navegador; a SpicyAPI aceita essas também.

Amostragem. As configurações padrão da Custom API do RisuAI enviam frequency, presence e repetition penalty, min-p e top-a. A SpicyAPI ignora as que o modelo não usa, então os padrões funcionam.

Agnai

O Agnai fica em agnai.chat. Conferido no código-fonte do Agnai (branch dev, 06/10/2026). A SpicyAPI não está na lista de provedores nativos do Agnai, então você a adiciona como uma conexão personalizada compatível com OpenAI.

Adicione um provedor

Em Settings, abra a página de gerenciamento de provedores e adicione um provedor do tipo OpenAI Compat (ou Remotely Hosted e depois Other (Generic OpenAI)). Dê qualquer nome.

Preencha o endereço e a chave

  • URL: https://api.spicyapi.ai/v1 (ou https://api.spicyapi.ai; o Agnai adiciona /v1 se faltar). Não informe o caminho completo .../chat/completions, ou o Agnai o duplica.
  • API Key: a sua chave sk-spicy-.

Escolha o modelo em um preset

No preset com o qual você conversa, escolha o modelo na lista. O Agnai preenche a lista a partir da lista de modelos da SpicyAPI. Escolha um id terminado em /chat.

De onde vêm as requisições. Com um provedor adicionado assim, quem envia a requisição é o servidor do Agnai, então a sua chave fica guardada no Agnai.

Amostragem. O Agnai sempre envia temperature e top-p, que alguns modelos não aceitam. A SpicyAPI os ignora para esses modelos, então modelos como DeepSeek V4 e Kimi K3 funcionam.

Não recomendado: modos diretos pelo navegador. O Agnai também tem um tipo de conexão Self-Host e uma opção Use Local Requests em presets antigos, que fazem o seu navegador chamar o endereço diretamente. Pelo código-fonte, esses modos adicionam um campo chamado think que a SpicyAPI não aceita, e a SpicyAPI responde 400 para campos que não conhece. Isso não foi testado com a SpicyAPI. Se você receber um 400 aí, volte para a configuração de provedor acima.

Chub

O Chub (chub.ai) envia as requisições direto do seu navegador para o endereço que você informa. Conferido no código de front-end publicado do Chub (build de 28/06/2026); as telas do Chub podem ter mudado desde então. A conexão pelo navegador funciona porque a SpicyAPI permite requisições vindas de páginas web.

Adicione o reverse proxy em Secrets

Abra Secrets, encontre o bloco OpenAI e escolha Reverse Proxy em vez de My Own API Key.

Preencha o endereço e a chave

  • Open AI Reverse Proxy: https://api.spicyapi.ai/v1. O Chub adiciona /chat/completions sozinho, então não o inclua.
  • Reverse Proxy Key: a sua chave sk-spicy-.

Pressione Check Proxy. Uma verificação bem-sucedida também carrega a lista de modelos.

Selecione OpenAI / Proxy e um modelo

Em Configuration > Prompt Structure, defina a API como OpenAI / Proxy e escolha um modelo na lista (um id terminado em /chat).

O Chub avisa na própria página de configurações que o seu IP e o histórico do chat podem ser registrados quando você usa um reverse proxy. Esse aviso é do Chub, não da SpicyAPI.

Coisas que o código-fonte mostra e que podem surpreender:

  • O Chub para de ler uma resposta em streaming depois de 120 segundos. Um modelo de raciocínio que pensa por muito tempo pode ser cortado; reduza o esforço de raciocínio ou escolha um modelo que responda mais rápido.
  • O Chub não exibe o raciocínio do modelo, apenas a resposta.

KoboldAI Lite

O KoboldAI Lite é uma única página web em lite.koboldai.net. Conferido no index.html publicado. Ele chama o endereço diretamente do seu navegador, o que funciona porque a SpicyAPI permite requisições vindas de páginas web.

Escolha a conexão OpenAI

Abra Settings e escolha a conexão OpenAI API (endpoint personalizado).

Informe o endereço e a chave

Coloque https://api.spicyapi.ai/v1 como endereço e a sua chave sk-spicy- no campo de chave. O app remove um /chat/completions no final se você colar um.

Busque a lista de modelos

Use o botão de buscar modelos do app, escolha um id terminado em /chat e defina o tamanho da saída nas configurações de geração.

Deixe "CORS Proxy" desativado. O KoboldAI Lite tem uma opção para passar as requisições por um proxy mantido pelo autor dele. Você não precisa disso para a SpicyAPI, e ativá-la envia a sua chave pelo servidor de outra pessoa.

Amostragem. A configuração de repetição dele é enviada à API como presence penalty. A SpicyAPI a ignora nos modelos que não a usam.

Janitor AI

Não verificado

Não conseguimos confirmar que o Janitor AI funciona com a SpicyAPI. O Janitor AI é de código fechado e é preciso uma conta para testá-lo, então ninguém fez um chat de verdade. O que segue é como as configurações de proxy dele são descritas na central de ajuda do Janitor e no código publicado da página. Trate como algo a experimentar, não como uma promessa.

O recurso de "proxy" do Janitor AI envia o seu chat para um endereço que você escolhe. Segundo a central de ajuda do Janitor, os campos ficam no ícone de engrenagem da página de chat, em API Settings e depois Add Configuration.

Adicione uma configuração

Preencha:

  • Config Name: qualquer nome, como SpicyAPI.
  • Model Name: o id do modelo, digitado: MODEL_ID_FROM_CATALOG.
  • Proxy URL: o endereço completo, https://api.spicyapi.ai/v1/chat/completions. O Janitor tem um botão "Add /chat/completions" que faz isso por você depois que você informa https://api.spicyapi.ai/v1.
  • API Key: a sua chave sk-spicy-.

Salve e envie uma mensagem

A central de ajuda do Janitor descreve o botão Check Key/Model dele como pouco confiável, então teste com uma mensagem de verdade.

Se o Janitor mostrar um erro de rede ou de conexão, como "A network error occurred", a página do Janitor provavelmente está bloqueando requisições para endereços que não sejam os da OpenAI. A página web do Janitor tem uma política de segurança que permite requisições diretas a apenas um endereço de IA de terceiros, o da OpenAI. Quando o Janitor envia a requisição a partir do seu navegador, o navegador a recusa antes que a SpicyAPI veja qualquer coisa, e a SpicyAPI não pode mudar isso. Se a sua chave não mostra uso no console enquanto esse erro aparece, essa é a causa.

Se isso acontecer, use o SillyTavern ou o RisuAI.

Outros fatos da central de ajuda do Janitor e do código da página:

  • Alguns bots do Janitor têm os proxies desativados pelos autores, então um bot pode recusar conversar por um proxy, não importa o que você informe.
  • O Janitor mostra o raciocínio do modelo envolvido em tags <think>. Use um Max tokens maior ou um esforço de raciocínio menor para mantê-lo curto.
  • O Janitor limita o tamanho de cada mensagem que você digita.

Solução de problemas

O que você vêO que fazer
401 ou "invalid API key"Copie a chave de novo do console. Uma chave revogada para de funcionar na hora, e precisa ser a chave sk-spicy-, não a senha da conta.
402 ou "insufficient balance"Adicione fundos no console ou confira se o limite de gasto diário da chave foi atingido. Veja Cobrança.
404 ou "model not found"O id do modelo está errado. Ele deve terminar em /chat e ser escrito como em https://api.spicyapi.ai/v1/models.
404 no próprio endereço, com um caminho duplicado como /chat/completions/chat/completionsO app adiciona o caminho sozinho. Use https://api.spicyapi.ai/v1 (RisuAI, Agnai, Chub, KoboldAI Lite). Só o Janitor AI precisa do caminho completo.
400 que cita um campoO app enviou algo que o modelo não aceita e que não é uma configuração de amostragem. Remova ou desative o campo citado.
400 sobre o número de mensagensO histórico do chat é maior que o limite de mensagens do modelo. Reduza o histórico ou o tamanho do contexto no app.
upstream_failed, "the output budget was spent on reasoning"Aumente Max tokens ou reduza o esforço de raciocínio do modelo. Veja Modelos de raciocínio e Max tokens.
A resposta para no meio da fraseMax tokens está baixo demais ou (no Chub) o limite de 120 segundos foi atingido.
"Network error" ou "Failed to fetch" no app, e nenhuma requisição nos logs do seu consoleA requisição nunca chegou à SpicyAPI. No Janitor AI, é a página bloqueando o endereço; nos outros, confira se o endereço tem erros de digitação e se o site está acessível.
429Requisições demais ao mesmo tempo. Espere alguns segundos; apps compartilhados podem enviar requisições de muitos usuários a partir de um só endereço.

Os códigos de erro estão explicados em Erros. Todo erro termina com um request_id; informe-o ao suporte para que a requisição seja localizada com exatidão. Suas requisições também aparecem em Logs no console, a forma mais rápida de saber se uma requisição chegou à SpicyAPI.

Nesta página