Autenticação
A autenticação é feita por meio de uma única chave de API. Você pode entrar usando Google ou email e senha na página Obter chave de API. A chave é exibida imediatamente e está vinculada ao seu crédito pré-pago. Diferente dos grandes fornecedores, não há assinaturas mensais ou necessidade de cartão de crédito para o teste. Use o cabeçalho Authorization: Bearer YOUR_API_KEY para todas as requisições. Sua chave é a única credencial ativa por conta; gerar uma nova chave invalida a anterior.
Conclusão básica
Envie uma solicitação padrão de conclusão de chat para o endpoint compatível com OpenAI. O identificador do modelo é uncensored. Este modelo de pesos abertos é ajustado para responder sem recusas de conteúdo para uso adulto legal. Não é GPT, Claude ou qualquer outro modelo de fornecedor. A URL base deste serviço é fornecida abaixo.
curl https://api.ornith.top/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Substitua YOUR_API_KEY pela sua chave do painel. A resposta inclui o texto gerado em choices[0].message.content. Erros como 401 indicam uma chave inválida, enquanto 402 significa que seu crédito pré-pago está esgotado.
SDK Python
Use o pacote Python oficial openai. Aponte-o para a URL base do Ornith e forneça sua chave de API. Isso garante compatibilidade com a estrutura padrão do cliente OpenAI. Você pode passar mensagens como uma lista de dicionários contendo role e content. O cliente lida com as solicitações HTTP automaticamente. Esta abordagem funciona tanto para geração de texto simples quanto para interações mais complexas usando ferramentas ou modo JSON.
from openai import OpenAI
client = OpenAI(base_url="https://api.ornith.top/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)O objeto de resposta espelha a estrutura padrão do OpenAI. Você pode acessar o texto gerado diretamente do objeto de resposta. Este método é ideal para serviços de backend ou scripts onde você precisa de acesso programático à saída do modelo.
SDK Node.js
Instale o pacote npm openai. Inicialize o cliente com a URL base do Ornith e sua chave de API. A estrutura da solicitação é idêntica à do SDK Python. Use o método chat.completions.create. Isso é adequado para ambientes JavaScript, seja você construindo um backend web ou uma ferramenta CLI. O cliente lida com a serialização e desserialização da resposta.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.ornith.top/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Trate os erros adequadamente. Erros de rede ou da API lançarão exceções. Verifique o código de status para distinguir entre falhas de autenticação, limites de requisições ou erros do servidor. A resposta contém os detalhes da conclusão no mesmo formato do SDK Python.
Respostas em streaming
Ative o streaming definindo stream: true na sua requisição. Isso retorna um fluxo de tokens conforme são gerados. Use isso para atualizações de interface em tempo real ou exibição progressiva de texto. O fluxo termina com um bloco final que contém o uso total de tokens. Isso permite que você acompanhe os custos em tempo real sem esperar pela resposta completa. É eficiente para contextos longos onde você deseja mostrar o progresso.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Itere sobre o fluxo para processar cada bloco. O último bloco inclui o campo usage. Isso é útil para transparência de cobrança. Certifique-se de que seu cliente lide com o fluxo corretamente para evitar problemas de memória com respostas grandes.
Limites, erros e contexto
A janela de contexto é de 100.000 tokens para prompt e conclusão combinados. A saída máxima por requisição é de 32.000 tokens (2.048 se max_tokens não estiver definido). Você está limitado a 300 requisições por minuto e 8 requisições simultâneas por chave. Os corpos das requisições devem ter menos de 8 MB. Se você exceder o limite de requisições, receberá um erro 429. Recusas para conteúdo relacionado a menores são codificadas e sempre se aplicam. Erros não consomem crédito. O crédito é pré-pago e nunca expira.