Spaces:
Configuration error
Configuration error
| package main | |
| // This is a wrapper to statisfy the GRPC service interface | |
| // It is meant to be used by the main executable that is the server for the specific backend type (falcon, gpt3, etc) | |
| import ( | |
| "fmt" | |
| "os" | |
| "github.com/mudler/LocalAI/pkg/grpc/base" | |
| pb "github.com/mudler/LocalAI/pkg/grpc/proto" | |
| "github.com/mudler/LocalAI/pkg/langchain" | |
| ) | |
| type LLM struct { | |
| base.Base | |
| langchain *langchain.HuggingFace | |
| model string | |
| } | |
| func (llm *LLM) Load(opts *pb.ModelOptions) error { | |
| var err error | |
| hfToken := os.Getenv("HUGGINGFACEHUB_API_TOKEN") | |
| if hfToken == "" { | |
| return fmt.Errorf("no huggingface token provided") | |
| } | |
| llm.langchain, err = langchain.NewHuggingFace(opts.Model, hfToken) | |
| llm.model = opts.Model | |
| return err | |
| } | |
| func (llm *LLM) Predict(opts *pb.PredictOptions) (string, error) { | |
| o := []langchain.PredictOption{ | |
| langchain.SetModel(llm.model), | |
| langchain.SetMaxTokens(int(opts.Tokens)), | |
| langchain.SetTemperature(float64(opts.Temperature)), | |
| langchain.SetStopWords(opts.StopPrompts), | |
| } | |
| pred, err := llm.langchain.PredictHuggingFace(opts.Prompt, o...) | |
| if err != nil { | |
| return "", err | |
| } | |
| return pred.Completion, nil | |
| } | |
| func (llm *LLM) PredictStream(opts *pb.PredictOptions, results chan string) error { | |
| o := []langchain.PredictOption{ | |
| langchain.SetModel(llm.model), | |
| langchain.SetMaxTokens(int(opts.Tokens)), | |
| langchain.SetTemperature(float64(opts.Temperature)), | |
| langchain.SetStopWords(opts.StopPrompts), | |
| } | |
| go func() { | |
| res, err := llm.langchain.PredictHuggingFace(opts.Prompt, o...) | |
| if err != nil { | |
| fmt.Println("err: ", err) | |
| } | |
| results <- res.Completion | |
| close(results) | |
| }() | |
| return nil | |
| } | |