Ir para o conteúdo

Funcionalidades

Esta seção documenta cada funcionalidade pública da API do llama-crab. Cada página vai ponta a ponta: o porquê, o como, as armadilhas e um exemplo executável completo.

  • Completions de texto

    Prompt simples → texto. Sequências de parada, log-probabilidades, streaming, best-of-N e FIM (fill-in-the-middle) para código.

  • Chat & tool calling

    Mensagens baseadas em papel, 14 templates Jinja2 embutidos, um renderizador de subconjunto Jinja2, o parser de tool-call para ChatML / Mistral / Llama 3 / Functionary, e parsing incremental.

  • Multimodal (visão + áudio)

    Combine um GGUF de texto com um projetor mmproj, decodifique imagens locais em MtmdBitmap, avalie chunks multimodais e continue a geração com a cadeia de sampler normal.

  • Embeddings & reranking

    Pooling Mean / CLS / Last, vetores L2-normalizados, busca semântica e o helper cross-encoder Llama::rerank.

  • JSON-Schema & gramáticas GBNF

    Converta um documento JSON Schema 2020-12 em uma gramática GBNF e use o sampler de gramática para forçar o modelo a emitir apenas saída válida. A maneira mais confiável de obter dados estruturados de um modelo.

  • Decodificação especulativa

    O modelo de rascunho PromptLookupDecoding (sem pesos extras) e o trait DraftModel para plugar seu próprio rascunho. A função livre speculative_decode dirige o passo de verificação.

  • Chat com estado

    Chat multi-turno com um histórico crescente. Auto-detecção de template, estratégias de corte de histórico e persistência de sessão.

Escolhendo a funcionalidade certa para o trabalho

flowchart TD
    Q{O que você está construindo?}
    Q -->|Completions de código| A[Completions de texto]
    Q -->|Chatbot / agente| B[Chat & tool calling]
    Q -->|Q&A de imagem / áudio| C[Multimodal]
    Q -->|Busca / clustering| D[Embeddings & reranking]
    Q -->|Extraindo dados estruturados| E[Gramáticas]
    Q -->|Geração long-form| F[Decodificação especulativa]
    Q -->|Assistente persistente| G[Chat com estado]

Se você não tem certeza por onde começar, o exemplo quickstart percorre plain completion, chat, FIM e embeddings em um único programa de ~80 linhas.