refactor: update ClaudeMessageSource struct to include optional Url field and adjust media source handling in relay-claude #993
This commit is contained in:
@@ -70,8 +70,9 @@ func (c *ClaudeMediaMessage) ParseMediaContent() []ClaudeMediaMessage {
|
|||||||
|
|
||||||
type ClaudeMessageSource struct {
|
type ClaudeMessageSource struct {
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
MediaType string `json:"media_type"`
|
MediaType string `json:"media_type,omitempty"`
|
||||||
Data any `json:"data"`
|
Data any `json:"data,omitempty"`
|
||||||
|
Url string `json:"url,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ClaudeMessage struct {
|
type ClaudeMessage struct {
|
||||||
|
|||||||
@@ -246,23 +246,17 @@ func RequestOpenAI2ClaudeMessage(textRequest dto.GeneralOpenAIRequest) (*dto.Cla
|
|||||||
} else {
|
} else {
|
||||||
imageUrl := mediaMessage.GetImageMedia()
|
imageUrl := mediaMessage.GetImageMedia()
|
||||||
claudeMediaMessage.Type = "image"
|
claudeMediaMessage.Type = "image"
|
||||||
claudeMediaMessage.Source = &dto.ClaudeMessageSource{
|
claudeMediaMessage.Source = &dto.ClaudeMessageSource{}
|
||||||
Type: "base64",
|
|
||||||
}
|
|
||||||
// 判断是否是url
|
// 判断是否是url
|
||||||
if strings.HasPrefix(imageUrl.Url, "http") {
|
if strings.HasPrefix(imageUrl.Url, "http") {
|
||||||
// 是url,获取图片的类型和base64编码的数据
|
claudeMediaMessage.Source.Type = "url"
|
||||||
fileData, err := service.GetFileBase64FromUrl(imageUrl.Url)
|
claudeMediaMessage.Source.Url = imageUrl.Url
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("get file base64 from url failed: %s", err.Error())
|
|
||||||
}
|
|
||||||
claudeMediaMessage.Source.MediaType = fileData.MimeType
|
|
||||||
claudeMediaMessage.Source.Data = fileData.Base64Data
|
|
||||||
} else {
|
} else {
|
||||||
_, format, base64String, err := service.DecodeBase64ImageData(imageUrl.Url)
|
_, format, base64String, err := service.DecodeBase64ImageData(imageUrl.Url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
claudeMediaMessage.Source.Type = "base64"
|
||||||
claudeMediaMessage.Source.MediaType = "image/" + format
|
claudeMediaMessage.Source.MediaType = "image/" + format
|
||||||
claudeMediaMessage.Source.Data = base64String
|
claudeMediaMessage.Source.Data = base64String
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user