首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func CleanAIResponse(response string) string {
|
||||
result := strings.TrimSpace(response)
|
||||
|
||||
for i := 0; i < 10; i++ {
|
||||
changed := false
|
||||
|
||||
if strings.HasPrefix(result, "```json") {
|
||||
result = strings.TrimSpace(strings.TrimPrefix(result, "```json"))
|
||||
changed = true
|
||||
} else if strings.HasPrefix(result, "```") {
|
||||
result = strings.TrimSpace(strings.TrimPrefix(result, "```"))
|
||||
changed = true
|
||||
}
|
||||
|
||||
if strings.HasSuffix(result, "```") {
|
||||
result = strings.TrimSpace(strings.TrimSuffix(result, "```"))
|
||||
changed = true
|
||||
}
|
||||
|
||||
if !changed {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
firstBrace := strings.Index(result, "{")
|
||||
lastBrace := strings.LastIndex(result, "}")
|
||||
if firstBrace >= 0 && lastBrace >= 0 && lastBrace > firstBrace {
|
||||
result = result[firstBrace : lastBrace+1]
|
||||
}
|
||||
|
||||
result = strings.ReplaceAll(result, "`", "")
|
||||
|
||||
result = strings.ReplaceAll(result, "\\n", "\n")
|
||||
result = strings.ReplaceAll(result, "\\r", "\r")
|
||||
result = strings.ReplaceAll(result, "\\t", "\t")
|
||||
|
||||
return strings.TrimSpace(result)
|
||||
}
|
||||
|
||||
func IsValidJSON(s string) bool {
|
||||
var js json.RawMessage
|
||||
return json.Unmarshal([]byte(s), &js) == nil
|
||||
}
|
||||
|
||||
func ExtractJSONFromText(text string) string {
|
||||
firstBrace := strings.Index(text, "{")
|
||||
lastBrace := strings.LastIndex(text, "}")
|
||||
|
||||
if firstBrace >= 0 && lastBrace >= 0 && lastBrace > firstBrace {
|
||||
return text[firstBrace : lastBrace+1]
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
Reference in New Issue
Block a user