simple — Completion de texto simples¶
O menor programa possível: carregue um modelo, gere uma completion, imprima o resultado. Use como ponto de partida para uma ferramenta CLI one-shot ou como template quando quiser controle total sobre a cadeia de sampler.
Execute¶
O primeiro argumento posicional é o caminho para um modelo GGUF.
O que ele faz¶
use llama_crab::{Llama, LlamaParams};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut llama = Llama::load(
LlamaParams::new("modelo.gguf")
.with_n_ctx(2048)
.with_n_gpu_layers(99),
)?;
let resp = llama.create_completion("Era uma vez", 64)?;
println!("{}", resp.text);
Ok(())
}
Saída esperada¶
O texto real depende do modelo. O ponto do exemplo é a forma do programa: poucas linhas, sem cerimônia, todos os padrões aplicados.
Customizando a chamada¶
Passe [CompletionOptions] ao helper de alto nível para expor o
resto da cadeia de sampler:
use llama_crab::{CompletionOptions, Llama, LlamaParams};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut llama = Llama::load(LlamaParams::new("modelo.gguf"))?;
let resp = llama.create_completion_with_options(
"Era uma vez",
CompletionOptions::new(64)
.with_temperature(0.7)
.with_top_p(0.9, 1)
.with_stop_sequence("\n\n"),
)?;
print!("{}", resp.text);
Ok(())
}
Veja o guia de completions de texto para o menu completo de opções.
Usando uma cadeia de sampler customizada¶
Para controle total, construa uma [SamplerChain] e chame
create_completion_with_sampler:
use llama_crab::sampling::SamplerChain;
use llama_crab::{CompletionOptions, Llama, LlamaParams};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut llama = Llama::load(LlamaParams::new("modelo.gguf"))?;
let mut sampler = SamplerChain::new()
.temp(0.7)
.top_p(0.9, 1)
.min_p(0.05, 1)
.penalties(64, 1.1, 0.0, 0.0)
.build();
let resp = llama.create_completion_with_sampler(
"Era uma vez",
CompletionOptions::new(64),
&mut sampler,
)?;
print!("{}", resp.text);
Ok(())
}
Veja o guia de estratégias de amostragem para o menu completo de samplers e cadeias recomendadas.