From a039111f9f5c47d58fd3edefac7918c6a6683bc0 Mon Sep 17 00:00:00 2001 From: Angus McRitchie Date: Thu, 15 Jan 2026 09:16:26 +1100 Subject: [PATCH] fix(gemini): add additionalContent with grounding metadata to Structured handler --- src/Providers/Gemini/Handlers/Structured.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Providers/Gemini/Handlers/Structured.php b/src/Providers/Gemini/Handlers/Structured.php index 0596eb6b..6d4870f5 100644 --- a/src/Providers/Gemini/Handlers/Structured.php +++ b/src/Providers/Gemini/Handlers/Structured.php @@ -13,6 +13,7 @@ use Prism\Prism\Enums\FinishReason; use Prism\Prism\Exceptions\PrismException; use Prism\Prism\Providers\Gemini\Concerns\ValidatesResponse; +use Prism\Prism\Providers\Gemini\Maps\CitationMapper; use Prism\Prism\Providers\Gemini\Maps\FinishReasonMap; use Prism\Prism\Providers\Gemini\Maps\MessageMap; use Prism\Prism\Providers\Gemini\Maps\SchemaMap; @@ -246,8 +247,12 @@ protected function addStep(array $data, Request $request, FinishReason $finishRe systemPrompts: $request->systemPrompts(), additionalContent: Arr::whereNotNull([ 'thoughtSummaries' => $thoughtSummaries !== [] ? $thoughtSummaries : null, + 'citations' => CitationMapper::mapFromGemini(data_get($data, 'candidates.0', [])) ?: null, + 'searchEntryPoint' => data_get($data, 'candidates.0.groundingMetadata.searchEntryPoint'), + 'searchQueries' => data_get($data, 'candidates.0.groundingMetadata.webSearchQueries'), + 'urlMetadata' => data_get($data, 'candidates.0.urlContextMetadata.urlMetadata'), ]), - structured: $isStructuredStep ? $this->extractStructuredData($textContent) : [], + structured: $isStructuredStep ? $this->extractStructuredData(data_get($data, 'candidates.0.content.parts.0.text') ?? '') : [], toolCalls: $finishReason === FinishReason::ToolCalls ? ToolCallMap::map(data_get($data, 'candidates.0.content.parts', [])) : [], toolResults: $toolResults, raw: $data,