]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
grammar : handle missing "root" node (#6004)
authorClint Herron <redacted>
Wed, 13 Mar 2024 18:10:40 +0000 (14:10 -0400)
committerGitHub <redacted>
Wed, 13 Mar 2024 18:10:40 +0000 (20:10 +0200)
common/sampling.cpp

index 823031febc7e2aec80af69534fb0d0715d0e3edf..5a54509827cbf37840215f7bb87d3856be01bfe8 100644 (file)
@@ -17,6 +17,13 @@ struct llama_sampling_context * llama_sampling_init(const struct llama_sampling_
             return nullptr;
         }
 
+        // Ensure that there is a "root" node.
+        if (result->parsed_grammar.symbol_ids.find("root") == result->parsed_grammar.symbol_ids.end()) {
+            fprintf(stderr, "%s: grammar does not contain a 'root' symbol\n", __func__);
+            delete result;
+            return nullptr;
+        }
+
         std::vector<const llama_grammar_element *> grammar_rules(result->parsed_grammar.c_rules());
 
         result->grammar = llama_grammar_init(