Files
ai-agent/internal/config/config.go
Christoph K. 92f520101a sync
2026-03-12 17:34:49 +01:00

78 lines
2.1 KiB
Go
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// config.go Konfiguration, Clients und gemeinsame Verbindungen
package config
import (
"fmt"
"log"
"os"
openai "github.com/sashabaranov/go-openai"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"gopkg.in/yaml.v3"
)
type Config struct {
Qdrant struct {
Host string `yaml:"host"`
Port string `yaml:"port"`
APIKey string `yaml:"api_key"`
Collection string `yaml:"collection"`
} `yaml:"qdrant"`
Embedding struct {
URL string `yaml:"url"`
Model string `yaml:"model"`
Dimensions uint64 `yaml:"dimensions"`
} `yaml:"embedding"`
Chat struct {
URL string `yaml:"url"`
Model string `yaml:"model"`
} `yaml:"chat"`
BrainRoot string `yaml:"brain_root"`
TopK uint64 `yaml:"top_k"`
ScoreThreshold float32 `yaml:"score_threshold"`
}
var Cfg Config
// NewQdrantConn öffnet eine gRPC-Verbindung zur Qdrant-Instanz.
// Der Aufrufer ist verantwortlich für conn.Close().
func NewQdrantConn() *grpc.ClientConn {
conn, err := grpc.Dial(
fmt.Sprintf("%s:%s", Cfg.Qdrant.Host, Cfg.Qdrant.Port),
grpc.WithTransportCredentials(insecure.NewCredentials()),
)
if err != nil {
log.Fatalf("❌ Qdrant Verbindung fehlgeschlagen: %v", err)
}
return conn
}
// NewEmbeddingClient erstellt einen Client für LocalAI (Embeddings).
func NewEmbeddingClient() *openai.Client {
c := openai.DefaultConfig("localai")
c.BaseURL = Cfg.Embedding.URL
return openai.NewClientWithConfig(c)
}
// NewChatClient erstellt einen Client für Chat-Completion (LocalAI).
func NewChatClient() *openai.Client {
c := openai.DefaultConfig("localai")
c.BaseURL = Cfg.Chat.URL
return openai.NewClientWithConfig(c)
}
// LoadConfig liest config.yml aus dem aktuellen Verzeichnis.
func LoadConfig() {
data, err := os.ReadFile("config.yml")
if err != nil {
log.Fatalf("❌ config.yml nicht gefunden: %v\n Lege config.yml im selben Verzeichnis an.", err)
}
if err := yaml.Unmarshal(data, &Cfg); err != nil {
log.Fatalf("❌ config.yml ungültig: %v", err)
}
}