fix: knowledge citations (#4988)
This commit is contained in:
parent
f8f808c9f4
commit
c5580f5b71
@ -153,7 +153,8 @@ const MessageContent: React.FC<Props> = ({ message: _message, model }) => {
|
|||||||
message.metadata?.citations ||
|
message.metadata?.citations ||
|
||||||
message.metadata?.webSearch ||
|
message.metadata?.webSearch ||
|
||||||
message.metadata?.webSearchInfo ||
|
message.metadata?.webSearchInfo ||
|
||||||
message.metadata?.annotations
|
message.metadata?.annotations ||
|
||||||
|
message.metadata?.knowledge
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
return message.content
|
return message.content
|
||||||
@ -161,20 +162,26 @@ const MessageContent: React.FC<Props> = ({ message: _message, model }) => {
|
|||||||
|
|
||||||
let content = message.content
|
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
|
const citations = message?.metadata?.citations || searchResultsCitations
|
||||||
|
|
||||||
// Convert [n] format to superscript numbers and make them clickable
|
// Convert [n] format to superscript numbers and make them clickable
|
||||||
// Use <sup> tag for superscript and make it a link with citation data
|
// Use <sup> 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) => {
|
content = content.replace(/\[\[(\d+)\]\]|\[(\d+)\]/g, (match, num1, num2) => {
|
||||||
const num = num1 || num2
|
const num = num1 || num2
|
||||||
const index = parseInt(num) - 1
|
const index = parseInt(num) - 1
|
||||||
if (index >= 0 && index < citations.length) {
|
if (index >= 0 && index < citations.length) {
|
||||||
const link = citations[index]
|
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
|
const citationData = link ? encodeHTML(JSON.stringify(citationsData.get(link) || { url: link })) : null
|
||||||
return link ? `[<sup data-citation='${citationData}'>${num}</sup>](${link})` : `<sup>${num}</sup>`
|
return link && isWebLink
|
||||||
|
? `[<sup data-citation='${citationData}'>${num}</sup>](${link})`
|
||||||
|
: `<sup>${num}</sup>`
|
||||||
}
|
}
|
||||||
return match
|
return match
|
||||||
})
|
})
|
||||||
@ -188,6 +195,7 @@ const MessageContent: React.FC<Props> = ({ message: _message, model }) => {
|
|||||||
}, [
|
}, [
|
||||||
message.metadata?.citations,
|
message.metadata?.citations,
|
||||||
message.metadata?.webSearch,
|
message.metadata?.webSearch,
|
||||||
|
message.metadata?.knowledge,
|
||||||
message.metadata?.webSearchInfo,
|
message.metadata?.webSearchInfo,
|
||||||
message.metadata?.annotations,
|
message.metadata?.annotations,
|
||||||
message.content,
|
message.content,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user