Add OpenAI-compatible LLM runtime
This commit is contained in:
52
internal/framework/llm/secrets.go
Normal file
52
internal/framework/llm/secrets.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package llm
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const secretReplacement = "[REDACTED]"
|
||||
|
||||
// RedactSecrets replaces configured secret values in diagnostics.
|
||||
func RedactSecrets(message string, secrets []string) string {
|
||||
if message == "" || len(secrets) == 0 {
|
||||
return message
|
||||
}
|
||||
|
||||
normalized := normalizeSecrets(secrets)
|
||||
for _, secret := range normalized {
|
||||
message = strings.ReplaceAll(message, secret, secretReplacement)
|
||||
}
|
||||
return message
|
||||
}
|
||||
|
||||
// ErrorWithSecretsRedacted returns an error with known secret values removed
|
||||
// from its message.
|
||||
func ErrorWithSecretsRedacted(err error, secrets []string) error {
|
||||
if err == nil {
|
||||
return nil
|
||||
}
|
||||
return errors.New(RedactSecrets(err.Error(), secrets))
|
||||
}
|
||||
|
||||
func normalizeSecrets(secrets []string) []string {
|
||||
seen := make(map[string]struct{}, len(secrets))
|
||||
result := make([]string, 0, len(secrets))
|
||||
for _, secret := range secrets {
|
||||
secret = strings.TrimSpace(secret)
|
||||
if secret == "" {
|
||||
continue
|
||||
}
|
||||
if _, ok := seen[secret]; ok {
|
||||
continue
|
||||
}
|
||||
seen[secret] = struct{}{}
|
||||
result = append(result, secret)
|
||||
}
|
||||
|
||||
sort.Slice(result, func(i, j int) bool {
|
||||
return len(result[i]) > len(result[j])
|
||||
})
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user