| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package main
- import (
- "fmt"
- "os"
- "strconv"
- )
- // Config holds the agent configuration
- type Config struct {
- // ARP Server Configuration
- ARPURL string
- ARPUsername string
- ARPPassword string
- // OpenAI Configuration
- OpenAIKey string
- OpenAIModel string
- OpenAITemperature float64
- OpenAIBaseURL string
- OpenAIMaxTokens int
- // Agent Identity Configuration
- AgentName string
- Specialization string
- Values string
- Goals string
- // Queue Configuration
- MaxQueueSize int
- }
- // LoadConfig loads configuration from environment variables
- func LoadConfig() (*Config, error) {
- cfg := &Config{
- ARPURL: os.Getenv("ARP_URL"),
- ARPUsername: os.Getenv("ARP_USERNAME"),
- ARPPassword: os.Getenv("ARP_PASSWORD"),
- OpenAIKey: os.Getenv("OPENAI_API_KEY"),
- }
- // Required fields
- if cfg.ARPURL == "" {
- return nil, fmt.Errorf("ARP_URL environment variable is required")
- }
- if cfg.ARPUsername == "" {
- return nil, fmt.Errorf("ARP_USERNAME environment variable is required")
- }
- if cfg.ARPPassword == "" {
- return nil, fmt.Errorf("ARP_PASSWORD environment variable is required")
- }
- if cfg.OpenAIKey == "" {
- return nil, fmt.Errorf("OPENAI_API_KEY environment variable is required")
- }
- // Optional fields with defaults
- cfg.OpenAIModel = getEnvWithDefault("OPENAI_MODEL", "gpt-4")
- cfg.OpenAITemperature = getEnvFloatWithDefault("OPENAI_TEMPERATURE", 0.0)
- cfg.OpenAIBaseURL = os.Getenv("OPENAI_BASE_URL") // Empty means use default OpenAI API
- cfg.OpenAIMaxTokens = getEnvIntWithDefault("OPENAI_MAX_TOKENS", 4096)
- // Agent Identity Configuration with defaults
- cfg.AgentName = getEnvWithDefault("ARP_AGENT_NAME", "AI Assistant")
- cfg.Specialization = getEnvWithDefault("ARP_AGENT_SPECIALIZATION", "general assistance")
- cfg.Values = getEnvWithDefault("ARP_AGENT_VALUES", "helpfulness, accuracy, and collaboration")
- cfg.Goals = getEnvWithDefault("ARP_AGENT_GOALS", "help teammates accomplish their goals and contribute to the team's success")
- // Queue Configuration with defaults
- cfg.MaxQueueSize = getEnvIntWithDefault("ARP_MAX_QUEUE_SIZE", 100)
- return cfg, nil
- }
- // getEnvWithDefault returns the environment variable value or a default
- func getEnvWithDefault(key, defaultValue string) string {
- if value := os.Getenv(key); value != "" {
- return value
- }
- return defaultValue
- }
- // getEnvFloatWithDefault returns the environment variable as float64 or a default
- func getEnvFloatWithDefault(key string, defaultValue float64) float64 {
- if value := os.Getenv(key); value != "" {
- if f, err := strconv.ParseFloat(value, 64); err == nil {
- return f
- }
- }
- return defaultValue
- }
- // getEnvIntWithDefault returns the environment variable as int or a default
- func getEnvIntWithDefault(key string, defaultValue int) int {
- if value := os.Getenv(key); value != "" {
- if i, err := strconv.Atoi(value); err == nil {
- return i
- }
- }
- return defaultValue
- }
|