mirror of
https://github.com/jina-ai/node-DeepResearch.git
synced 2026-03-22 07:29:35 +08:00
fix: references gen
This commit is contained in:
72
src/app.ts
72
src/app.ts
@@ -31,7 +31,23 @@ app.get('/health', (req, res) => {
|
|||||||
function buildMdFromAnswer(answer: AnswerAction) {
|
function buildMdFromAnswer(answer: AnswerAction) {
|
||||||
const footnoteRegex = /\[\^(\d+)]/g;
|
const footnoteRegex = /\[\^(\d+)]/g;
|
||||||
|
|
||||||
// First case: no references - remove any footnote citations if they exist
|
// Helper function to format references
|
||||||
|
const formatReferences = (refs: typeof answer.references) => {
|
||||||
|
return refs.map((ref, i) => {
|
||||||
|
const cleanQuote = ref.exactQuote
|
||||||
|
.replace(/[^\p{L}\p{N}\s]/gu, ' ')
|
||||||
|
.replace(/\s+/, ' ');
|
||||||
|
|
||||||
|
const citation = `[^${i + 1}]: ${cleanQuote}`;
|
||||||
|
|
||||||
|
if (!ref.url?.startsWith('http')) return citation;
|
||||||
|
|
||||||
|
const domainName = new URL(ref.url).hostname.replace('www.', '');
|
||||||
|
return `${citation} [${domainName}](${ref.url})`;
|
||||||
|
}).join('\n\n');
|
||||||
|
};
|
||||||
|
|
||||||
|
// First case: no references - remove any footnote citations
|
||||||
if (!answer.references?.length) {
|
if (!answer.references?.length) {
|
||||||
return answer.answer.replace(footnoteRegex, '');
|
return answer.answer.replace(footnoteRegex, '');
|
||||||
}
|
}
|
||||||
@@ -50,17 +66,7 @@ function buildMdFromAnswer(answer: AnswerAction) {
|
|||||||
(_, i) => `[^${i + 1}]`
|
(_, i) => `[^${i + 1}]`
|
||||||
).join('');
|
).join('');
|
||||||
|
|
||||||
const references = answer.references.map((ref, i) => {
|
const references = formatReferences(answer.references);
|
||||||
const cleanQuote = ref.exactQuote
|
|
||||||
.replace(/[^\p{L}\p{N}\s]/gu, ' ').replace(/\s+/, ' ')
|
|
||||||
.trim();
|
|
||||||
|
|
||||||
if (ref.url.startsWith('http')) {
|
|
||||||
return `[^${i + 1}]: [${cleanQuote}](${ref.url})`;
|
|
||||||
} else {
|
|
||||||
return `[^${i + 1}]: ${cleanQuote}`;
|
|
||||||
}
|
|
||||||
}).join('\n\n');
|
|
||||||
|
|
||||||
return `
|
return `
|
||||||
${answer.answer} ${appendedCitations}
|
${answer.answer} ${appendedCitations}
|
||||||
@@ -70,35 +76,15 @@ ${references}
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if correction is needed
|
// Check if correction is needed
|
||||||
const needsCorrection = (() => {
|
const needsCorrection =
|
||||||
if (footnotes.length === answer.references.length &&
|
(footnotes.length === answer.references.length && footnotes.every(n => n === footnotes[0])) ||
|
||||||
footnotes.every(n => n === footnotes[0])) {
|
(footnotes.every(n => n === footnotes[0]) && parseInt(footnotes[0]) > answer.references.length);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return footnotes.every(n => n === footnotes[0]) &&
|
|
||||||
parseInt(footnotes[0]) > answer.references.length;
|
|
||||||
|
|
||||||
|
|
||||||
})();
|
|
||||||
|
|
||||||
if (!needsCorrection) {
|
if (!needsCorrection) {
|
||||||
const references = answer.references.map((ref, i) => {
|
|
||||||
const cleanQuote = ref.exactQuote
|
|
||||||
.replace(/[^a-zA-Z0-9]+/g, ' ')
|
|
||||||
.trim();
|
|
||||||
|
|
||||||
if (ref.url.startsWith('http')) {
|
|
||||||
return `[^${i + 1}]: [${cleanQuote}](${ref.url})`;
|
|
||||||
} else {
|
|
||||||
return `[^${i + 1}]: ${cleanQuote}`;
|
|
||||||
}
|
|
||||||
}).join('\n\n');
|
|
||||||
|
|
||||||
return `
|
return `
|
||||||
${answer.answer}
|
${answer.answer}
|
||||||
|
|
||||||
${references}
|
${formatReferences(answer.references)}
|
||||||
`.trim();
|
`.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,22 +94,10 @@ ${references}
|
|||||||
`[^${++currentIndex}]`
|
`[^${++currentIndex}]`
|
||||||
);
|
);
|
||||||
|
|
||||||
const references = answer.references.map((ref, i) => {
|
|
||||||
const cleanQuote = ref.exactQuote
|
|
||||||
.replace(/[^a-zA-Z0-9]+/g, ' ')
|
|
||||||
.trim();
|
|
||||||
|
|
||||||
if (ref.url.startsWith('http')) {
|
|
||||||
return `[^${i + 1}]: [${cleanQuote}](${ref.url})`;
|
|
||||||
} else {
|
|
||||||
return `[^${i + 1}]: ${cleanQuote}`;
|
|
||||||
}
|
|
||||||
}).join('\n\n');
|
|
||||||
|
|
||||||
return `
|
return `
|
||||||
${correctedAnswer}
|
${correctedAnswer}
|
||||||
|
|
||||||
${references}
|
${formatReferences(answer.references)}
|
||||||
`.trim();
|
`.trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user