PT ▾

API Qwen Abliterated: chame um modelo hospedado, sem GPU

Ilustração de um laptop enviando cubos de dados por um cabo para um servidor de modelo hospedado

Atualizado

Você pode chamar um modelo de chat sem censura via HTTP com o SDK OpenAI que você já usa, e pular o download de pesos ou o aluguel de uma GPU. Este guia mostra a configuração, com código funcional e custos exatos.

Pontos principais

  • Aponte qualquer SDK OpenAI para a base URL e defina o modelo como uncensored.
  • Streaming, chamada de funções e modo JSON funcionam por meio dos parâmetros padrão.
  • Limites: 8 requisições simultâneas e 300 por minuto com uma chave completa.
  • Pague por token: $0,15 por 1M de entrada, $0,50 por 1M de saída.

Resposta curta: altere a base URL

Se você procura uma api qwen abliterated, o caminho prático é um endpoint hospedado que implementa o protocolo OpenAI. Você mantém o código do cliente, altera dois valores e envia requisições para um servidor que executa o modelo para você. Sem download GGUF, sem escolha de quantização, sem orçamento de VRAM.

Uma nota necessária sobre nomenclatura: este é um serviço independente, não a API oficial da Qwen, e o modelo hospedado é endereçado como uncensored em vez de pelo nome de um checkpoint da Qwen. É um modelo de pesos abertos, executado por um provedor independente e ajustado para responder sem recusas de conteúdo para uso adulto legal. Se você precisa de um arquivo abliterated específico, execute esse arquivo localmente. Se você precisa de um endpoint de chat confiável para um app, continue lendo.

ConfiguraçãoValor
URL basehttps://api.qwenabliterated.top/v1
Modelouncensored
Cabeçalho de autenticaçãoAuthorization: Bearer YOUR_API_KEY
EndpointsPOST /v1/chat/completions, GET /v1/models
Janela de contexto100.000 tokens, prompt mais conclusão

Obtenha uma chave

Crie uma conta com Google, ou com e-mail e senha, depois acesse a página de chave de API. Usuários novos podem reivindicar $0,50 de crédito de teste com um clique, um por pessoa, válido por 7 dias e sem cartão. Isso é suficiente para executar todos os exemplos abaixo várias vezes.

Chaves de teste têm limites menores que chaves completas: 2 requisições simultâneas e 60 requisições por minuto, contra 8 e 300 em uma chave completa. Tenha isso em mente se você testar com workers paralelos.

Armazene a chave em uma variável de ambiente em vez de no controle de versão:

export QWENABL_KEY="paste-your-key-here"

Primeira requisição em Python

Instale o SDK oficial com pip install openai, depois:

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.qwenabliterated.top/v1",
    api_key=os.environ["QWENABL_KEY"],
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a blunt technical assistant."},
        {"role": "user", "content": "Explain what a KV cache is in three sentences."},
    ],
    temperature=0.7,
)

print(resp.choices[0].message.content)
print(resp.usage)

A resposta contém um bloco usage normal, então você pode registrar tokens de prompt e de resposta e calcular o gasto você mesmo. Os cabeçalhos incluem X-Request-Id para perguntas de suporte e X-Balance-USD para que você possa monitorar o crédito restante sem abrir um painel.

Por que usar uma API em vez de arquivos GGUF

A rota usual para um modelo sem censura é encontrar um arquivo quantizado, carregá-lo em um ambiente local e conversar com um servidor local. Isso funciona, e para experimentos é uma boa maneira de aprender. O atrito aparece quando você sai dos experimentos para algo que outras pessoas usam.

Primeiro, hardware. Um arquivo que cabe na sua placa de desktop com contexto curto pode não caber com um contexto longo, porque o cache de atenção cresce com cada token. Segundo, concorrência. Um único processo local lida confortavelmente com um ou dois chats, mas dez usuários ao mesmo tempo significam filas. Terceiro, disponibilidade. Uma máquina doméstica dorme, perde energia e recebe uma atualização de driver no momento errado. Uma API hospedada transforma isso no trabalho de outra pessoa, e você paga apenas pelos tokens usados.

O que você abre mão é a liberdade de escolher um checkpoint específico e a garantia de que os bytes nunca saem da sua rede. Decida qual desses fatores é mais importante para o seu projeto antes de escolher.

Node.js e curl

O SDK Node usa as mesmas duas opções:

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.qwenabliterated.top/v1",
  apiKey: process.env.QWENABL_KEY,
});

const resp = await client.chat.completions.create({
  model: "uncensored",
  messages: [{ role: "user", content: "Give me five names for a fantasy tavern." }],
});

console.log(resp.choices[0].message.content);

E com curl, que é útil para verificar uma chave antes de conectar qualquer coisa:

curl -s https://api.qwenabliterated.top/v1/models \
  -H "Authorization: Bearer $QWENABL_KEY"

Uma chamada bem-sucedida retorna uma lista JSON que inclui uncensored. Um 401 significa que a chave está errada ou ausente. A documentação cobre o formato de erro em detalhes.

Streaming, modo JSON e ferramentas

Streaming

Defina stream: true e leia eventos enviados pelo servidor. O uso é reportado no final do stream.

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "Write a short scene on a night train."}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Uma requisição em streaming mantém sua slot de concorrência até que o stream termine, então um cliente que abre um stream e vai embora bloqueará capacidade. Sempre consuma ou feche o stream.

Modo JSON

Passe response_format={"type": "json_object"} e mencione JSON no seu prompt. Faça parsing de forma defensiva mesmo assim; nenhum modelo segue um schema perfeitamente todas as vezes.

Chamada de funções

Envie tools e opcionalmente tool_choice. Quando o modelo solicitar uma ferramenta, execute-a e retorne o output como uma mensagem com role: "tool". Chamadas de função também fazem streaming. Os parâmetros de amostragem temperature, top_p, stop, seed e as penalidades de frequência e presença são passados diretamente.

Integrando em uma aplicação real

Um script único é fácil. Uma aplicação precisa de alguns hábitos a mais, e são os mesmos que você usaria com qualquer API estilo OpenAI.

Mantenha a chave no servidor

Nunca envie a chave no código do navegador ou de um app móvel. Chame a API do seu backend e exponha sua própria rota para o front-end, onde você pode adicionar autenticação e limites por usuário. Qualquer pessoa que encontrar uma chave em um bundle pode gastar seu crédito.

Defina timeouts e limite o output

A completion pode usar tudo o que sobrar da janela de 100.000 tokens, e max_tokens é opcional. Para um recurso de chat, defina um limite que corresponda à sua interface para que uma resposta incomumente longa não aumente a conta. Combine isso com um timeout do cliente e você terá um teto tanto para tempo quanto para dinheiro em cada chamada.

Registre o ID da requisição

Cada resposta carrega X-Request-Id. Armazene-o junto ao seu próprio registro da chamada. Quando um resultado parece errado ou uma requisição falha, esse identificador é o que permite ao suporte encontrar a requisição exata. O cabeçalho X-Balance-USD é útil para um alerta simples: se o número cair abaixo de um limite, envie uma mensagem para você mesmo antes que um trabalho fique sem crédito.

Verifique a lista de modelos na inicialização

Uma verificação de saúde que chama GET /v1/models não custa tokens e confirma a chave, a URL e o caminho de rede em uma etapa. Execute-o quando seu serviço iniciar e falhe claramente se retornar um erro.

Limites e tratamento de erros

Requisições acima do limite recebem HTTP 429. O código de erro indica qual limite você atingiu: rate_limited significa muitas requisições por minuto, e concurrency significa muitas ao mesmo tempo. Durante sobrecarga temporária, a API também retorna 429 com um cabeçalho Retry-After: 5. O corpo máximo é 8 MB.

Respeite o cabeçalho e faça backoff:

import time
from openai import OpenAI, RateLimitError

def ask(client, messages, tries=5):
    for attempt in range(tries):
        try:
            return client.chat.completions.create(model="uncensored", messages=messages)
        except RateLimitError as e:
            wait = int(e.response.headers.get("Retry-After", 5))
            time.sleep(wait * (attempt + 1))
    raise RuntimeError("still rate limited")

Se você executar um pool de workers, limite-o a 8 threads para uma chave completa. Ir acima disso apenas converte trabalho em 429s. Requisições falhas ou recusadas não são cobradas, então novas tentativas não custam nada extra quando falham.

Quanto custa uma requisição

Tokens de entrada custam $0,15 por 1M e tokens de saída $0,50 por 1M. Alguns exemplos, calculados exatamente:

  • Uma rodada de chat com 2.000 tokens de prompt e 500 tokens de completion: 2.000 x $0,15 / 1M = $0,0003, mais 500 x $0,50 / 1M = $0,00025, totalizando $0,00055. Mil rodadas custam $0,55.
  • Um job em lote que envia 10M de tokens de entrada e recebe 2M de tokens de saída: $1,50 mais $1,00, totalizando $2,50.
  • Uma chamada de contexto longo com 90.000 tokens de prompt e 1.000 tokens de saída: $0,0135 mais $0,0005, totalizando $0,014.

O crédito é pré-pago, nunca expira e não há assinatura. Recarregue qualquer valor inteiro de $20 a $500; $50 adiciona 5%, então um recarregamento de $50 gera $52,50 de crédito. Pague com cripto (USDT na TRC20, USDC na Base). Veja a página de preços para a tabela completa de bônus.

Hospedado ou arquivos locais: qual se encaixa

Um GGUF local oferece privacidade por isolamento e controle total sobre os pesos exatos. Uma API hospedada dispensa trabalho de hardware, contexto longo e uma URL que outros serviços podem chamar. A maioria das equipes que cria um bot, uma ferramenta de escrita ou um backend de jogo acha a hospedagem mais simples, já que uma GPU sobressalente é mais uma coisa para manter em execução.

Para uma visão mais ampla sobre pagar por token comparado com outras formas de alcançar um modelo estilo Qwen, veja o guia de comparação. Prompts enviados para a API não são usados para treinamento. O modelo é apenas texto, e conteúdo sexual envolvendo menores de idade não é permitido em nenhuma circunstância.

Perguntas e respostas

Preciso de uma GPU para usá-lo?

Não. O modelo roda nos servidores do provedor. Seu código apenas envia requisições HTTP, então um laptop ou uma VPS pequena é suficiente.

Qual nome de modelo eu envio?

Envie uncensored como valor do modelo. Você pode confirmar isso com uma requisição GET para /v1/models.

Suporta os SDKs Python e Node.js da OpenAI?

Sim. Defina a base URL para o endereço /v1 do site e use sua chave. Completions de chat, streaming, chamada de funções e modo JSON funcionam pelos parâmetros normais.

O que acontece se eu enviar muitas requisições?

Você recebe HTTP 429 com o código rate_limited ou concurrency. Aguarde e tente novamente, e respeite o cabeçalho Retry-After quando presente.

Existe uma maneira gratuita de testar?

Novos usuários podem obter $0,50 de crédito de teste com um clique na página da chave de API. Ele dura 7 dias e não precisa de cartão.

Sua chave está a um formulário de distância

Crie uma conta, copie a chave e altere a URL base. Essa é toda a configuração.

Obter chave de API