From cc64e4dbe23b248189984985be9ba745c769a6cc Mon Sep 17 00:00:00 2001 From: Vaayne Date: Mon, 17 Mar 2025 14:36:50 +0800 Subject: [PATCH] feat: enhance OpenAIProvider to handle diverse content types in tool responses --- src/renderer/src/providers/OpenAIProvider.ts | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts index 3b134419d8..5a6c0830aa 100644 --- a/src/renderer/src/providers/OpenAIProvider.ts +++ b/src/renderer/src/providers/OpenAIProvider.ts @@ -513,10 +513,30 @@ export default class OpenAIProvider extends BaseProvider { upsertMCPToolResponse(toolResponses, { tool: mcpTool, status: 'invoking', id: toolCall.id }, onChunk) const toolCallResponse = await callMCPTool(mcpTool) + const toolResponsContent: { type: string; text?: string; image_url?: { url: string } }[] = [] + for (const content of toolCallResponse.content) { + if (content.type === 'text') { + toolResponsContent.push({ + type: 'text', + text: content.text + }) + } else if (content.type === 'image') { + toolResponsContent.push({ + type: 'image_url', + image_url: { url: `data:${content.mimeType};base64,${content.data}` } + }) + } else { + console.warn('Unsupported content type:', content.type) + toolResponsContent.push({ + type: 'text', + text: 'unsupported content type: ' + content.type + }) + } + } reqMessages.push({ role: 'tool', - content: toolCallResponse.content, + content: toolResponsContent, tool_call_id: toolCall.id } as ChatCompletionToolMessageParam)