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 = const searchResults =
message?.metadata?.webSearch?.results || message?.metadata?.webSearch?.results ||
message?.metadata?.webSearchInfo || 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) || message?.metadata?.annotations?.map((annotation) => annotation.url_citation) ||
[] []
const citationsUrls = formattedCitations || [] const citationsUrls = formattedCitations || []
@ -222,18 +222,22 @@ const MessageContent: React.FC<Props> = ({ message: _message, model }) => {
{message?.metadata?.groundingMetadata && message.status == 'success' && ( {message?.metadata?.groundingMetadata && message.status == 'success' && (
<> <>
<CitationsList <CitationsList
citations={message.metadata.groundingMetadata.groundingChunks.map((chunk, index) => ({ citations={
message.metadata.groundingMetadata?.groundingChunks?.map((chunk, index) => ({
number: index + 1, number: index + 1,
url: chunk.web?.uri, url: chunk?.web?.uri || '',
title: chunk.web?.title, title: chunk?.web?.title,
showFavicon: false showFavicon: false
}))} })) || []
}
/> />
<SearchEntryPoint <SearchEntryPoint
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: message.metadata.groundingMetadata.searchEntryPoint?.renderedContent __html: message.metadata.groundingMetadata?.searchEntryPoint?.renderedContent
?.replace(/@media \(prefers-color-scheme: light\)/g, 'body[theme-mode="light"]') ? 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"]') .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 OpenAI from 'openai'
import React from 'react' import React from 'react'
import { BuiltinTheme } from 'shiki' import { BuiltinTheme } from 'shiki'
@ -72,7 +73,7 @@ export type Message = {
enabledMCPs?: MCPServer[] enabledMCPs?: MCPServer[]
metadata?: { metadata?: {
// Gemini // Gemini
groundingMetadata?: any groundingMetadata?: GroundingMetadata
// Perplexity Or Openrouter // Perplexity Or Openrouter
citations?: string[] citations?: string[]
// OpenAI // OpenAI