From 99cb9ed11fc6b018626ecaa3fa621dbcd162a9d5 Mon Sep 17 00:00:00 2001 From: Ryan <215719061+East-rayyy@users.noreply.github.com> Date: Mon, 23 Mar 2026 10:56:40 +0300 Subject: [PATCH] fix: support HTTP/HTTPS image URLs in Claude and Gemini translators (#344) Previously only base64 data: URLs were handled in the OpenAI-to-Claude and OpenAI-to-Gemini request translators. HTTP/HTTPS image URLs were silently dropped, causing vision-capable models to respond with "I don't see any image." --- open-sse/translator/helpers/geminiHelper.js | 4 ++++ open-sse/translator/request/openai-to-claude.js | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/open-sse/translator/helpers/geminiHelper.js b/open-sse/translator/helpers/geminiHelper.js index 77be223..24737e7 100644 --- a/open-sse/translator/helpers/geminiHelper.js +++ b/open-sse/translator/helpers/geminiHelper.js @@ -54,6 +54,10 @@ export function convertOpenAIContentToParts(content) { inlineData: { mime_type: mimeType, data: data } }); } + } else if (item.type === "image_url" && item.image_url?.url && (item.image_url.url.startsWith("http://") || item.image_url.url.startsWith("https://"))) { + parts.push({ + fileData: { fileUri: item.image_url.url, mimeType: "image/*" } + }); } } } diff --git a/open-sse/translator/request/openai-to-claude.js b/open-sse/translator/request/openai-to-claude.js index bb2c315..d4a4393 100644 --- a/open-sse/translator/request/openai-to-claude.js +++ b/open-sse/translator/request/openai-to-claude.js @@ -216,6 +216,11 @@ function getContentBlocksFromMessage(msg, toolNameMap = new Map()) { type: "image", source: { type: "base64", media_type: match[1], data: match[2] } }); + } else if (url.startsWith("http://") || url.startsWith("https://")) { + blocks.push({ + type: "image", + source: { type: "url", url } + }); } } else if (part.type === "image" && part.source) { blocks.push({ type: "image", source: part.source });