Skip to content

Commit f6644b5

Browse files
committed
fix: preserve Gemini thought_signature in multi-turn tool calls
When using Gemini models with thinking/reasoning enabled through the AI SDK integration, the thought_signature was not preserved across multi-turn conversations with tool calls. The issue was that providerData was using result.providerMetadata (overall response metadata) instead of toolCall.providerMetadata (per-tool-call metadata containing thoughtSignature). Changes: - Non-streaming mode: Prioritize toolCall.providerMetadata over result.providerMetadata for function_call outputs - Streaming mode: Capture part.providerMetadata and include it as providerData in function_call outputs Reference: https://ai.google.dev/gemini-api/docs/thought-signatures Related: openai/openai-agents-python#2137
1 parent d552b50 commit f6644b5

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

packages/agents-extensions/src/aiSdk.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,9 @@ export class AiSdkModel implements Model {
711711
name: toolCall.toolName,
712712
arguments: toolCallArguments,
713713
status: 'completed',
714-
providerData: hasToolCalls ? result.providerMetadata : undefined,
714+
providerData:
715+
toolCall.providerMetadata ??
716+
(hasToolCalls ? result.providerMetadata : undefined),
715717
});
716718
}
717719

@@ -916,6 +918,9 @@ export class AiSdkModel implements Model {
916918
name: (part as any).toolName,
917919
arguments: (part as any).input ?? '',
918920
status: 'completed',
921+
...((part as any).providerMetadata
922+
? { providerData: (part as any).providerMetadata }
923+
: {}),
919924
};
920925
}
921926
break;

0 commit comments

Comments
 (0)