From 25ae077ac9462517597c03b16ae9d5ce203b1c9d Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Thu, 24 Apr 2025 15:59:43 +0800 Subject: [PATCH] refactor: update claude media source handling --- relay/channel/claude/relay-claude.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/relay/channel/claude/relay-claude.go b/relay/channel/claude/relay-claude.go index 0404ce85..95e7c4be 100644 --- a/relay/channel/claude/relay-claude.go +++ b/relay/channel/claude/relay-claude.go @@ -246,17 +246,23 @@ func RequestOpenAI2ClaudeMessage(textRequest dto.GeneralOpenAIRequest) (*dto.Cla } else { imageUrl := mediaMessage.GetImageMedia() claudeMediaMessage.Type = "image" - claudeMediaMessage.Source = &dto.ClaudeMessageSource{} + claudeMediaMessage.Source = &dto.ClaudeMessageSource{ + Type: "base64", + } // 判断是否是url if strings.HasPrefix(imageUrl.Url, "http") { - claudeMediaMessage.Source.Type = "url" - claudeMediaMessage.Source.Url = imageUrl.Url + // 是url,获取图片的类型和base64编码的数据 + fileData, err := service.GetFileBase64FromUrl(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 { _, format, base64String, err := service.DecodeBase64ImageData(imageUrl.Url) if err != nil { return nil, err } - claudeMediaMessage.Source.Type = "base64" claudeMediaMessage.Source.MediaType = "image/" + format claudeMediaMessage.Source.Data = base64String }