mirror of
https://github.com/mudler/LocalAI.git
synced 2025-05-28 14:35:00 +00:00
feat: add LangChainGo Huggingface backend (#446)
Co-authored-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
This commit is contained in:
parent
7282668da1
commit
3ba07a5928
13 changed files with 241 additions and 0 deletions
57
pkg/langchain/langchain.go
Normal file
57
pkg/langchain/langchain.go
Normal file
|
@ -0,0 +1,57 @@
|
|||
package langchain
|
||||
|
||||
type PredictOptions struct {
|
||||
Model string `json:"model"`
|
||||
// MaxTokens is the maximum number of tokens to generate.
|
||||
MaxTokens int `json:"max_tokens"`
|
||||
// Temperature is the temperature for sampling, between 0 and 1.
|
||||
Temperature float64 `json:"temperature"`
|
||||
// StopWords is a list of words to stop on.
|
||||
StopWords []string `json:"stop_words"`
|
||||
}
|
||||
|
||||
type PredictOption func(p *PredictOptions)
|
||||
|
||||
var DefaultOptions = PredictOptions{
|
||||
Model: "gpt2",
|
||||
MaxTokens: 200,
|
||||
Temperature: 0.96,
|
||||
StopWords: nil,
|
||||
}
|
||||
|
||||
type Predict struct {
|
||||
Completion string
|
||||
}
|
||||
|
||||
func SetModel(model string) PredictOption {
|
||||
return func(o *PredictOptions) {
|
||||
o.Model = model
|
||||
}
|
||||
}
|
||||
|
||||
func SetTemperature(temperature float64) PredictOption {
|
||||
return func(o *PredictOptions) {
|
||||
o.Temperature = temperature
|
||||
}
|
||||
}
|
||||
|
||||
func SetMaxTokens(maxTokens int) PredictOption {
|
||||
return func(o *PredictOptions) {
|
||||
o.MaxTokens = maxTokens
|
||||
}
|
||||
}
|
||||
|
||||
func SetStopWords(stopWords []string) PredictOption {
|
||||
return func(o *PredictOptions) {
|
||||
o.StopWords = stopWords
|
||||
}
|
||||
}
|
||||
|
||||
// NewPredictOptions Create a new PredictOptions object with the given options.
|
||||
func NewPredictOptions(opts ...PredictOption) PredictOptions {
|
||||
p := DefaultOptions
|
||||
for _, opt := range opts {
|
||||
opt(&p)
|
||||
}
|
||||
return p
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue