Spaces:
Configuration error
Configuration error
| package functions | |
| import ( | |
| "encoding/json" | |
| "github.com/mudler/LocalAI/pkg/functions/grammars" | |
| ) | |
| type Item struct { | |
| Type string `json:"type"` | |
| Properties map[string]interface{} `json:"properties"` | |
| } | |
| type JSONFunctionStructure struct { | |
| OneOf []Item `json:"oneOf,omitempty"` | |
| AnyOf []Item `json:"anyOf,omitempty"` | |
| Defs map[string]interface{} `json:"$defs,omitempty"` | |
| } | |
| func (j JSONFunctionStructure) Grammar(options ...func(*grammars.GrammarOption)) (string, error) { | |
| grammarOpts := &grammars.GrammarOption{} | |
| grammarOpts.Apply(options...) | |
| dat, err := json.Marshal(j) | |
| if err != nil { | |
| return "", err | |
| } | |
| converter := NewSchemaConverter(*grammarOpts) | |
| return converter.GrammarFromBytes(dat, options...) | |
| } | |
| type SchemaConverter interface { | |
| GrammarFromBytes([]byte, ...func(*grammars.GrammarOption)) (string, error) | |
| } | |
| func NewSchemaConverter(opt grammars.GrammarOption) SchemaConverter { | |
| switch { | |
| case opt.SchemaType == grammars.LLama31Schema: | |
| return grammars.NewLLama31SchemaConverter(opt.FunctionName) | |
| } | |
| return grammars.NewJSONSchemaConverter(opt.PropOrder) | |
| } | |