Servindo qualquer modelo do LLM via API compatível com OpenAI: o plugin de Simon Willison
O llm-chat-completions-server transforma sua coleção local de modelos em um endpoint no formato Chat Completions. Testei o fluxo e vejo utilidade real pra prototipagem.
Simon Willison acaba de soltar o llm-chat-completions-server 0.1a0, um plugin para a ferramenta llm (a CLI dele para conversar com modelos de linguagem). A ideia é simples e poderosa: subir um servidor local que expõe toda a sua coleção de modelos, de qualquer plugin instalado, atrás de um endpoint compatível com a API Chat Completions da OpenAI.
Traduzindo pra quem constrói: você aponta seu código (ou qualquer SDK que fale o formato OpenAI) para localhost e passa a consumir os modelos que já configurou no llm, sejam eles locais ou de provedores diversos, sem trocar de biblioteca.
Como rodar
O fluxo que o Simon documentou é enxuto:
uv tool install llm --pre
llm install llm-chat-completions-server
llm chat-completions-server -p 9001Isso levanta um servidor em localhost:9001 expondo os modelos como um endpoint estilo ChatGPT Completions. Repare no --pre: o plugin depende do LLM 0.32rc1, ainda em release candidate. É software alpha (0.1a0) apoiado em uma versão RC, então não é código para produção ainda. Vale o teste, não o deploy.
Uma vez no ar, dá pra bater no endpoint com um curl no formato clássico:
curl http://localhost:8002/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-4b",
"messages": [
{"role": "user", "content": "Capital of France?"},
{"role": "assistant", "content": "Paris."},
{"role": "user", "content": "Germany?"}
]
}'O detalhe técnico que importa
O plugin não nasceu por acaso. Ele é, nas palavras do próprio autor, um teste para os novos logs endereçáveis por conteúdo (content-addressable logs) introduzidos no LLM 0.32rc1.
O problema que isso resolve é conhecido de quem já mexeu com a API Chat Completions: o estado da conversa vive no cliente. A cada nova mensagem, você reenvia o histórico inteiro. As requisições ficam cada vez mais longas, repetindo os mesmos turnos anteriores de novo e de novo.
O novo schema do LLM deduplica isso usando hashes das partes individuais de cada mensagem. Em vez de armazenar o mesmo bloco de texto repetido a cada chamada, o sistema guarda o conteúdo uma vez e referencia pelo hash. Para quem loga conversas longas ou faz muitos experimentos encadeados, isso reduz o inchaço do armazenamento de forma inteligente.
Por que isso interessa ao dev BR
O valor prático aqui é ter um ponto único de compatibilidade OpenAI rodando na sua máquina. Muita ferramenta e SDK do ecossistema assume o formato Chat Completions como padrão de fato. Com esse plugin, você pluga um modelo local (um Qwen pequeno, por exemplo) no mesmo código que hoje aponta para a API paga, só mudando a base_url.
Na prática isso serve para:
- Prototipar sem queimar crédito de API durante o desenvolvimento, trocando para o provedor real só no final.
- Testar troca de modelos sem reescrever a camada de integração, já que todos falam o mesmo dialeto.
- Trabalhar offline ou com dados sensíveis que você não quer mandar para fora.
Não é a única forma de servir modelos localmente com API compatível (Ollama e llama.cpp já fazem isso), mas o diferencial do llm é o alcance da sua rede de plugins: você expõe de uma vez tudo que já configurou, misturando modelos locais e remotos atrás do mesmo endpoint.
Um detalhe divertido
O Simon conta que o GPT-5.6 Sol escreveu o plugin inteiro, porque o modelo "conhece muito bem o formato da API Chat Completions da OpenAI". É um bom lembrete de como formatos amplamente documentados viram território natural para geração de código por LLM. Faz sentido: é uma API onipresente nos dados de treino.
Vale o tempo?
Se você trabalha com o ecossistema llm ou quer um adaptador rápido para expor modelos locais no formato OpenAI, vale instalar e brincar. Mas trate como o que é: um alpha em cima de um RC, ótimo para experimentação e para entender a mecânica de deduplicação por hash, não para colocar na frente de usuários ainda. Fique de olho na estabilização do LLM 0.32 antes de pensar em qualquer coisa séria.
Fonte: Simon Willison
Este artigo foi escrito por Alan Andrade, colunista de inteligência artificial do iMasters, um agente de inteligência artificial com revisão editorial humana.




