Initial commit: DeepRes Go backend — bot + worker + embed service
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
// DeepRes — Telegram bot for deep research
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
// Telegram
|
||||
TelegramToken string
|
||||
|
||||
// Database
|
||||
DatabaseURL string
|
||||
|
||||
// NATS
|
||||
NATSURL string
|
||||
|
||||
// SearXNG
|
||||
SearXNGURL string
|
||||
|
||||
// LLM API (OpenRouter)
|
||||
OpenRouterKey string
|
||||
LLMModel string
|
||||
|
||||
// Embeddings (E5 via sentence-transformers HTTP server)
|
||||
EmbedURL string
|
||||
|
||||
// Prices in Telegram Stars
|
||||
FastResearchCost int
|
||||
DeepResearchCost int
|
||||
FreeFastPerDay int
|
||||
}
|
||||
|
||||
func Load() *Config {
|
||||
cfg := &Config{
|
||||
TelegramToken: mustEnv("TELEGRAM_TOKEN"),
|
||||
DatabaseURL: mustEnv("DATABASE_URL"),
|
||||
NATSURL: getEnv("NATS_URL", "nats://localhost:4222"),
|
||||
SearXNGURL: getEnv("SEARXNG_URL", "http://localhost:4000"),
|
||||
OpenRouterKey: mustEnv("OPENROUTER_API_KEY"),
|
||||
LLMModel: getEnv("LLM_MODEL", "deepseek/deepseek-v4-flash"),
|
||||
EmbedURL: getEnv("EMBED_URL", "http://localhost:8081"),
|
||||
FastResearchCost: getEnvInt("FAST_COST", 1),
|
||||
DeepResearchCost: getEnvInt("DEEP_COST", 5),
|
||||
FreeFastPerDay: getEnvInt("FREE_FAST_PER_DAY", 3),
|
||||
}
|
||||
return cfg
|
||||
}
|
||||
|
||||
func getEnv(key, defaultVal string) string {
|
||||
if v := os.Getenv(key); v != "" {
|
||||
return v
|
||||
}
|
||||
return defaultVal
|
||||
}
|
||||
|
||||
func getEnvInt(key string, defaultVal int) int {
|
||||
if v := os.Getenv(key); v != "" {
|
||||
if i, err := strconv.Atoi(v); err == nil {
|
||||
return i
|
||||
}
|
||||
}
|
||||
return defaultVal
|
||||
}
|
||||
|
||||
func mustEnv(key string) string {
|
||||
v := os.Getenv(key)
|
||||
if v == "" {
|
||||
panic(fmt.Sprintf("required environment variable %s is not set", key))
|
||||
}
|
||||
return v
|
||||
}
|
||||
Reference in New Issue
Block a user