Skip to content

CH 16 · Deploy Local e Liberdade de Token

Número de palavras~3.650 palavrasTempo~25 minPré-requisitoCH 06 (Custom Provider)NívelReproduzível

Objetivo do capítulo

Em todos os capítulos anteriores, você estava chamando a API oficial da DeepSeek — útil, mas cobrada por token, e sessões de Agent em particular comem muitos tokens (todo resultado de ferramenta precisa ser devolvido ao contexto). E isso não é só um problema da DeepSeek: contanto que você passe por uma API na nuvem, seja oficial ou de terceiros, você não escapa da cobrança por token.

Este capítulo te dá um caminho completamente diferente: deploy local. Baixe um modelo open-source para o seu próprio computador e rode; toda a inferência não passa por nenhum servidor de terceiros — sem fatura de token, verdadeira "Liberdade de Token".

O método que você já aprendeu no CH 06: o dsh só reconhece "endpoints compatíveis com OpenAI", e o modelo é uma configuração, não um vínculo. Este capítulo aplica essa capacidade a um cenário real — deixe o dsh rodar no seu próprio modelo.

Como deploy local difere da nuvem

Primeiro esclareça "por que deploy local é grátis". Quando você usa a API oficial da DeepSeek, prompts, resultados de ferramentas e conteúdo de arquivos são todos enviados para o servidor dela, que usa a própria GPU para inferência, e depois cobra por token. Toda API na nuvem é assim: o compute pertence a outra pessoa, e a fatura segue os tokens.

Deploy local é o oposto: o modelo é baixado para o seu computador, a inferência roda na sua própria GPU/CPU, nenhum servidor de terceiros está envolvido. O compute é seu, a eletricidade é sua, então naturalmente não há cobrança por token — é isso que "Liberdade de Token" realmente significa.

DimensãoAPI na nuvem (ex. DeepSeek oficial)Deploy local (LM Studio rodando modelo open-source)
CobrançaPor tokenGrátis (só custo de eletricidade)
RedePrecisa conectar à internetPode ser totalmente offline
DadosEnviados para o servidor do provedorFicam na sua máquina
CapacidadeModelo flagship, mais forteDepende de quão grande um modelo sua GPU consegue rodar
Custo de entradaZero, registre-se e você tem uma KeyInstalar software, baixar modelo (vários GB)

A marca do deploy local em uma frase: grátis, offline, privado, mas a capacidade é limitada pelo seu hardware — quanto mais forte sua GPU, maior o modelo que você consegue rodar, melhor o resultado.

Princípio: modelo é configuração

Por que o dsh consegue trocar de modelos à vontade é o plugin de roteamento de modelo llm-pi-ai: ele trata o "provedor de modelo" como uma configuração YAML; qualquer endpoint que exponha o protocolo OpenAI Chat Completions (ou seja, /v1/chat/completions) pode ser conectado como um provider. Trocar de modelo = trocar uma configuração, sem precisar mudar o dsh em si.

O dsh só reconhece endpoints compatíveis com OpenAI

Então deploy local e conexão com a API oficial, o método é o mesmo do CH 06, apenas com um endereço de endpoint diferente:

DireçãoBase URLKeyModelo típico
DeepSeek oficial (nuvem)https://api.deepseek.comKey oficialdeepseek-v4-flash etc.
LM Studio localhttp://localhost:1234/v1Qualquer coisa (local ignora)Qwen3 8B etc.

Conecte um modelo local: onboarding com LM Studio

Passo 1: instale o LM Studio, baixe um modelo

Runners de modelo local não são apenas um: se você é familiar com Ollama, também pode usar Ollama direto (onboarding por linha de comando, o método de configuração é idêntico ao abaixo). Este capítulo usa LM Studio uniformemente para a demo — com interface gráfica, o mais amigável para iniciantes.

O LM Studio suporta Windows / macOS / Linux; vá ao site do LM Studio para baixar o instalador. Depois de instalar, não tente adivinhar qual modelo baixar, deixe isso para o dsh — ele vai checar o ambiente do seu computador e então recomendar para você. Mande isso na caixa de entrada da Web UI:

text
Cheque a GPU e VRAM do meu computador, estime em quantização Q4 qual o tamanho de modelo local que dá para rodar confortavelmente; recomende 2~3 modelos adequados para Agent local (precisa suportar tool calling), dê nomes de modelos que podem ser pesquisados diretamente na caixa de busca do LM Studio, cada um com uma frase de razão. Apenas consultar e recomendar, nenhuma outra operação.

O dsh vai ler a sua GPU e listar alguns nomes específicos de modelos. Pegue os nomes e pesquise no LM Studio.

Abra o LM Studio: Settings canto inferior esquerdo → Explorer, na caixa de busca pesquise pelo nome do modelo que o dsh recomendou. Marcado com label verde (indicando compatível com seu hardware, offload total de GPU) nos resultados da busca é o que sua máquina consegue rodar, basta clicar para baixar.

Página Explorer do LM Studio: pesquisa por Gemma 4 E2B, marcado com full GPU offload e recursos vision / tools / thinking

Um lembrete imutável: para modelos locais rodando um Agent, a capacidade de tool calling é mais importante que pontuações de benchmark — o modelo precisa ser capaz de seguir instruções para chamar ferramentas, senão o Agent não consegue girar.

Passo 2: abra o Local Server, confirme que o endpoint está vivo

Depois que o modelo for baixado, no LM Studio Settings canto inferior esquerdo → Local Models → Local Model API (Local Server), ative o switch Local API server. Por padrão ele escuta em http://localhost:1234, e o endpoint compatível com OpenAI está em /v1 — a página mostrará diretamente a base URL http://localhost:1234/v1; quando vir "running" o servidor está no ar.

Servidor de API do modelo local do LM Studio: running, base URL é localhost:1234/v1

Abra no navegador:

http://localhost:1234/v1/models

Se vir um JSON listando seu modelo baixado, o endpoint está ok. Esta etapa também deixa você ver o ID exato de cada modelo (use o que foi retornado aqui; por exemplo, o Gemma 4 E2B que baixei aparece como gemma-4-e2b-it-qat), que você precisará preencher na configuração depois.

JSON da lista de modelos retornado por localhost:1234/v1/models

Parâmetros do modelo na Resource Library

Quer ver com quais parâmetros o modelo roda? Settings canto inferior esquerdo → Local Models → Resource Library, encontre seu modelo, clique no botão Settings ao lado direito, e a página "Model Default Settings" vai abrir:

Resource Library do LM Studio: minha lista de modelos, Gemma 4 E2B Instruct QAT 4.34GB

Model Default Settings do LM Studio: Automatic Optimize Based on Hardware etc., todos padrão

É dividido em três seções: Prompt, Context & Performance, Generation. Automatic Optimize Based on Hardware (RECOMMENDED) está ligado por padrão; comprimento de contexto, GPU offload etc. estão todos AUTO — o LM Studio vai ajustá-los baseado no seu computador. A demo deste capítulo usa todos os defaults, não precisa mudar nenhum; volte aqui depois se quiser ajustar.

Passo 3: adicione um "Custom Provider" no dsh

Seguindo o método 2 do CH 06: Settings → Models → Add Custom Provider, preencha:

CampoO que preencher
Provider IDlm-studio-local (minúsculas)
Endereço da APIhttp://localhost:1234/v1
Protocolo da APIOpenAI Chat Completions compatível
KeyPreencha qualquer coisa (local não valida, lm-studio serve como placeholder)
ModeloO ID completo de /v1/models no passo anterior

Settings → Models → Add Custom Provider do dsh: Provider ID lm-studio-local, endereço da API http://localhost:1234/v1, protocolo openai-completions, modelo gemma-4-e2b-it-qat

Efeito e gestão de expectativas

  • Benefícios: completamente offline, zero taxas de API, código e docs ficam na sua máquina — para cenários sensíveis à privacidade, o modelo local é a única escolha.
  • Realidade: um modelo local pequeno é para "rodar pelo loop", não para trabalho pesado. Agents em particular comem tool calling e contexto longo; modelos pequenos têm mais chance de errar chamadas de ferramenta e planejar mal do que modelos flagship. É muito adequado para testes durante o desenvolvimento de plugins; para trabalho real, volte para um modelo na nuvem.

O Gemma 4 E2B deployado nesta demo é um modelo de visão (Google oficial: E2B tem um encoder de visão, suporta entrada de imagem) — mas para ele realmente receber imagens e fazer OCR no dsh, é necessária mais uma declaração: o custom provider do dsh trata como texto plano por padrão; sem a declaração, imagens são rejeitadas como entrada inválida (coberto no CH 06). Como fazer: na janela de settings do dsh clique no canto superior direito em Open config file, encontre llm-pi-ai.providers.lm-studio-local.models e o modelo correspondente, adicione uma linha input: [text, image]:

yaml
llm-pi-ai:
  providers:
    lm-studio-local:
      apiKeyEnv: LM_STUDIO_API_KEY
      api: openai-completions
      baseURL: http://localhost:1234/v1
      models:
        - id: gemma-4-e2b-it-qat
          input: [text, image]

Depois de salvar, reinicie a sessão, mande uma imagem para ele e ele consegue fazer OCR.

No dsh, selecione gemma-4-e2b-it-qat para uma nova sessão, peça para ele fazer uma tarefa simples e responder normalmente

Tool calling também funciona: na demo mandei "crie um arquivo txt dizendo quem você é", e o modelo realmente chamou a ferramenta write — errou e tentou de novo algumas vezes, e por fim escreveu com sucesso identity.txt. Isso prova que o modelo local consegue realmente rodar o loop de ferramentas do dsh, não só conversar; só não é tão estável quanto o flagship, com mais erros.

Modelo local chama a ferramenta write para criar arquivo txt: erro, retry e depois sucesso

Local ou nuvem: como escolher

CenárioEscolha
Trabalho diário, quer o melhor resultadoAPI na nuvem (por token, fácil)
Tarefas diárias simples, ex. o briefing de hot-topics agendado com aihot antesModelo local LM Studio (offline, grátis)

Eles não são mutuamente excludentes: o dsh pode ter vários providers montados ao mesmo tempo, e você pode trocar numa nova sessão à vontade. Quando sensível ao custo, roteie sessões diárias para flash e deixe o trabalho pesado para pro — a postura mais simples de economia; o modelo local sustenta cenários de teste e privacidade.

Armadilhas comuns

ArmadilhaComo evitar
Base URL digitada erradaEndpoints compatíveis com OpenAI geralmente terminam em /v1; primeiro abra GET {baseURL}/models no navegador para verificar
Variável de ambiente da Key não definidaapiKeyEnv apenas referencia, não cria; confirme que o ambiente no qual o dsh inicia consegue realmente ler essa variável
Model ID não bateModelos locais precisam usar o ID completo retornado por /v1/models (vendor/model-name), não preencha com base na memória
Erro de imagem, diz que não suporta OCRO modelo do custom provider é tratado como texto plano por padrão — mesmo que o modelo em si suporte OCR, é preciso adicionar input: [text, image] na config do provider
Modelo local continua errando tool callsNão é problema de configuração, é o limite de capacidade do modelo pequeno — volte para modelos na nuvem ou troque por um modelo local maior

O que você aprendeu neste capítulo

  • [ ] Dizer "modelo é configuração": o dsh só reconhece endpoints compatíveis com OpenAI, trocar modelo = trocar uma configuração de provider
  • [ ] Dizer a diferença essencial entre deploy local e API na nuvem: por que é grátis (compute é seu), offline, dados ficam na sua máquina
  • [ ] Saber como usar o LM Studio para baixar um modelo, ativar o servidor local, e confirmar que localhost:1234/v1/models está vivo
  • [ ] Saber como adicionar o custom provider lm-studio-local no dsh e rodar com sucesso uma sessão local
  • [ ] Saber que modelos de visão precisam de input: [text, image], saber que modelos locais pequenos são adequados para testes não para trabalho pesado

Open Source · MIT · Community Driven