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) | |
} | |