in llm/config/config.go [50:115]
func Load(envFile string) (*Config, error) {
configOnce.Do(func() {
config = &Config{}
err := godotenv.Load(envFile)
if err != nil {
configErr = fmt.Errorf("error loading .env file: %v", err)
return
}
modelsEnv := os.Getenv("OLLAMA_MODELS")
if modelsEnv == "" {
configErr = fmt.Errorf("error: OLLAMA_MODELS environment variable is not set")
return
}
modelsList := strings.Split(modelsEnv, ",")
for i, model := range modelsList {
modelsList[i] = strings.TrimSpace(model)
}
if len(modelsList) == 0 {
configErr = fmt.Errorf("error: No models available")
return
}
config.OllamaModels = modelsList
ollamaURL := os.Getenv("OLLAMA_URL")
if ollamaURL == "" {
configErr = fmt.Errorf("OLLAMA_URL is not set")
return
}
config.OllamaURL = ollamaURL
timeoutStr := os.Getenv("TIME_OUT_SECOND")
if timeoutStr == "" {
config.TimeoutSeconds = defaultTimeoutSeconds
} else {
timeout, err := strconv.Atoi(timeoutStr)
if err != nil {
configErr = fmt.Errorf("invalid TIME_OUT_SECOND value: %v", err)
return
}
config.TimeoutSeconds = timeout
}
nacosURL := os.Getenv("NACOS_URL")
if nacosURL == "" {
configErr = fmt.Errorf("OLLAMA_URL is not set")
return
}
config.NacosURL = nacosURL
maxContextStr := os.Getenv("MAX_CONTEXT_COUNT")
if maxContextStr == "" {
config.MaxContextCount = defaultMaxContextCount
} else {
maxContext, err := strconv.Atoi(maxContextStr)
if err != nil {
configErr = fmt.Errorf("invalid MAX_CONTEXT_COUNT value: %v", err)
return
}
config.MaxContextCount = maxContext
}
})
return config, configErr
}