From c5580f5b7131eef3759b1096ba6197e37c190272 Mon Sep 17 00:00:00 2001 From: Chen Tao <70054568+eeee0717@users.noreply.github.com> Date: Thu, 17 Apr 2025 15:43:30 +0800 Subject: [PATCH] fix: knowledge citations (#4988) --- .../src/pages/home/Messages/MessageContent.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/pages/home/Messages/MessageContent.tsx b/src/renderer/src/pages/home/Messages/MessageContent.tsx index 997b463d..2a4d164b 100644 --- a/src/renderer/src/pages/home/Messages/MessageContent.tsx +++ b/src/renderer/src/pages/home/Messages/MessageContent.tsx @@ -153,7 +153,8 @@ const MessageContent: React.FC = ({ message: _message, model }) => { message.metadata?.citations || message.metadata?.webSearch || message.metadata?.webSearchInfo || - message.metadata?.annotations + message.metadata?.annotations || + message.metadata?.knowledge ) ) { return message.content @@ -161,20 +162,26 @@ const MessageContent: React.FC = ({ message: _message, model }) => { let content = message.content - const searchResultsCitations = message?.metadata?.webSearch?.results?.map((result) => result.url) || [] + const websearchResultsCitations = message?.metadata?.webSearch?.results?.map((result) => result.url) || [] + const knowledgeResultsCitations = message?.metadata?.knowledge?.map((result) => result.sourceUrl) || [] + + const searchResultsCitations = [...websearchResultsCitations, ...knowledgeResultsCitations] const citations = message?.metadata?.citations || searchResultsCitations // Convert [n] format to superscript numbers and make them clickable // Use tag for superscript and make it a link with citation data - if (message.metadata?.webSearch || message.metadata.knowledge) { + if (message.metadata?.webSearch || message.metadata?.knowledge) { content = content.replace(/\[\[(\d+)\]\]|\[(\d+)\]/g, (match, num1, num2) => { const num = num1 || num2 const index = parseInt(num) - 1 if (index >= 0 && index < citations.length) { const link = citations[index] + const isWebLink = link && (link.startsWith('http://') || link.startsWith('https://')) const citationData = link ? encodeHTML(JSON.stringify(citationsData.get(link) || { url: link })) : null - return link ? `[${num}](${link})` : `${num}` + return link && isWebLink + ? `[${num}](${link})` + : `${num}` } return match }) @@ -188,6 +195,7 @@ const MessageContent: React.FC = ({ message: _message, model }) => { }, [ message.metadata?.citations, message.metadata?.webSearch, + message.metadata?.knowledge, message.metadata?.webSearchInfo, message.metadata?.annotations, message.content,