prompts-core
This commit is contained in:
43
service/model_output_parser.go
Normal file
43
service/model_output_parser.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ============================================
|
||||
// 消息解析
|
||||
// ============================================
|
||||
func parseModelOutput(text string) (map[string]any, error) {
|
||||
var result map[string]any
|
||||
if err := json.Unmarshal([]byte(text), &result); err != nil {
|
||||
return nil, fmt.Errorf("解析模型输出失败: %w", err)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// cleanJSONString 清理字符串中可能导致JSON解析失败的字符
|
||||
func cleanJSONString(s string) string {
|
||||
s = strings.ReplaceAll(s, "\u2018", "'") // 左单引号 ‘
|
||||
s = strings.ReplaceAll(s, "\u2019", "'") // 右单引号 ’
|
||||
s = strings.ReplaceAll(s, "\u201c", "\"") // 左双引号 “
|
||||
s = strings.ReplaceAll(s, "\u201d", "\"") // 右双引号 ”
|
||||
return s
|
||||
}
|
||||
|
||||
func truncateStr(s string, maxLen int) string {
|
||||
if len(s) <= maxLen {
|
||||
return s
|
||||
}
|
||||
return s[:maxLen]
|
||||
}
|
||||
|
||||
// sessionParseModelOutput 解析会话模型输出
|
||||
func sessionParseModelOutput(text string) (map[string]any, error) {
|
||||
var result map[string]any
|
||||
if err := json.Unmarshal([]byte(text), &result); err != nil {
|
||||
return nil, fmt.Errorf("解析模型输出失败: %w", err)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user