// Command envproviders demonstrates LLM_* env-DSN provider definitions // (go-llm parity): named providers built entirely from the environment, // first-class in Parse, chains, and tiers. // // export LLM_M1=foreman://test-token-change-me@foreman-m1.orgrimmar.dudenhoeffer.casa // export LLM_M5=foreman://test-token-change-me@foreman-m5.orgrimmar.dudenhoeffer.casa // go run ./examples/envproviders package main import ( "context" "flag" "fmt" "log" "os" "gitea.stevedudenhoeffer.com/steve/majordomo" ) func main() { spec := flag.String("model", "m5/qwen3:30b,m1/qwen3:30b,thinking", "spec mixing env providers, built-ins, and aliases") flag.Parse() if os.Getenv("LLM_M1") == "" && os.Getenv("LLM_M5") == "" { log.Println("note: no LLM_M1/LLM_M5 set — set foreman DSNs to run this against real daemons") } reg := majordomo.New() // eagerly loads every LLM_* var; unknown names also resolve lazily reg.RegisterAlias("thinking", "ollama-cloud/minimax-m3:cloud") m, err := reg.Parse(*spec) if err != nil { log.Fatalf("parse %q: %v", *spec, err) } resp, err := m.Generate(context.Background(), majordomo.Request{ Messages: []majordomo.Message{majordomo.UserText("Which machine are you running on? One sentence.")}, }) if err != nil { log.Fatalf("generate: %v", err) } fmt.Printf("[%s] %s\n", resp.Model, resp.Text()) }