feat: 支持CozeV3

This commit is contained in:
suziheng
2025-01-22 16:43:40 +08:00
parent 6eb4e788c7
commit 533f9853ac
13 changed files with 359 additions and 15 deletions

View File

@@ -1,5 +1,7 @@
package model
import "encoding/json"
type Message struct {
Role string `json:"role,omitempty"`
Content any `json:"content,omitempty"`
@@ -37,6 +39,53 @@ func (m Message) StringContent() string {
return ""
}
func (m Message) CozeV3StringContent() string {
content, ok := m.Content.(string)
if ok {
return content
}
contentList, ok := m.Content.([]any)
if ok {
contents := make([]map[string]any, 0)
var contentStr string
for _, contentItem := range contentList {
contentMap, ok := contentItem.(map[string]any)
if !ok {
continue
}
switch contentMap["type"] {
case "text":
if subStr, ok := contentMap["text"].(string); ok {
contents = append(contents, map[string]any{
"type": "text",
"text": subStr,
})
}
case "image_url":
if subStr, ok := contentMap["image_url"].(string); ok {
contents = append(contents, map[string]any{
"type": "image",
"file_url": subStr,
})
}
case "file":
if subStr, ok := contentMap["image_url"].(string); ok {
contents = append(contents, map[string]any{
"type": "file",
"file_url": subStr,
})
}
}
}
if len(contents) > 0 {
b, _ := json.Marshal(contents)
return string(b)
}
return contentStr
}
return ""
}
func (m Message) ParseContent() []MessageContent {
var contentList []MessageContent
content, ok := m.Content.(string)