De LLM a Agente: Entendendo as Camadas Entre o Modelo e a Aplicação
Google/DeepMind
OpenAI
Mistral
Este artigo explora as camadas entre um LLM e uma aplicação agente, começando pela tokenização, amostragem e cache KV, passando por templates de chat e Jinja, até formatos de armazenamento de modelo e runtimes como llama.cpp. Ele explica armadilhas comuns, como tokens de raciocínio consumindo o orçamento de geração e problemas de comprimento de contexto.
O artigo descreve o caminho completo de um Modelo de Linguagem Grande (LLM) a um agente. Na essência, o modelo prevê o próximo token em um loop autorregressivo, usando um tokenizador para converter texto em IDs de token e um detokenizador para converter de volta. A cache de valores-chave (KV-cache) acelera a geração armazenando pares de chave-valor anteriores. O texto de entrada esperado pelo modelo não é JSON bruto, mas sim um prompt formatado de acordo com o template de chat do modelo, que é um template Jinja que converte uma lista de mensagens em uma string com tokens especiais (por exemplo, ChatML, Llama 3). Para modelos de raciocínio, o prompt pode incluir um bloco <think>; se o modelo gastar muitos tokens no raciocínio, pode ficar sem orçamento de geração antes de produzir uma resposta final. O artigo também explica que a cobrança e o comprimento do contexto são baseados no prompt tokenizado após o template de chat, não no JSON da interface de programação de aplicação (API). O armazenamento do modelo em disco inclui pesos safetensors, config.json, arquivos de tokenizador e o chat_template em tokenizer_config.json. Runtimes como o llama.cpp carregam um arquivo GGUF que agrupa esses componentes, fornecendo uma interface de alto nível de texto para texto.
Fonte: Habr — хаб ML —
original
