mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2026-09-22 08:00:53 +00:00
fix: fixed issue with model account invalid in hermes (#12590)
This commit is contained in:
@@ -42,6 +42,7 @@ frontend/components.d.ts
|
||||
frontend/src/xpack
|
||||
frontend/src/xpack-ee
|
||||
agent/xpack
|
||||
agent/xpack-ee
|
||||
core/xpack
|
||||
core/xpack-ee
|
||||
|
||||
|
||||
@@ -77,11 +77,15 @@ func writeHermesConfig(confDir string, account *model.AgentAccount, modelName st
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cfg["model"] = map[string]interface{}{
|
||||
model := map[string]interface{}{
|
||||
"default": resolveHermesModel(account.Provider, provider, modelName),
|
||||
"provider": provider,
|
||||
"base_url": account.BaseURL,
|
||||
}
|
||||
if provider == "custom" && account.APIKey != "" {
|
||||
model["api_key"] = "${CUSTOM_API_KEY}"
|
||||
}
|
||||
cfg["model"] = model
|
||||
cfg["terminal"] = map[string]interface{}{
|
||||
"backend": "local",
|
||||
"cwd": hermesWorkspaceDir,
|
||||
@@ -94,7 +98,7 @@ func writeHermesConfig(confDir string, account *model.AgentAccount, modelName st
|
||||
if err := writeHermesConfigMap(configPath, cfg); err != nil {
|
||||
return err
|
||||
}
|
||||
return writeHermesEnv(path.Join(confDir, ".env"), resolveHermesEnvEntries(account))
|
||||
return writeHermesModelEnv(path.Join(confDir, ".env"), account)
|
||||
}
|
||||
|
||||
func prepareHermesInstallFiles(appInstall *model.AppInstall, account *model.AgentAccount, modelName string) error {
|
||||
@@ -458,6 +462,14 @@ func resolveHermesEnvEntries(account *model.AgentAccount) []hermesEnvEntry {
|
||||
if account == nil {
|
||||
return nil
|
||||
}
|
||||
if resolveHermesProvider(account.Provider) == "custom" {
|
||||
if account.APIKey == "" {
|
||||
return nil
|
||||
}
|
||||
return []hermesEnvEntry{
|
||||
{Key: "CUSTOM_API_KEY", Value: account.APIKey},
|
||||
}
|
||||
}
|
||||
apiKey := account.APIKey
|
||||
baseURL := account.BaseURL
|
||||
entries := make([]hermesEnvEntry, 0, 4)
|
||||
@@ -519,6 +531,73 @@ func resolveHermesEnvEntries(account *model.AgentAccount) []hermesEnvEntry {
|
||||
return entries
|
||||
}
|
||||
|
||||
func writeHermesModelEnv(envPath string, account *model.AgentAccount) error {
|
||||
envMap, err := readHermesEnvMap(envPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, key := range hermesManagedModelEnvKeys() {
|
||||
delete(envMap, key)
|
||||
}
|
||||
entries := resolveHermesEnvEntries(account)
|
||||
order := make([]string, 0, len(entries))
|
||||
for _, entry := range entries {
|
||||
if entry.Key == "" || entry.Value == "" {
|
||||
continue
|
||||
}
|
||||
envMap[entry.Key] = entry.Value
|
||||
order = append(order, entry.Key)
|
||||
}
|
||||
return writeHermesEnvMap(envPath, envMap, order)
|
||||
}
|
||||
|
||||
func hermesManagedModelEnvKeys() []string {
|
||||
keys := []string{
|
||||
"OPENROUTER_API_KEY",
|
||||
"OPENROUTER_BASE_URL",
|
||||
"ANTHROPIC_API_KEY",
|
||||
"GOOGLE_API_KEY",
|
||||
"GEMINI_API_KEY",
|
||||
"GEMINI_BASE_URL",
|
||||
"GLM_API_KEY",
|
||||
"ZAI_API_KEY",
|
||||
"Z_AI_API_KEY",
|
||||
"GLM_BASE_URL",
|
||||
"KIMI_API_KEY",
|
||||
"KIMI_CN_API_KEY",
|
||||
"KIMI_BASE_URL",
|
||||
"MINIMAX_CN_API_KEY",
|
||||
"MINIMAX_CN_BASE_URL",
|
||||
"XIAOMI_API_KEY",
|
||||
"XIAOMI_BASE_URL",
|
||||
"DEEPSEEK_API_KEY",
|
||||
"DEEPSEEK_BASE_URL",
|
||||
"DASHSCOPE_API_KEY",
|
||||
"DASHSCOPE_BASE_URL",
|
||||
"OPENAI_API_KEY",
|
||||
"OPENAI_BASE_URL",
|
||||
}
|
||||
seen := make(map[string]struct{}, len(keys))
|
||||
result := make([]string, 0, len(keys))
|
||||
appendKey := func(key string) {
|
||||
if key == "" {
|
||||
return
|
||||
}
|
||||
if _, ok := seen[key]; ok {
|
||||
return
|
||||
}
|
||||
seen[key] = struct{}{}
|
||||
result = append(result, key)
|
||||
}
|
||||
for _, key := range keys {
|
||||
appendKey(key)
|
||||
}
|
||||
for _, meta := range providercatalog.All() {
|
||||
appendKey(meta.EnvKey)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func writeHermesEnv(envPath string, entries []hermesEnvEntry) error {
|
||||
envMap, err := readHermesEnvMap(envPath)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user