mirror of
https://github.com/mudler/LocalAI.git
synced 2025-05-20 10:35:01 +00:00
feat(grammar): add llama3.1 schema (#3015)
* wip Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * get rid of panics Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * expose it properly from the config Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * Simplify Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * forgot to commit Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * Remove focus on test Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * Small fixups Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
This commit is contained in:
parent
fee52942eb
commit
2169c3497d
14 changed files with 609 additions and 148 deletions
|
@ -1,6 +1,10 @@
|
|||
package functions
|
||||
|
||||
import "encoding/json"
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/mudler/LocalAI/pkg/functions/grammars"
|
||||
)
|
||||
|
||||
type Item struct {
|
||||
Type string `json:"type"`
|
||||
|
@ -13,13 +17,27 @@ type JSONFunctionStructure struct {
|
|||
Defs map[string]interface{} `json:"$defs,omitempty"`
|
||||
}
|
||||
|
||||
func (j JSONFunctionStructure) Grammar(options ...func(*GrammarOption)) (string, error) {
|
||||
grammarOpts := &GrammarOption{}
|
||||
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
|
||||
}
|
||||
return NewJSONSchemaConverter(grammarOpts.PropOrder).GrammarFromBytes(dat, options...)
|
||||
|
||||
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)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue