diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-02-12 20:57:17 +0100 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-02-12 20:57:17 +0100 |
| commit | b333b06772c89d96aacb5490d6a219fba7c09cc6 (patch) | |
| tree | 211df60083a5946baa2ed61d33d8121b7e251b06 /llama.cpp/common/json-schema-to-grammar.h | |
| download | llmnpc-b333b06772c89d96aacb5490d6a219fba7c09cc6.tar.gz | |
Engage!
Diffstat (limited to 'llama.cpp/common/json-schema-to-grammar.h')
| -rw-r--r-- | llama.cpp/common/json-schema-to-grammar.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/llama.cpp/common/json-schema-to-grammar.h b/llama.cpp/common/json-schema-to-grammar.h new file mode 100644 index 0000000..240d642 --- /dev/null +++ b/llama.cpp/common/json-schema-to-grammar.h @@ -0,0 +1,43 @@ +#pragma once + +#include <nlohmann/json_fwd.hpp> + +#include <functional> +#include <memory> +#include <string> + +std::string json_schema_to_grammar(const nlohmann::ordered_json & schema, + bool force_gbnf = false); + +class common_schema_converter; + +// Probes a JSON schema to extract information about its structure and type constraints. +class common_schema_info { + std::unique_ptr<common_schema_converter> impl_; + + public: + common_schema_info(); + ~common_schema_info(); + + common_schema_info(const common_schema_info &) = delete; + common_schema_info & operator=(const common_schema_info &) = delete; + common_schema_info(common_schema_info &&) noexcept; + common_schema_info & operator=(common_schema_info &&) noexcept; + + void resolve_refs(nlohmann::ordered_json & schema); + bool resolves_to_string(const nlohmann::ordered_json & schema); +}; + +struct common_grammar_builder { + std::function<std::string(const std::string &, const std::string &)> add_rule; + std::function<std::string(const std::string &, const nlohmann::ordered_json &)> add_schema; + std::function<void(nlohmann::ordered_json &)> resolve_refs; +}; + +struct common_grammar_options { + bool dotall = false; +}; + +std::string gbnf_format_literal(const std::string & literal); + +std::string build_grammar(const std::function<void(const common_grammar_builder &)> & cb, const common_grammar_options & options = {}); |
