llama-grammar.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include "llama-impl.h"
  3. struct llama_vocab;
  4. struct llama_sampling;
  5. struct llama_grammar {
  6. const llama_grammar_rules rules;
  7. llama_grammar_stacks stacks;
  8. // buffer for partially generated UTF-8 sequence from accepted tokens
  9. llama_partial_utf8 partial_utf8;
  10. };
  11. //
  12. // internal API
  13. //
  14. struct llama_grammar * llama_grammar_init_impl(
  15. const llama_grammar_element ** rules,
  16. size_t n_rules,
  17. size_t start_rule_index);
  18. void llama_grammar_free_impl(struct llama_grammar * grammar);
  19. struct llama_grammar * llama_grammar_copy_impl(const struct llama_grammar * grammar);
  20. void llama_grammar_sample_impl(
  21. const struct llama_grammar * grammar,
  22. const struct llama_vocab * vocab,
  23. const struct llama_sampling * smpl,
  24. llama_token_data_array * candidates);
  25. void llama_grammar_accept_token_impl(
  26. struct llama_grammar * grammar,
  27. const struct llama_vocab * vocab,
  28. const struct llama_sampling * smpl,
  29. llama_token token);