Skip to content

Commit

Permalink
llama: enable JSON schema key ordering for generating grammars (ollam…
Browse files Browse the repository at this point in the history
  • Loading branch information
ParthSareen authored Dec 12, 2024
1 parent b1fd7fe commit 18f6a98
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 6 deletions.
6 changes: 1 addition & 5 deletions llama/grammar_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ const issue7978JSONSchema = `{
}`

func TestIssue7978(t *testing.T) {
t.Skip("schema_to_grammar is broken; skipping until fixed")

g := SchemaToGrammar([]byte(issue7978JSONSchema))
if g == nil {
t.Fatal("failed to convert JSON schema to grammar")
Expand All @@ -54,16 +52,14 @@ func TestIssue7978(t *testing.T) {
}

func TestSchemaToGrammer(t *testing.T) {
t.Skip("schema_to_grammar is broken; skipping until fixed")

cases := []struct {
schema string
prefix []byte // nil is check as nil
}{
{`invalid`, nil},

// Simple heuristic/smoke test
{`{"type":"object"}`, []byte("object ::=")},
{`{"type":"object"}`, []byte("root ::= object")},
}

for _, c := range cases {
Expand Down
2 changes: 1 addition & 1 deletion llama/json-schema-to-grammar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,7 @@ class SchemaConverter {
private:
std::function<json(const std::string &)> _fetch_json;
bool _dotall;
std::map<std::string, std::string> _rules;
std::unordered_map<std::string, std::string> _rules;
std::unordered_map<std::string, json> _refs;
std::unordered_set<std::string> _refs_being_resolved;
std::vector<std::string> _errors;
Expand Down
22 changes: 22 additions & 0 deletions llama/patches/0012-Maintain-ordering-for-rules-for-grammar.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: ParthSareen <[email protected]>
Date: Wed, 11 Dec 2024 15:37:32 -0800
Subject: [PATCH] Maintain ordering for rules for grammar

---
common/json-schema-to-grammar.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/common/json-schema-to-grammar.cpp b/common/json-schema-to-grammar.cpp
index dadc18c8..2a8dbd22 100644
--- a/common/json-schema-to-grammar.cpp
+++ b/common/json-schema-to-grammar.cpp
@@ -391,7 +391,7 @@ class SchemaConverter {
private:
std::function<json(const std::string &)> _fetch_json;
bool _dotall;
- std::map<std::string, std::string> _rules;
+ std::unordered_map<std::string, std::string> _rules;
std::unordered_map<std::string, json> _refs;
std::unordered_set<std::string> _refs_being_resolved;
std::vector<std::string> _errors;

0 comments on commit 18f6a98

Please sign in to comment.