API de chatbot sem filtros: primeiro pedido em cinco minutos
Uma API de chatbot sem filtros leva cinco minutos para experimentar se você já tem Python. Você precisa de uma chave, duas configurações alteradas no SDK OpenAI e um pedido. Depois disso, um prompt de sistema e streaming o transformam em um chatbot.

Principais conclusões
- Nosso LLM sem censura recusa menos tópicos, tornando-o ideal para role-play e escrita criativa sem bloqueios de conteúdo inesperados.
- A precificação é estritamente pagamento por uso a $0,15 por 1M de tokens de entrada e $0,50 por 1M de tokens de saída, sem taxas base mensais.
- A integração é sem atrito porque a API usa endpoints padrão do OpenAI, exigindo apenas uma alteração na URL base.
- Recargas de cripto via USDT ou USDC incluem crédito bônus, e os prompts nunca são usados para treinar seus dados.
Minuto 1 a 2: obter uma chave
Acesse a página da chave de API e entre com Google, ou com e-mail e senha. Após o cadastro, a página da chave mostra um botão para resgatar o crédito de teste: $0,50, um por pessoa, válido por 7 dias, sem necessidade de cartão.
Copie a chave e coloque-a em uma variável de ambiente. Uma chave em um arquivo que você confirma por engano é a maneira mais comum de perder crédito.
# model ID for later requests: uncensored
export UF_API_KEY="paste-your-key-here"
pip install openaiUma chave de teste permite 2 requisições simultâneas e 60 requisições por minuto. Esses limites são mais que suficientes para este tutorial.
Minuto 3: o primeiro pedido
O serviço é compatível com OpenAI, então o SDK oficial funciona assim que você altera base_url e a chave. O ID do modelo é uncensored.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Give me three names for a cyberpunk bar."}],
)
print(resp.choices[0].message.content)
print("tokens in/out:", resp.usage.prompt_tokens, resp.usage.completion_tokens)Execute com python first.py. Uma lista de nomes e uma contagem de tokens significam que tudo funciona. Se você vir um erro de autenticação, verifique a variável. Se a conexão falhar, verifique se a Base URL termina em /v1.
A resposta segue o formato de chat da OpenAI: uma lista choices com a mensagem, um bloco usage com contagens de tokens e, nesse formato, um motivo de finalização indicando por que a geração parou. Uma resposta truncada geralmente indica um max_tokens baixo. Quanto ao custo, uma requisição com 500 tokens de entrada e 300 tokens de saída custa $0,000075 + $0,00015 = $0,000225. As cinco requisições deste tutorial custam cerca de um décimo de centavo no total, então o crédito de teste é pouco utilizado.
Minuto 4: adicionar um prompt de sistema e configurações
Um pedido básico oferece uma voz de assistente padrão. Para um chatbot, adicione uma mensagem de sistema que defina um personagem e passe configurações de amostragem adequadas a ele.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
raw = client.chat.completions.with_raw_response.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are Rook, a smuggler with a dry sense of humor. Stay in character. Keep replies under 80 words."},
{"role": "user", "content": "Can you get me across the border tonight?"},
],
temperature=0.9,
top_p=0.95,
max_tokens=200,
seed=7,
)
resp = raw.parse()
print(resp.choices[0].message.content)
print("balance:", raw.headers.get("x-balance-usd"))
print("request id:", raw.headers.get("x-request-id"))temperatureetop_pcontrolam a variedade. Valores mais altos dão texto mais animado e menos previsível.seedtorna os testes mais fáceis de repetir. Ele é passado através, então use-o para comparar edições de prompt.max_tokensé opcional. Sem ele, a conclusão pode usar o resto da janela de 100.000 tokens.- O cabeçalho de saldo informa seu crédito restante após cada chamada.
O prompt é o produto aqui. Mantenha-o curto e específico. Diga quem é o personagem, como ele fala, qual é a história e qual deve ser o comprimento. Tudo isso vai para a mensagem de sistema uma vez, e você o envia novamente com cada pedido, já que a API não lembra nada entre as chamadas.
Minuto 5: streaming
O streaming imprime texto conforme é gerado. É uma alteração de uma palavra no pedido, mais um loop para ler chunks.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
stream = client.chat.completions.create(
model="uncensored",
stream=True,
messages=[
{"role": "system", "content": "You are Rook, a smuggler with a dry sense of humor."},
{"role": "user", "content": "Tell me about the worst job you ever took."},
],
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
print()Uma solicitação de streaming ocupa um dos seus slots de concorrência até o fim do stream. Com uma chave de teste, dois streams abertos já usam todos eles, e um terceiro pedido retorna HTTP 429 com código concurrency. Aguarde e tente novamente.
Se você quiser confirmar o uso após um stream, o último chunk inclui um bloco de uso.
Escolher valores de amostragem com um plano
As configurações de amostragem mudam a sensação do bot mais do que a maioria das pessoas espera. Comece com os valores abaixo e mova um de cada vez.
| Objetivo | Configuração | Por quê |
|---|---|---|
| Contação de histórias animada | temperature 0,9 a 1,0, top_p 0,95 | Mais variedade entre execuções |
| Personagem consistente | temperature 0,6 a 0,7 | Menos surpresas |
| Testes repetíveis | seed fixo, temperature 0 | O mesmo prompt dá o mesmo tipo de resposta |
| Menos repetição | Penalidade de frequência ou presença em torno de 0,3 | Desencoraja loops |
| Cortar uma resposta em um marcador | stop com uma string | Encerra a saída quando ela aparece |
Os controles de temperatura e top_p ajustam a variedade, e as penalidades são repassadas ao modelo. Altere um valor, execute o mesmo prompt cinco vezes e leia as cinco respostas antes de alterar o próximo.
Transforme em uma conversa
A API não mantém o histórico. Para fazer o Rook lembrar, mantenha uma lista e adicione ambos os lados após cada turno.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
messages = [{"role": "system", "content": "You are Rook, a smuggler with a dry sense of humor."}]
def talk(text):
messages.append({"role": "user", "content": text})
r = client.chat.completions.create(model="uncensored", messages=messages)
answer = r.choices[0].message.content
messages.append({"role": "assistant", "content": answer})
return answer
print(talk("Where are we headed?"))
print(talk("And what did I just ask you?"))A segunda pergunta funciona apenas porque o primeiro turno está na lista. É também por isso que o custo do chat cresce com o tamanho: cada turno reenvia tudo. A análise de custo e compensação aborda esse efeito em profundidade, e a página de preços mostra as taxas de $0,15 e $0,50 por 1M de tokens.
Duas advertências à medida que a lista cresce. A primeira é o custo, já que históricos longos aumentam o preço de cada turno. A segunda é a janela: 100.000 tokens para prompt mais resposta é generoso, mas um roleplay que dure semanas atingirá esse limite. Remova os turnos mais antigos, mantendo a mensagem do sistema, quando a lista estiver longa, ou substitua-os por um resumo curto.
Problemas comuns e próximos passos
| Problema | Causa provável | Correção |
|---|---|---|
| Erro de autenticação | Chave errada ou vazia | Imprima o comprimento da variável, remova espaços |
| Não encontrado | URL base faltando /v1 | Use a URL base exata desta página |
429 rate_limited | Mais de 60 requisições por minuto (teste) | Reduza a velocidade ou use uma chave completa (300 por minuto) |
429 com Retry-After: 5 | Sobrecarga temporária | Espere 5 segundos e tente novamente |
| Respostas estranhas ou planas | Prompt do sistema fraco | Adicione voz, configuração, limite de tamanho |
Requisições falhas ou recusadas não são cobradas. Para os próximos passos, leia a documentação da API para ferramentas e modo JSON. O modelo é apenas de texto, então não há imagens, áudio ou embeddings. Recargas são de $20 a $500 em cripto (USDT na TRC20 ou USDC na Base), e o crédito nunca expira. Você é responsável pelo acesso e moderação apenas para adultos em qualquer coisa que construir sobre ele.
Se um problema não estiver na tabela, reduza a requisição ao menor caso funcional: uma mensagem do usuário, sem prompt do sistema, sem parâmetros extras. Depois, adicione as peças de volta até que falhe. Quase todos os problemas em uma primeira integração vêm de um erro de digitação na URL, uma chave copiada com um espaço no final ou uma lista de mensagens com formato incorreto.
Trate erros no código
Um script que funciona uma vez não é um bot. Adicione uma nova tentativa para os casos em que a API informa para aguardar.
import os, time
from openai import OpenAI, RateLimitError
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
max_retries=0,
)
def ask(messages, tries=4):
for i in range(tries):
try:
r = client.chat.completions.create(model="uncensored", messages=messages)
return r.choices[0].message.content
except RateLimitError:
time.sleep(5 * (i + 1))
raise RuntimeError("still rate limited after retries")O SDK lança RateLimitError no HTTP 429. Para sobrecarga temporária, a API envia Retry-After: 5, então aguardar cinco segundos é o primeiro passo adequado. Para erros repetidos de concurrency, faça fila de requisições do seu lado em vez de tentar novamente mais rápido.
Mais guias
Perguntas frequentes
Uma API de chatbot sem filtros é igual à API da OpenAI?
O protocolo é o mesmo, então o SDK da OpenAI funciona. O modelo é diferente: um modelo de pesos abertos de um provedor independente, ajustado para responder sem recusas de conteúdo para uso adulto legal.
Qual URL base e modelo devo usar?
URL base https://api.chatbotunfiltered.com/v1 e o ID do modelo uncensored.
Preciso pagar para experimentá-lo?
Não. O crédito de teste de $0,50 não precisa de detalhes de pagamento. Recargas pagas são apenas por cripto.
Posso fazer streaming das respostas?
Sim. Defina stream como true. Uma requisição em streaming ocupa uma vaga de concorrência até que o streaming termine.
Como vejo meu saldo?
Leia o cabeçalho X-Balance-USD em qualquer resposta ou chame GET /v1/balance.
Obtenha sua chave de API instantaneamente
Registre-se, copie sua chave, atualize sua URL base. A configuração está completa.