API Ollama vs API OpenAI: Endpoints e Código
A pergunta sobre a API Ollama vs API OpenAI resume-se a dois formatos de requisição e dois locais para executar um modelo. O Ollama tem sua própria API nativa e também uma camada compatível com OpenAI, então migrar para um endpoint hospedado no estilo OpenAI pode exigir apenas mudança de base URL e chave.


Sem necessidade de cartão. Após o cadastro, reivindique $0,50 de crédito de teste grátis com um clique (uma vez por pessoa).
Obter chave de APIPontos principais
- O Ollama tem rotas nativas em /api e uma camada compatível com OpenAI em /v1; clientes escritos para o SDK OpenAI geralmente funcionam com ambos.
- O streaming nativo do Ollama envia JSON delimitado por quebras de linha, enquanto o formato OpenAI envia eventos enviados pelo servidor.
- Migrar do local para hospedado significa alterar a base URL, a chave e o nome do modelo, sem alterar seu código.
- Local mantém os dados na sua máquina; hospedado elimina o trabalho com hardware e adiciona uma conta por token.
A versão curta
Ambos pedem que você envie uma lista de mensagens via POST e receba texto de volta. A diferença está na estrutura da requisição, onde o servidor está localizado e quem paga pela GPU. O Ollama executa modelos no seu próprio computador e escuta na porta 11434. A API OpenAI é um serviço hospedado com seus próprios modelos pagos. Na comparação entre a API Ollama e a API OpenAI, as pessoas frequentemente ignoram um terceiro ponto: o Ollama também expõe rotas compatíveis com OpenAI, então os dois formatos se sobrepõem.
Essa sobreposição é o que torna a migração barata. Se seu app já usa o SDK OpenAI, você pode apontá-lo para o Ollama local hoje e para uma URL compatível com OpenAI hospedada amanhã. O endpoint hospedado neste site é um desses. Ele serve um único modelo, uncensored, em https://api.ollamansfw.com/v1, e não é um produto oficial da OpenAI, Meta ou qualquer outro laboratório.
Diferenças ponto a ponto
| Tarefa | Ollama nativo | Estilo OpenAI |
|---|---|---|
| Chat | POST /api/chat | POST /v1/chat/completions |
| Prompt único | POST /api/generate | POST /v1/responses ou completions de chat |
| Listar modelos | GET /api/tags | GET /v1/models |
| Autenticação | Nenhuma por padrão | Authorization: Bearer key |
| Streaming | JSON delimitado por quebras de linha | Eventos enviados pelo servidor, terminando com um marcador de conclusão |
| Nome do modelo | Qualquer modelo que você puxou, como llama3 | Qualquer modelo listado pelo provedor |
O Ollama também serve /v1/chat/completions e /v1/models na mesma porta, o que permite que clientes OpenAI funcionem contra ele. O padrão para chamadas nativas é streaming, então defina stream: false quando quiser uma única resposta JSON.
O endpoint hospedado implementa POST /v1/chat/completions, POST /v1/responses e GET /v1/models, além de verificações de saldo em GET /v1/balance. Consulte a documentação da API para a lista completa.
A mesma requisição, três formas
Ollama nativo em Python:
import requests
r = requests.post(
"http://localhost:11434/api/chat",
json={
"model": "llama3",
"messages": [{"role": "user", "content": "Say hello in five words."}],
"stream": False,
},
)
print(r.json()["message"]["content"])O SDK OpenAI, com configurações locais e hospedadas lado a lado. Apenas a linha comentada muda:
from openai import OpenAI
# Local Ollama through its OpenAI-compatible layer:
# client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
# Hosted endpoint, same code from here on:
client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored", # local would be e.g. "llama3"
messages=[{"role": "user", "content": "Say hello in five words."}],
)
print(resp.choices[0].message.content)E curl contra o endpoint hospedado com streaming ativado:
curl https://api.ollamansfw.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":true}'A análise difere no lado nativo: cada linha transmitida é um objeto JSON com message.content, e a última tem done: true. No formato OpenAI, cada evento começa com data: , contém um trecho choices[0].delta.content e o stream termina com [DONE]. Use o SDK e você não vê nenhum dos dois.
Onde cada uma faz sentido
O Ollama local é a escolha certa quando a privacidade é a principal preocupação, quando você tem uma GPU com memória suficiente para o modelo desejado, ou quando você experimenta com muitos modelos. Nada sai da sua máquina e não há cobrança por token. Os custos aparecem como hardware, energia e seu tempo. Nosso guia sobre usar Ollama com uma interface gráfica cobre o lado mais amigável dessa rota.
Um endpoint hospedado compatível com OpenAI se encaixa melhor quando você não tem hardware, precisa de muitas requisições simultâneas, executa um bot ou serviço para outras pessoas, ou quer uma URL estável que não dependa do seu laptop estar ligado. Uma chave completa permite 8 requisições concorrentes e 300 requisições por minuto. A janela de contexto é de 100.000 tokens, mais do que muitos setups locais podem manter na memória.
Muitas pessoas usam ambos: local para experimentos, hospedado para qualquer coisa que precise ficar online. Se você está avaliando outras ferramentas locais, leia alternativas de software Ollama.
Migrando do Ollama local para hospedado
- Migre para o formato OpenAI primeiro. Se seu código chama
/api/chat, mova-o para o SDK OpenAI apontando para a rota/v1do Ollama. Confirme que ainda funciona localmente. - Obtenha uma chave. Cadastre-se e reclame o crédito de teste grátis de $0,50 na página de chave de API. Não precisa de pagamento e dura 7 dias.
- Altere três valores. Base URL para
https://api.ollamansfw.com/v1, chave para a sua, modelo parauncensored. - Verifique os parâmetros. Temperature, top_p, stop, seed e as penalidades são repassados. Opções apenas locais, como
num_ctxoukeep_alivedo Ollama, não se aplicam; a janela é fixa em 100.000 tokens. - Adicione lógica de retry. A API hospedada retorna 429 com
rate_limitedouconcurrencyao ultrapassar um limite, e 429 comRetry-After: 5durante sobrecarga temporária. Servidores locais raramente fazem isso, então o código existente pode não lidar com isso.
Se algo falhar após a migração, o artigo sobre erros comuns na API Ollama cobre causas frequentes como portas erradas e nomes de modelo ausentes.
O custo do hospedado e o que ele não fará
A cobrança é pagamento por uso a partir de crédito pré-pago: $0,15 por 1 milhão de tokens de entrada e $0,50 por 1 milhão de tokens de saída. Uma rodada de chat com 1.000 tokens de entrada e 400 tokens de saída custa $0,00015 + $0,0002 = $0,00035, então $20 cobrem cerca de 57.000 dessas rodadas. Requisições falhas ou recusadas não são cobradas e o crédito nunca expira. Recargas variam de $20 a $500 com bônus de +5% a partir de $50, +10% a partir de $100 e +15% a partir de $200. O pagamento é apenas por cripto (USDT na rede TRC20 ou USDC na rede Base). Mais detalhes na página de preços.
Limites a saber: apenas texto, então sem embeddings, geração de imagens ou fine-tuning. Se você depende de embeddings locais, mantenha-os locais. O modelo é ajustado para responder sem recusas de conteúdo para uso adulto legal. Conteúdo sexual envolvendo menores de idade nunca é permitido. Prompts não são usados para treinamento.
Mais guias
Perguntas e respostas
A API Ollama é compatível com a API OpenAI?
Parcialmente. O Ollama tem rotas nativas em /api e também oferece rotas no estilo OpenAI, como /v1/chat/completions, permitindo que clientes do SDK OpenAI se conectem.
O que preciso alterar para migrar do Ollama local para um endpoint hospedado?
A base URL, a chave de API e o nome do modelo. Se seu código já usa o SDK OpenAI, nada mais precisa mudar.
A API hospedada oferece embeddings como o Ollama?
Não. É apenas geração de texto: chat completions e respostas, sem embeddings, imagens ou fine-tuning.
O Ollama é gratuito?
O software é gratuito para baixar e executar. Você ainda paga pelo hardware e energia, enquanto uma API hospedada cobra por token.