Files
Ettore Di Giacinto 8014d22588 fix: unify api keys for collection endpoint
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-02-21 23:39:19 +00:00

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
}