Segundo de cinco posts sobre gateway de IA. Antes: por que existe. Depois: quanto custa em latência e onde o modelo local entra.


Resumo

  • Baixe o stack — cinco arquivos, docker compose up -d.
  • Do lado da aplicação, a mudança inteira é trocar api.openai.com pelo gateway e o nome do modelo por um alias de tarefa.
  • O Langfuse custa quatro serviços a mais. Comece sem ele.
  • A parte que mais importa no arquivo são duas linhas, e estão na seção 3.

1. Os seis serviços

Contêineres do gateway: o essencial de um lado, a observabilidade opcional do outro.

litellm, postgres, langfuse, clickhouse, redis e minio. Só os dois primeiros fazem o trabalho do gateway.

LiteLLM + Postgres é o gateway. O Postgres guarda chave virtual e gasto acumulado — sem ele o LiteLLM roda, mas você perde exatamente as duas coisas pelas quais montou a camada.

Langfuse é a observabilidade: rastro de requisição e resposta, custo por trace calculado a partir do uso de token, versionamento de prompt, avaliação. Integra nativamente com o LiteLLM — duas linhas de callback no YAML.

E a parte que a documentação não coloca em destaque: o Langfuse 3.x precisa de Postgres, ClickHouse, Redis e storage compatível com S3. Quatro serviços só para observabilidade. Não é "mais um container".

Comece sem o Langfuse. O painel do próprio LiteLLM já mostra gasto por chave, por modelo e por time, que é o que responde a primeira pergunta que alguém vai fazer. Adicione quando a pergunta que você precisa responder deixar de caber ali — e nesse momento você vai saber exatamente por que está pagando o custo operacional.

2. Subir

cp .env.example .env    # troque TODOS os valores
docker compose up -d

LiteLLM em localhost:4000, com painel em /ui. Langfuse em localhost:3000.

São cinco arquivos, não quatro — o init-langfuse-db.sh é montado pelo compose e sem ele o banco do Langfuse não sobe. Estão todos linkados na seção 6.