Skip to main content
Glama
ai.go2.61 kB
package service import ( "fmt" "github.com/weibaohui/k8m/pkg/ai" "github.com/weibaohui/k8m/pkg/comm/utils" "github.com/weibaohui/k8m/pkg/flag" "k8s.io/klog/v2" ) type aiService struct { innerModel string innerApiKey string innerApiUrl string } func (c *aiService) SetVars(apikey, apiUrl, model string) { c.innerModel = model c.innerApiUrl = apiUrl c.innerApiKey = apikey } var local ai.IAI func (c *aiService) DefaultClient() (ai.IAI, error) { enable := c.IsEnabled() if !enable { return nil, fmt.Errorf("ChatGPT功能未开启") } if local != nil { return local, nil } if client, err := c.openAIClient(); err == nil { local = client } return local, nil } // ResetDefaultClient 重置 local ,适用于切换 func (c *aiService) ResetDefaultClient() error { enable := c.IsEnabled() if !enable { return fmt.Errorf("ChatGPT功能未开启") } local = nil klog.V(6).Infof("AI DefaultClient Reset ") return nil } func (c *aiService) openAIClient() (ai.IAI, error) { cfg := flag.Init() aiProvider := ai.Provider{ Name: "openai", Model: cfg.ApiModel, Password: cfg.ApiKey, BaseURL: cfg.ApiURL, Temperature: 0.7, TopP: 1, MaxHistory: 10, TopK: 0, MaxTokens: 1000, } if cfg.EnableAI && cfg.UseBuiltInModel { aiProvider.BaseURL = c.innerApiUrl aiProvider.Password = c.innerApiKey aiProvider.Model = c.innerModel } // Temperature: 0.7, // TopP: 1, // MaxHistory: 10, if cfg.Temperature > 0 { aiProvider.Temperature = cfg.Temperature } if cfg.TopP > 0 { aiProvider.TopP = cfg.TopP } if cfg.MaxHistory > 0 { aiProvider.MaxHistory = cfg.MaxHistory } if cfg.Debug { klog.V(4).Infof("ai BaseURL: %v\n", aiProvider.BaseURL) klog.V(4).Infof("ai Model : %v\n", aiProvider.Model) klog.V(4).Infof("ai Key: %v\n", utils.MaskString(aiProvider.Password, 5)) } aiClient := ai.NewClient(aiProvider.Name) if err := aiClient.Configure(&aiProvider); err != nil { return nil, err } return aiClient, nil } func (c *aiService) IsEnabled() bool { cfg := flag.Init() enable := cfg.EnableAI klog.V(4).Infof("ChatGPT 状态:%v\n", enable) return enable } func (c *aiService) TestClient(url string, key string, model string) (ai.IAI, error) { klog.V(6).Infof("TestClient url:%v key:%v model:%v\n", url, utils.MaskString(key, 5), model) aiProvider := ai.Provider{ Name: "test", Model: model, Password: key, BaseURL: url, } aiClient := ai.NewClient(aiProvider.Name) if err := aiClient.Configure(&aiProvider); err != nil { return nil, err } return aiClient, nil }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/weibaohui/k8m'

If you have feedback or need assistance with the MCP directory API, please join our Discord server