O que é o llama-crab?¶
llama-crab é um crate Rust (na verdade um workspace de dois crates) que
oferece uma API 100% segura em Rust sobre o llama.cpp.
Você pode carregar qualquer modelo GGUF, executar completions de texto
e chat, calcular embeddings, restringir a geração com uma gramática GBNF,
acionar modelos visão-linguagem através do mtmd, ou expor tudo via HTTP
— tudo isso sem tocar em um único bloco unsafe no nível da aplicação.
-
Comece em 5 minutos
Carregue um modelo e gere uma completion com poucas linhas.
-
Execute em qualquer hardware
CPU, Metal, CUDA, Vulkan, ROCm, OpenCL e KleidiAI — escolha seu backend em tempo de compilação e descarregue quantas camadas couberem na VRAM.
-
Distribua em celulares e tablets
Perfis
release-sizeerelease-perf, OpenCL + KleidiAI para Android, Metal para iOS, eMobilePresetpara padrões sensatos. -
Visão e áudio
Combine um GGUF de texto com um projetor
mmproje alimente imagens ou áudio no mesmo contexto. -
Embeddings e reranking
Extraia vetores com pooling configurável, faça busca semântica ou use um cross-encoder para ranqueamento de alta qualidade.
-
Servidor HTTP pronto
llama-crab-serverexpõe a API de alto nível através de uma interface HTTP compatível com OpenAI, com streaming SSE.
Um gostinho da API¶
use llama_crab::{Llama, LlamaParams};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut llama = Llama::load(
LlamaParams::new("models/qwen2.5-0.5b-instruct-q4_k_m.gguf")
.with_n_ctx(2048)
.with_n_gpu_layers(99),
)?;
let response = llama.create_completion("The capital of France is", 32)?;
println!("{}", response.text);
Ok(())
}
use llama_crab::chat::BuiltinTemplate;
use llama_crab::high_level::chat_completion::{create_chat_completion_with, ChatMessage};
use llama_crab::{Llama, LlamaParams, Role};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut llama = Llama::load(
LlamaParams::new("models/instruct.gguf").with_n_ctx(4096),
)?;
let messages = vec![
ChatMessage::new(Role::System, "You are a concise assistant."),
ChatMessage::new(Role::User, "Explain Rust ownership in one paragraph."),
];
let response = create_chat_completion_with(
&mut llama,
&messages,
BuiltinTemplate::ChatMl,
&[],
128,
)?;
println!("{}", response.content);
Ok(())
}
use llama_crab::{Llama, LlamaParams};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut llama = Llama::load(
LlamaParams::new("models/bge-small-en-v1.5-q4_k_m.gguf")
.with_n_ctx(512)
.with_embeddings(true),
)?;
let embedding = llama.embed("Rust is memory-safe.", true)?;
println!("dim = {}", embedding.len());
Ok(())
}
Por que llama-crab?¶
llama-crab foi desenhado para aplicações que precisam acessar o
llama.cpp diretamente sem abrir mão da segurança, do empacotamento e
da disciplina de deploy do Rust.
-
Seguro por padrão
A API de alto nível não expõe superfície
unsafe. As fronteiras FFI ficam atrás de wrappers tipados, e o acesso bruto continua opt-in para os casos que realmente precisam dele. -
Superfície de recursos completa
Amostragem, formatos de chat, pipelines de visão, gramáticas por JSON-Schema, decodificação especulativa, embeddings, reranking e fluxos de cache KV ficam disponíveis por APIs seguras em Rust.
-
Builds reproduzíveis
O
llama.cppfica fixado em um commit conhecido, o build explicita os backends habilitados, e a CI mantém visíveis as combinações CPU / CUDA / Vulkan / Metal / ROCm suportadas. -
Performance em primeiro lugar
Offload de camadas, flash attention, presets mobile, cadeias de amostragem, decodificação especulativa e parsers de tool-call ficam expostos sem exigir kernels customizados no código da aplicação.
Crates neste workspace¶
| Crate | Propósito | Quando usar |
|---|---|---|
llama-crab |
API 100% segura em Rust: carregamento de modelo, amostragem, chat, embeddings, cola do servidor. | Maioria das aplicações. Este é o crate do qual você depende. |
llama-crab-sys |
FFI bruta gerada via bindgen sobre wrapper.h + CMake. |
Quando você precisa de acesso direto a símbolos do llama.cpp que o crate seguro ainda não encapsula. |
llama-crab-server |
Binário HTTP construído sobre llama-crab. |
Quando você quer um endpoint compatível com OpenAI sem escrever um. |
Licença¶
llama-crab é distribuído sob a Licença MIT. Veja
LICENSE-MIT
para o texto completo.
Por onde começar?
- Instale o crate e verifique sua toolchain.
- Leia a visão geral da arquitetura para entender os principais blocos de construção.
- Dê uma olhada no índice de exemplos e copie o que mais se aproxima do que você quer construir.
