summaryrefslogtreecommitdiff
path: root/src/llama-grammar.h
diff options
context:
space:
mode:
authorKawrakow <48489457+ikawrakow@users.noreply.github.com>2024-07-27 07:55:01 +0200
committerGitHub <noreply@github.com>2024-07-27 07:55:01 +0200
commit154e0d75fccf1784fe9ff6fd76a630b66563da3d (patch)
tree81ce6dbb5b1900c1aa78a879f0593c694cab9d27 /src/llama-grammar.h
parent0684c3e9c70d49323b4fc517128cbe222cab7f96 (diff)
Merge mainline llama.cpp (#3)
* Merging mainline - WIP * Merging mainline - WIP AVX2 and CUDA appear to work. CUDA performance seems slightly (~1-2%) lower as it is so often the case with llama.cpp/ggml after some "improvements" have been made. * Merging mainline - fix Metal * Remove check --------- Co-authored-by: Iwan Kawrakow <iwan.kawrakow@gmail.com>
Diffstat (limited to 'src/llama-grammar.h')
-rw-r--r--src/llama-grammar.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/llama-grammar.h b/src/llama-grammar.h
new file mode 100644
index 00000000..695ea063
--- /dev/null
+++ b/src/llama-grammar.h
@@ -0,0 +1,39 @@
+#pragma once
+
+#include "llama-impl.h"
+
+struct llama_vocab;
+struct llama_sampling;
+
+struct llama_grammar {
+ const llama_grammar_rules rules;
+ llama_grammar_stacks stacks;
+
+ // buffer for partially generated UTF-8 sequence from accepted tokens
+ llama_partial_utf8 partial_utf8;
+};
+
+//
+// internal API
+//
+
+struct llama_grammar * llama_grammar_init_impl(
+ const llama_grammar_element ** rules,
+ size_t n_rules,
+ size_t start_rule_index);
+
+void llama_grammar_free_impl(struct llama_grammar * grammar);
+
+struct llama_grammar * llama_grammar_copy_impl(const struct llama_grammar * grammar);
+
+void llama_grammar_sample_impl(
+ const struct llama_grammar * grammar,
+ const struct llama_vocab * vocab,
+ const struct llama_sampling * smpl,
+ llama_token_data_array * candidates);
+
+void llama_grammar_accept_token_impl(
+ struct llama_grammar * grammar,
+ const struct llama_vocab * vocab,
+ const struct llama_sampling * smpl,
+ llama_token token);