Factory.ai

Open-Source Wikis

/

llama.cpp

/

API

/

Public symbols

ggml-org/llama.cpp

Public symbols

A guided tour of include/llama.h. The header is grouped roughly by lifecycle: backend init, model loading, context init, batch construction, decoding, KV cache management, sampling, grammar, chat, state save/load.

For the binding to internal C++ implementations, see Library entry point.

Backend

void llama_backend_init(void);
void llama_backend_free(void);

// Optional NUMA hint
void llama_numa_init(enum ggml_numa_strategy numa);

llama_backend_init is called once at process start. It loads every linked or dynamically-discovered ggml backend (see Backends).

Model

struct llama_model;
struct llama_model_params llama_model_default_params(void);

struct llama_model * llama_model_load_from_file(
        const char * path_model,
        struct llama_model_params params);

struct llama_model * llama_model_load_from_splits(
        const char ** paths, size_t n_paths,
        struct llama_model_params params);

void llama_model_free(struct llama_model * model);

uint64_t llama_model_size(const struct llama_model * model);
int32_t  llama_model_n_params(const struct llama_model * model);
int32_t  llama_model_meta_count(const struct llama_model * model);
// ... and many getters for hparams, arch name, chat template, etc.

llama_model_params is the load-time configuration struct: n_gpu_layers, tensor_split, main_gpu, vocab_only, use_mmap, use_mlock, kv_overrides, etc. See Reference → Configuration.

Vocab

const struct llama_vocab * llama_model_get_vocab(const struct llama_model * model);

int32_t llama_tokenize(const struct llama_vocab * vocab,
                       const char * text, int32_t text_len,
                       llama_token * tokens, int32_t n_tokens_max,
                       bool add_special, bool parse_special);

int32_t llama_token_to_piece(const struct llama_vocab * vocab,
                             llama_token token, char * buf, int32_t length,
                             int32_t lstrip, bool special);

int32_t llama_detokenize(const struct llama_vocab * vocab,
                         const llama_token * tokens, int32_t n_tokens,
                         char * text, int32_t text_len_max,
                         bool remove_special, bool unparse_special);

Plus a long list of accessors for special tokens (bos, eos, pad, ...). See Vocab and tokenizer.

Context

struct llama_context;
struct llama_context_params llama_context_default_params(void);

struct llama_context * llama_init_from_model(
        struct llama_model * model,
        struct llama_context_params params);

void llama_free(struct llama_context * ctx);

uint32_t llama_n_ctx(const struct llama_context * ctx);
uint32_t llama_n_batch(const struct llama_context * ctx);
// ...

llama_context_params is the runtime config: n_ctx, n_batch, n_ubatch, n_seq_max, n_threads, rope_freq_*, pooling_type, attention_type, cache_type_k, cache_type_v, embeddings, flash_attn, etc. See Reference → Configuration.

Batch and decode

struct llama_batch llama_batch_init(int32_t n_tokens, int32_t embd, int32_t n_seq_max);
struct llama_batch llama_batch_get_one(llama_token * tokens, int32_t n_tokens);
void               llama_batch_free(struct llama_batch batch);

int32_t llama_encode(struct llama_context * ctx, struct llama_batch batch);
int32_t llama_decode(struct llama_context * ctx, struct llama_batch batch);

float * llama_get_logits(struct llama_context * ctx);
float * llama_get_logits_ith(struct llama_context * ctx, int32_t i);
float * llama_get_embeddings(struct llama_context * ctx);
float * llama_get_embeddings_seq(struct llama_context * ctx, llama_seq_id seq_id);

llama_decode is the workhorse — it builds a per-batch graph, schedules it across backends, executes it, and updates KV state. See Computation graph.

KV cache and memory

typedef int32_t llama_seq_id;

void llama_kv_self_clear     (struct llama_context * ctx);
void llama_kv_self_seq_rm    (struct llama_context * ctx, llama_seq_id seq_id, llama_pos p0, llama_pos p1);
void llama_kv_self_seq_cp    (struct llama_context * ctx, llama_seq_id src, llama_seq_id dst, llama_pos p0, llama_pos p1);
void llama_kv_self_seq_keep  (struct llama_context * ctx, llama_seq_id seq_id);
void llama_kv_self_seq_add   (struct llama_context * ctx, llama_seq_id seq_id, llama_pos p0, llama_pos p1, llama_pos delta);
void llama_kv_self_seq_div   (struct llama_context * ctx, llama_seq_id seq_id, llama_pos p0, llama_pos p1, int d);
llama_pos llama_kv_self_seq_pos_max(struct llama_context * ctx, llama_seq_id seq_id);
void llama_kv_self_defrag    (struct llama_context * ctx);

See KV cache and memory. The llama_state_* family (omitted here) saves/restores either the entire context or a single sequence — used by examples/save-load-state/ and the server's POST /slots/{id} endpoint.

Sampling

struct llama_sampler;
struct llama_sampler_chain_params llama_sampler_chain_default_params(void);

struct llama_sampler * llama_sampler_chain_init(struct llama_sampler_chain_params params);
void llama_sampler_chain_add(struct llama_sampler * chain, struct llama_sampler * smpl);

struct llama_sampler * llama_sampler_init_top_k(int32_t k);
struct llama_sampler * llama_sampler_init_top_p(float p, size_t min_keep);
struct llama_sampler * llama_sampler_init_min_p(float p, size_t min_keep);
struct llama_sampler * llama_sampler_init_temp(float t);
struct llama_sampler * llama_sampler_init_typical(float p, size_t min_keep);
struct llama_sampler * llama_sampler_init_mirostat_v2(uint32_t seed, float tau, float eta);
struct llama_sampler * llama_sampler_init_grammar(...);
struct llama_sampler * llama_sampler_init_dist(uint32_t seed);
struct llama_sampler * llama_sampler_init_greedy(void);
// ... many more

void                   llama_sampler_apply (struct llama_sampler * smpl, llama_token_data_array * cur_p);
llama_token            llama_sampler_sample(struct llama_sampler * smpl, struct llama_context * ctx, int32_t idx);
void                   llama_sampler_accept(struct llama_sampler * smpl, llama_token token);
void                   llama_sampler_free  (struct llama_sampler * smpl);

See Sampler.

Grammar

struct llama_grammar;
struct llama_grammar * llama_grammar_init_impl(...);
void                   llama_grammar_free_impl(struct llama_grammar * grammar);
void                   llama_grammar_accept_impl(struct llama_grammar * grammar, llama_token token);

Most users don't touch these directly — llama_sampler_init_grammar wraps them. See Grammar.

Chat

int32_t llama_chat_apply_template(
        const char * tmpl,
        const struct llama_chat_message * chat, size_t n_msg,
        bool add_ass,
        char * buf, int32_t length);

For the full Jinja-based path, see common/chat.cpp and Chat templates.

Adapters

struct llama_adapter_lora;
struct llama_adapter_lora * llama_adapter_lora_init(struct llama_model * model, const char * path_lora);
void                        llama_adapter_lora_free(struct llama_adapter_lora * adapter);

int32_t llama_set_adapter_lora(struct llama_context * ctx,
                               struct llama_adapter_lora * adapter,
                               float scale);
int32_t llama_rm_adapter_lora (struct llama_context * ctx,
                               struct llama_adapter_lora * adapter);
void    llama_clear_adapter_lora(struct llama_context * ctx);

See Adapters.

State save/load

size_t  llama_state_get_size      (struct llama_context * ctx);
size_t  llama_state_get_data      (struct llama_context * ctx, uint8_t * dst, size_t size);
size_t  llama_state_set_data      (struct llama_context * ctx, const uint8_t * src, size_t size);
size_t  llama_state_seq_get_size  (struct llama_context * ctx, llama_seq_id seq);
size_t  llama_state_seq_get_data  (struct llama_context * ctx, uint8_t * dst, size_t size, llama_seq_id seq);
size_t  llama_state_seq_set_data  (struct llama_context * ctx, const uint8_t * src, size_t size, llama_seq_id seq);
bool    llama_state_load_file     (struct llama_context * ctx, const char * path, ...);
bool    llama_state_save_file     (struct llama_context * ctx, const char * path, ...);

Used by examples/save-load-state/ and the server's slot-save endpoint.

Logging

void llama_log_set(ggml_log_callback log_callback, void * user_data);

Tools register their own callback through common/log.cpp. Default behavior writes to stderr.

Quantization

struct llama_model_quantize_params llama_model_quantize_default_params(void);
uint32_t llama_model_quantize(const char * fname_inp, const char * fname_out,
                              const struct llama_model_quantize_params * params);

Used by tools/quantize. See Quantization.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Public symbols – llama.cpp wiki | Factory