Spaces:
Configuration error
Configuration error
| package grammars_test | |
| import ( | |
| "strings" | |
| . "github.com/mudler/LocalAI/pkg/functions/grammars" | |
| . "github.com/onsi/ginkgo/v2" | |
| . "github.com/onsi/gomega" | |
| ) | |
| const ( | |
| testllama31Input1 = ` | |
| { | |
| "oneOf": [ | |
| { | |
| "type": "object", | |
| "properties": { | |
| "function": {"const": "create_event"}, | |
| "arguments": { | |
| "type": "object", | |
| "properties": { | |
| "title": {"type": "string"}, | |
| "date": {"type": "string"}, | |
| "time": {"type": "string"} | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "type": "object", | |
| "properties": { | |
| "function": {"const": "search"}, | |
| "arguments": { | |
| "type": "object", | |
| "properties": { | |
| "query": {"type": "string"} | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }` | |
| // <function=example_function_name>{{"example_name": "example_value"}}</function> | |
| testllama31inputResult1 = `root-0-function ::= "create_event" | |
| freestring ::= ( | |
| [^"\\] | | |
| "\\" (["\\/bfnrt] | "u" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]) | |
| )* space | |
| root-0 ::= "<function=" root-0-function ">{" root-0-arguments "}</function>" | |
| root-1-arguments ::= "{" space "\"query\"" space ":" space string "}" space | |
| root ::= root-0 | root-1 | |
| space ::= " "? | |
| root-0-arguments ::= "{" space "\"date\"" space ":" space string "," space "\"time\"" space ":" space string "," space "\"title\"" space ":" space string "}" space | |
| root-1 ::= "<function=" root-1-function ">{" root-1-arguments "}</function>" | |
| string ::= "\"" ( | |
| [^"\\] | | |
| "\\" (["\\/bfnrt] | "u" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]) | |
| )* "\"" space | |
| root-1-function ::= "search"` | |
| ) | |
| var _ = Describe("JSON schema grammar tests", func() { | |
| Context("JSON", func() { | |
| It("generates a valid grammar from JSON schema", func() { | |
| grammar, err := NewLLama31SchemaConverter("function").GrammarFromBytes([]byte(testllama31Input1)) | |
| Expect(err).ToNot(HaveOccurred()) | |
| results := strings.Split(testllama31inputResult1, "\n") | |
| for _, r := range results { | |
| if r != "" { | |
| Expect(grammar).To(ContainSubstring(r)) | |
| } | |
| } | |
| Expect(len(results)).To(Equal(len(strings.Split(grammar, "\n")))) | |
| }) | |
| }) | |
| }) | |