O que é uma API compatível com OpenAI?

Muitos provedores de LLM e servidores de inferência autogerenciados — a própria OpenAI, Azure OpenAI, Groq, OpenRouter, Together AI, Mistral, DeepSeek, vLLM, o servidor do llama.cpp, LM Studio e o modo compatível com OpenAI do Ollama — expõem a mesma interface REST popularizada pela OpenAI: solicitações JSON para endpoints como /v1/chat/completions, autenticadas com um token Bearer no cabeçalho Authorization. Isso permite trocar de provedor sem reescrever o código da sua integração.

Escrever manualmente um comando cURL correto para esses endpoints exige configurar exatamente a URL, os cabeçalhos e o corpo JSON, especialmente ao ajustar parâmetros de amostragem, como temperatura e penalidades, ou ao alternar entre solicitações de chat, completions legadas e embeddings.

Descrição da ferramenta

Esta ferramenta gera comandos cURL prontos para uso para qualquer API compatível com OpenAI. Defina a URL base, o endpoint, o modelo e os parâmetros, e obtenha instantaneamente um comando cURL formatado corretamente, pronto para colar no seu terminal ou nos seus scripts.

Exemplos

Conclusão de chat:

curl -X POST "https://api.openai.com/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "gpt-4o-mini",
  "messages": [
    { "role": "system", "content": "Você é um assistente útil para programação." },
    { "role": "user", "content": "Escreva uma função Python para inverter uma string" }
  ],
  "temperature": 0.3,
  "stream": false
}'

Servidor autogerenciado (vLLM, llama.cpp, LM Studio, ...):

curl -X POST "http://localhost:8000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "llama-3-8b-instruct",
  "messages": [
    { "role": "user", "content": "Resuma o enredo de Hamlet em duas frases" }
  ],
  "stream": true
}'

Embeddings:

curl -X POST "https://api.openai.com/v1/embeddings" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "text-embedding-3-small",
  "input": "A rápida raposa marrom salta sobre o cão preguiçoso"
}'

Recursos

  • Suporta os três endpoints compatíveis com OpenAI mais comuns: /chat/completions, /completions e /embeddings
  • Funciona com qualquer URL base compatível, atendendo igualmente à OpenAI, Azure, Groq, OpenRouter, Together AI e servidores autogerenciados
  • Parâmetros de amostragem configuráveis: temperatura, top-p, penalidade de frequência, penalidade de presença, máximo de tokens, número de completions, sequências de parada e seed
  • Formato opcional de resposta como objeto JSON para conclusões de chat
  • Nada é enviado para nenhum lugar — o comando cURL é criado inteiramente no seu navegador, e nenhuma chave de API deixa o seu dispositivo

Opções explicadas

Opção Descrição Padrão Intervalo
URL base A raiz da API, sem o caminho do endpoint. https://api.openai.com/v1 Qualquer URL
Endpoint O endpoint da API a ser utilizado. /chat/completions chat, completions, embeddings
Temperatura Controla a aleatoriedade da saída. Valores menores produzem textos mais focados; valores maiores aumentam a criatividade. 1 0-2
Top P Limite da amostragem por núcleo. O modelo considera os tokens cuja probabilidade acumulada atinge este valor. 1 0-1
Penalidade de frequência Penaliza tokens com base na frequência com que já apareceram, reduzindo a repetição literal. 0 -2-2
Penalidade de presença Penaliza tokens que já apareceram, incentivando o modelo a introduzir novos tópicos. 0 -2-2
Máximo de tokens Número máximo de tokens a gerar na resposta. Deixe vazio para omitir e usar o padrão do provedor. - Qualquer número inteiro
Completions (n) Quantas opções de chat/completion gerar para a entrada. 1 Qualquer número inteiro
Seed Seed fixa para obter, na medida do possível, uma saída reproduzível. Deixe vazio para resultados aleatórios. - Qualquer número inteiro
Sequências de parada Lista separada por vírgulas de sequências nas quais a API interrompe a geração de novos tokens. - Qualquer texto
Formato da resposta Defina como objeto JSON para forçar o modelo a retornar uma saída JSON válida (somente no endpoint de chat). Nenhum Nenhum / objeto JSON
Stream Quando ativado, a resposta é transmitida como eventos enviados pelo servidor. Desative para receber a resposta completa de uma só vez. Desativado Ativado / Desativado