diff --git a/packages/ai/src/providers/openai-completions.ts b/packages/ai/src/providers/openai-completions.ts index 7150af2b..f724401b 100644 --- a/packages/ai/src/providers/openai-completions.ts +++ b/packages/ai/src/providers/openai-completions.ts @@ -129,7 +129,7 @@ export const streamOpenAICompletions: StreamFunction<"openai-completions", OpenA partial: output, }); } else if (block.type === "toolCall") { - block.arguments = JSON.parse(block.partialArgs || "{}"); + block.arguments = parseStreamingJson(block.partialArgs); delete block.partialArgs; stream.push({ type: "toolcall_end", diff --git a/packages/ai/src/providers/openai-responses-shared.ts b/packages/ai/src/providers/openai-responses-shared.ts index 4642e4e8..552bc606 100644 --- a/packages/ai/src/providers/openai-responses-shared.ts +++ b/packages/ai/src/providers/openai-responses-shared.ts @@ -414,8 +414,8 @@ export async function processResponsesStream( } else if (item.type === "function_call") { const args = currentBlock?.type === "toolCall" && currentBlock.partialJson - ? JSON.parse(currentBlock.partialJson) - : JSON.parse(item.arguments); + ? parseStreamingJson(currentBlock.partialJson) + : parseStreamingJson(item.arguments || "{}"); const toolCall: ToolCall = { type: "toolCall", id: `${item.call_id}|${item.id}`,