fix(MessageContent): handle optional chaining for grounding metadata and citations

This commit is contained in:
suyao 2025-04-08 17:09:31 +08:00 committed by 亢奋猫
parent b1bd5d0531
commit d38c4c7368
2 changed files with 16 additions and 11 deletions

View File

@ -86,7 +86,7 @@ const MessageContent: React.FC<Props> = ({ message: _message, model }) => {
const searchResults =
message?.metadata?.webSearch?.results ||
message?.metadata?.webSearchInfo ||
message?.metadata?.groundingMetadata?.groundingChunks.map((chunk) => chunk.web) ||
message?.metadata?.groundingMetadata?.groundingChunks?.map((chunk) => chunk?.web) ||
message?.metadata?.annotations?.map((annotation) => annotation.url_citation) ||
[]
const citationsUrls = formattedCitations || []
@ -222,18 +222,22 @@ const MessageContent: React.FC<Props> = ({ message: _message, model }) => {
{message?.metadata?.groundingMetadata && message.status == 'success' && (
<>
<CitationsList
citations={message.metadata.groundingMetadata.groundingChunks.map((chunk, index) => ({
citations={
message.metadata.groundingMetadata?.groundingChunks?.map((chunk, index) => ({
number: index + 1,
url: chunk.web?.uri,
title: chunk.web?.title,
url: chunk?.web?.uri || '',
title: chunk?.web?.title,
showFavicon: false
}))}
})) || []
}
/>
<SearchEntryPoint
dangerouslySetInnerHTML={{
__html: message.metadata.groundingMetadata.searchEntryPoint?.renderedContent
?.replace(/@media \(prefers-color-scheme: light\)/g, 'body[theme-mode="light"]')
__html: message.metadata.groundingMetadata?.searchEntryPoint?.renderedContent
? message.metadata.groundingMetadata.searchEntryPoint.renderedContent
.replace(/@media \(prefers-color-scheme: light\)/g, 'body[theme-mode="light"]')
.replace(/@media \(prefers-color-scheme: dark\)/g, 'body[theme-mode="dark"]')
: ''
}}
/>
</>

View File

@ -1,3 +1,4 @@
import { GroundingMetadata } from '@google/generative-ai'
import OpenAI from 'openai'
import React from 'react'
import { BuiltinTheme } from 'shiki'
@ -72,7 +73,7 @@ export type Message = {
enabledMCPs?: MCPServer[]
metadata?: {
// Gemini
groundingMetadata?: any
groundingMetadata?: GroundingMetadata
// Perplexity Or Openrouter
citations?: string[]
// OpenAI