mirror of
https://github.com/mudler/LocalAGI.git
synced 2026-07-24 03:10:46 -04:00
8014d22588
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
161 lines
2.9 KiB
Go
161 lines
2.9 KiB
Go
package webui
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/mudler/LocalAGI/core/state"
|
|
"github.com/mudler/LocalAGI/services/skills"
|
|
)
|
|
|
|
type Config struct {
|
|
DefaultChunkSize int
|
|
Pool *state.AgentPool
|
|
SkillsService *skills.Service
|
|
ApiKeys []string
|
|
LLMAPIURL string
|
|
LLMAPIKey string
|
|
LLMModel string
|
|
StateDir string
|
|
CustomActionsDir string
|
|
ConversationStoreDuration time.Duration
|
|
|
|
// Collections / knowledge base (LocalRecall)
|
|
CollectionDBPath string
|
|
FileAssets string
|
|
VectorEngine string
|
|
EmbeddingModel string
|
|
MaxChunkingSize int
|
|
ChunkOverlap int
|
|
DatabaseURL string
|
|
// LocalRAGURL when set uses HTTP backend for collections API; when empty uses in-process backend.
|
|
LocalRAGURL string
|
|
}
|
|
|
|
type Option func(*Config)
|
|
|
|
func WithDefaultChunkSize(size int) Option {
|
|
return func(c *Config) {
|
|
c.DefaultChunkSize = size
|
|
}
|
|
}
|
|
|
|
func WithConversationStoreduration(duration string) Option {
|
|
return func(c *Config) {
|
|
d, err := time.ParseDuration(duration)
|
|
if err != nil {
|
|
d = 1 * time.Hour
|
|
}
|
|
c.ConversationStoreDuration = d
|
|
}
|
|
}
|
|
|
|
func WithStateDir(dir string) Option {
|
|
return func(c *Config) {
|
|
c.StateDir = dir
|
|
}
|
|
}
|
|
|
|
func WithLLMModel(model string) Option {
|
|
return func(c *Config) {
|
|
c.LLMModel = model
|
|
}
|
|
}
|
|
|
|
func WithLLMAPIUrl(url string) Option {
|
|
return func(c *Config) {
|
|
c.LLMAPIURL = url
|
|
}
|
|
}
|
|
|
|
func WithLLMAPIKey(key string) Option {
|
|
return func(c *Config) {
|
|
c.LLMAPIKey = key
|
|
}
|
|
}
|
|
|
|
func WithCustomActionsDir(dir string) Option {
|
|
return func(c *Config) {
|
|
c.CustomActionsDir = dir
|
|
}
|
|
}
|
|
|
|
func WithPool(pool *state.AgentPool) Option {
|
|
return func(c *Config) {
|
|
c.Pool = pool
|
|
}
|
|
}
|
|
|
|
func WithSkillsService(svc *skills.Service) Option {
|
|
return func(c *Config) {
|
|
c.SkillsService = svc
|
|
}
|
|
}
|
|
|
|
func WithApiKeys(keys ...string) Option {
|
|
return func(c *Config) {
|
|
c.ApiKeys = keys
|
|
}
|
|
}
|
|
|
|
func WithCollectionDBPath(path string) Option {
|
|
return func(c *Config) {
|
|
c.CollectionDBPath = path
|
|
}
|
|
}
|
|
|
|
func WithFileAssets(path string) Option {
|
|
return func(c *Config) {
|
|
c.FileAssets = path
|
|
}
|
|
}
|
|
|
|
func WithVectorEngine(engine string) Option {
|
|
return func(c *Config) {
|
|
c.VectorEngine = engine
|
|
}
|
|
}
|
|
|
|
func WithEmbeddingModel(model string) Option {
|
|
return func(c *Config) {
|
|
c.EmbeddingModel = model
|
|
}
|
|
}
|
|
|
|
func WithMaxChunkingSize(size int) Option {
|
|
return func(c *Config) {
|
|
c.MaxChunkingSize = size
|
|
}
|
|
}
|
|
|
|
func WithChunkOverlap(overlap int) Option {
|
|
return func(c *Config) {
|
|
c.ChunkOverlap = overlap
|
|
}
|
|
}
|
|
|
|
func WithDatabaseURL(url string) Option {
|
|
return func(c *Config) {
|
|
c.DatabaseURL = url
|
|
}
|
|
}
|
|
|
|
func WithLocalRAGURL(url string) Option {
|
|
return func(c *Config) {
|
|
c.LocalRAGURL = url
|
|
}
|
|
}
|
|
|
|
func (c *Config) Apply(opts ...Option) {
|
|
for _, opt := range opts {
|
|
opt(c)
|
|
}
|
|
}
|
|
|
|
func NewConfig(opts ...Option) *Config {
|
|
c := &Config{
|
|
DefaultChunkSize: 2048,
|
|
}
|
|
c.Apply(opts...)
|
|
return c
|
|
}
|