O que é uma API de LLM?

Atualizado em: agosto de 2026

Uma API de LLM é um endpoint HTTP para um modelo de linguagem hospedado: você envia um prompt, recebe texto gerado de volta e paga por token. Ela é uma API comum com três propriedades incomuns — é stateless (você reenvia a conversa inteira a cada chamada), medida em tokens (entrada e saída precificadas separadamente) e não determinística (o mesmo prompt pode retornar textos diferentes). Domine essas três e o resto é a disciplina operacional que as páginas bem ranqueadas pulam: onde a chamada pertence, quanto ela custa e como ela falha.

Principais pontos

PerguntaResposta
O que éPOST de um array messages → resposta do assistente + contagem de tokens
A cobrançaPor token, entrada e saída precificadas separadamente; a saída custa mais
A pegadinha statelessMemória é você reenviando os turnos anteriores — toda chamada, todo token pago
A regra de ferroNunca chame do cliente — a chave vaza; faça proxy pelo backend
A ponte para agentesTool calling — o modelo solicita uma função, seu código a executa

Uma chamada real, no servidor

// JavaScript — Cloud Code (cloud/main.js)
// The LLM call belongs server-side — the key never reaches the client
Parse.Cloud.define('summarize', async (req) => {
  const res = await Parse.Cloud.httpRequest({
    method: 'POST',
    url: 'https://api.llm-provider.example/v1/chat/completions',
    headers: {
      Authorization: `Bearer ${process.env.LLM_KEY}`, // server-side secret
      'Content-Type': 'application/json',
    },
    body: {
      model: 'default-chat',
      messages: [
        { role: 'system', content: 'Summarize in one sentence.' },
        { role: 'user', content: req.params.text },
      ],
      max_tokens: 80, // cost + latency guardrail, enforced by YOU
    },
  });
  return res.data.choices[0].message.content;
});

O formato é portátil — a maioria dos provedores aceita o mesmo formato de chat completions, então a requisição e a resposta abaixo se leem igual, qualquer que seja o modelo apontado:

POST /v1/chat/completions            Authorization: Bearer <chave>
{ "model": "default-chat",
  "messages": [
    { "role": "system", "content": "Seja conciso." },        ← define o comportamento
    { "role": "user",   "content": "Explique tokens." } ],   ← a instrução
  "max_tokens": 200, "temperature": 0.7, "stream": false }

→ { "choices": [ { "message": { "role": "assistant",
                                "content": "Um token é…" },
                   "finish_reason": "stop" } ],
    "usage": { "prompt_tokens": 24, "completion_tokens": 118,
               "total_tokens": 142 } }        ← o que você paga

Tokens são a moeda

Um token é um pedaço de texto — cerca de quatro caracteres, ou três quartos de uma palavra em inglês. Todo o custo de uma API de LLM se reduz a contá-los, e dois fatos surpreendem. A saída custa mais que a entrada — muitas vezes várias vezes mais — porque ler o seu prompt é barato, enquanto gerar cada token da resposta é intensivo em computação, uma predição de cada vez sobre o vocabulário inteiro. E o contexto é pago a cada chamada: o modelo é stateless, então “memória” é você reenviando os turnos anteriores, e um histórico longo ou um trecho recuperado grande é cobrado de novo em cada requisição. A fórmula mensal aproximada que vale internalizar:

custo mensal ≈ ( requisições/dia
                 × (média_tokens_entrada × preço_entrada_por_M / 1_000_000
                  + média_tokens_saída  × preço_saída_por_M   / 1_000_000) )
               × 30

As alavancas que mexem nele: limite max_tokens, apare o contexto reenviado,
use um modelo menor para tarefas fáceis e faça cache de prefixos de prompt reutilizados.

Os parâmetros que importam

ParâmetroControlaOrientação prática
temperatureAleatoriedade (0–2)0 para extração/classificação; ~0.7 para prosa
top_pNucleus samplingAjuste este ou temperature — não os dois
max_tokensTeto do tamanho da saídaQuase sempre defina — limita custo e latência
stopSequências de paradaEncerre a geração num delimitador que você controla

Streaming: por que as UIs de chat parecem rápidas

Ative a flag stream e a resposta chega de forma incremental como Server-Sent Events — linhas data:, um bloco de tokens por vez, terminando num marcador [DONE] — em vez de um blob único depois de vários segundos. A razão é perceptual: o tempo até o primeiro token é uma fração do tempo até a resposta completa, então o usuário vê palavras aparecendo em vez de um spinner girando. É texto unidirecional do servidor para o cliente sobre HTTP puro, que é exatamente o formato do SSE e precisamente por isso o streaming de LLM o usa em vez de WebSockets. A consequência no backend: seu proxy precisa fazer o stream atravessar — lendo o event stream do provedor e repassando-o — em vez de bufferizar a resposta inteira e anular o propósito.

Tool calling e saída estruturada

Duas funcionalidades transformam “texto entra, texto sai” em algo programável. Tool calling: você descreve as funções disponíveis (nome + schema JSON) na requisição e o modelo — em vez de prosa — retorna uma chamada JSON estruturada nomeando uma tool e seus argumentos; seu código a executa e devolve o resultado (o passo a passo do Fowler é a referência clara). O modelo nunca executa a função; ele apenas pede. Saída estruturada, distinta de tool calling e frequentemente confundida com ele, são três coisas que valem separar:

MecanismoGarantiaUse para
Modo JSONJSON válido — mas de qualquer formatoNecessidades soltas de “me dê JSON”
Structured OutputsCorresponde exatamente ao seu schemaExtração, classificação, dados tipados
Tool callingUma chamada à sua funçãoFazer coisas, não só formatar

Tool calling é o mecanismo que torna um agente de IA possível — a mesma requisição/resposta, rodada em loop até o modelo parar de pedir tools.

API de LLM vs. auto-hospedar um modelo aberto

API de LLM hospedadaModelo aberto auto-hospedado
InfraestruturaNenhuma — o provedor a operaGPUs, stack de serving, ops
CobrançaPor token, pague pelo usoCapacidade fixa, sua para preencher
Tempo para lançarMinutosDias a semanas
Residência de dadosOs termos do provedorTotalmente sua
Custo em volume baixo/com picosO mais baratoGPUs ociosas queimam dinheiro
Custo em volume extremo e sustentadoPode exceder o self-hostingVence depois do break-even

A leitura honesta: a API vence para quase todo mundo quase sempre — zero infraestrutura, início instantâneo e mais barata até o volume ser genuinamente grande e constante. Auto-hospedar um modelo aberto (com Ollama, vLLM ou llama.cpp) só paga seu custo operacional depois de um break-even alto, ou quando residência de dados é requisito rígido. A maioria dos produtos começa na API e revisita a pergunta se a escala um dia obrigar.

Confiabilidade: endpoints de LLM são instáveis

Trate a API de LLM como uma dependência remota lenta, limitada por taxa e que falha de vez em quando, porque é isso que ela é. Os limites chegam como requisições por minuto e tokens por minuto; exceda qualquer um e você recebe um 429. A disciplina é a mesma que toda API com rate limit exige: num 429 ou num 5xx, faça retry com backoff exponencial mais jitter e honre o Retry-After; num 4xx — autenticação ruim, requisição malformada, recusa por política de conteúdo — não faça retry, porque vai falhar de forma idêntica. Some timeouts por requisição (a geração pode travar) e lembre que uma chamada não idempotente repetida custa tokens duas vezes. Nada disso é específico de LLM; tudo isso é pulado pelos tutoriais que param no curl do caminho feliz.

A regra que os tutoriais enterram: nunca chame do cliente

O fato operacional mais importante, e o que as páginas de glossário omitem: a chamada à API de LLM pertence ao seu servidor, nunca ao browser ou ao app. Uma chave de API de modelo embarcada no cliente está a uma olhada na aba de rede ou a um decompile de binário de ser roubada — e, ao contrário de uma chave publicável vazada, uma chave de modelo roubada é um estranho com o seu orçamento de tokens e nenhum limite além da sua fatura. O padrão é a mesma disciplina de proxy que todo serviço com chave secreta precisa: o cliente chama o seu endpoint, seu backend guarda a chave na configuração do servidor e chama o modelo, e a resposta volta através de você. Esse proxy também é onde vive todo outro controle deste artigo — tetos de custo, retries, streaming, poda de prompt — e é por isso que “para onde vai a chamada?” tem uma resposta só.

Casos de uso comuns

  • Resumo e extração — transforme texto longo em dados curtos e estruturados, temperature: 0.
  • Chat e assistentes — respostas em streaming sobre um histórico de conversa reenviado.
  • Classificação e tagging — Structured Outputs impondo o seu schema de rótulos.
  • Respostas com RAG — geração ancorada em contexto recuperado, com custo administrado aparando esse contexto.
  • Ações agênticas — tool calling em loop, cada tool uma função de backend com permissões.

Você deveria usar uma API de LLM? Matriz de decisão

SituaçãoEscolha
Lançar uma funcionalidade de IA agoraUma API de LLM — zero infraestrutura
Qualquer app voltado ao clienteA API, chamada no servidor — nunca do dispositivo
Volume extremo e sustentadoAvalie self-hosting (Ollama, vLLM) depois do break-even
Residência de dados estritaAuto-hospede, ou um provedor com as garantias certas
Tarefa determinística, baseada em regrasTalvez nenhum LLM — código comum é mais barato e confiável
O modelo precisa fazer coisasTool calling → um agente

Limitações e trade-offs

  • Não-determinismo é o padrão. O mesmo prompt varia entre execuções; qualquer coisa que exija repetibilidade exata precisa de temperature: 0 e, com frequência, validação da saída.
  • O custo escala com os tokens, silenciosamente. Um contexto generoso ou um max_tokens sem teto torna cara em volume uma funcionalidade barata — meça o uso, não o presuma.
  • A latência é de segundos, não de milissegundos. Chamadas de LLM são lentas para os padrões da web; projete para isso com streaming, padrões assíncronos e estados de loading honestos.
  • A dependência é externa e limitada por taxa. Outages e throttling do provedor são os seus outages; retries, fallbacks e cache são resiliência, não polimento.
  • As saídas podem estar erradas com confiança. A API retorna texto fluente independentemente da verdade; ancoragem (RAG) e validação são como você passa a confiar nela.

APIs de LLM no Back4app

O Back4app é uma plataforma open-source de Backend as a Service (BaaS) que combina banco de dados gerenciado, APIs REST e GraphQL geradas automaticamente, autenticação, armazenamento de arquivos e funções serverless com Cloud Code. A pergunta “onde a chamada pertence” se responde sozinha aqui: dentro de uma Cloud Function, exatamente como mostram as abas de código — o cliente chama o seu summarize, a função guarda a chave do modelo na configuração do servidor e chama a API de LLM, e a chave nunca toca o dispositivo. Esse único posicionamento resolve a lista de lacunas inteira de uma vez: tetos de custo (a função define max_tokens e escolhe o modelo), retries e backoff (na função, contra o endpoint instável) e entrega de dois jeitos — retorne a resposta de forma síncrona para uma resposta única, ou grave-a no banco e deixe os clientes assistirem a ela se preencher via Live Queries, que é streaming sem um socket que você precisou construir. A API de LLM deixa de ser um risco de integração e vira mais uma chamada server-side que o seu backend já sabe fazer com segurança.

Perguntas frequentes

O que é uma API de LLM?

Um endpoint HTTP que permite ao seu código enviar um prompt a um grande modelo de linguagem hospedado e receber texto gerado de volta — sem rodar o modelo, as GPUs ou a infraestrutura de inferência por conta própria. Você faz POST de um corpo JSON, recebe uma mensagem do assistente mais a contagem de tokens usados, e paga por token.

O que é um token e como o preço é calculado?

Um token é um pedaço de texto — cerca de quatro caracteres ou três quartos de uma palavra em inglês. Você paga por milhão de tokens, com tarifas separadas para entrada (seu prompt) e saída (a resposta gerada). A saída tipicamente custa várias vezes mais que a entrada, porque gerar cada token exige mais computação do que ler um.

O que é a janela de contexto?

O número máximo de tokens — entrada mais saída — que um modelo consegue considerar numa requisição. Ela limita quanto histórico de conversa ou documento você pode incluir e é um vetor direto de custo: cada chamada paga por todo o contexto enviado, então um histórico longo ou um trecho recuperado grande é dinheiro gasto a cada requisição.

O que é streaming e por que as UIs de chat o usam?

Ativar a flag de stream faz a resposta chegar de forma incremental, como Server-Sent Events, em vez de um bloco final único, e a UI renderiza os tokens conforme são gerados. Ele existe pela latência percebida: o tempo até o primeiro token é uma fração do tempo até a resposta completa, então o usuário vê palavras imediatamente em vez de um spinner por vários segundos.

O que é function calling ou tool calling?

Você descreve as tools disponíveis — um nome e um schema JSON — na requisição; o modelo, em vez de responder em prosa, retorna uma chamada JSON estruturada nomeando uma tool e seus argumentos. Seu código a executa e devolve o resultado. O modelo nunca executa a função; apenas a solicita. Esse é o mecanismo que transforma uma API de LLM num agente.

A API de LLM deve ser chamada do cliente ou do servidor?

Do servidor, sempre. Uma chave de API embarcada num bundle de browser ou binário mobile está a uma inspeção da aba de rede ou a um decompile de ser roubada — e uma chave de modelo roubada é um estranho gastando o seu orçamento de tokens. Toda chamada de LLM passa pelo seu backend, com a chave na configuração do servidor.

API de LLM ou auto-hospedar um modelo aberto?

Uma API significa zero infraestrutura, cobrança por chamada e lançar hoje; auto-hospedar um modelo aberto (com ferramentas como Ollama, vLLM ou llama.cpp) compra controle total e residência de dados, mas só vence em custo com volume muito alto e sustentado, depois de contar GPUs e operação. A maioria dos produtos começa na API e revisita a conta na escala.

Como lidar com rate limits e falhas?

Os limites vêm como requisições por minuto e tokens por minuto; num 429 ou num 5xx, faça retry com backoff exponencial mais jitter e honre o header Retry-After, se houver. Não faça retry de erros 4xx — autenticação ruim, requisição malformada e recusas por política de conteúdo vão falhar de forma idêntica na segunda vez.

Termos relacionados

Compare com

Leitura adicional

Pronto para construir seu backend?

Comece seu projeto no Back4app em minutos — banco de dados, autenticação, APIs e Cloud Code incluídos. Sem cartão de crédito.

Escrito e revisado por Back4app Engineering, Back4app Engineering · Publicado em 2026-08-21