Compare commits

...

11 Commits

4 changed files with 44 additions and 8 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "perplexica-frontend", "name": "perplexica-frontend",
"version": "1.10.1", "version": "1.10.2",
"license": "MIT", "license": "MIT",
"author": "ItzCrazyKns", "author": "ItzCrazyKns",
"scripts": { "scripts": {

View File

@ -48,6 +48,7 @@ const MessageBox = ({
const [speechMessage, setSpeechMessage] = useState(message.content); const [speechMessage, setSpeechMessage] = useState(message.content);
useEffect(() => { useEffect(() => {
const citationRegex = /\[([^\]]+)\]/g;
const regex = /\[(\d+)\]/g; const regex = /\[(\d+)\]/g;
let processedMessage = message.content; let processedMessage = message.content;
@ -67,13 +68,36 @@ const MessageBox = ({
) { ) {
setParsedMessage( setParsedMessage(
processedMessage.replace( processedMessage.replace(
regex, citationRegex,
(_, number) => (_, capturedContent: string) => {
`<a href="${ const numbers = capturedContent
message.sources?.[number - 1]?.metadata?.url .split(',')
}" target="_blank" className="bg-light-secondary dark:bg-dark-secondary px-1 rounded ml-1 no-underline text-xs text-black/70 dark:text-white/70 relative">${number}</a>`, .map((numStr) => numStr.trim());
const linksHtml = numbers
.map((numStr) => {
const number = parseInt(numStr);
if (isNaN(number) || number <= 0) {
return `[${numStr}]`;
}
const source = message.sources?.[number - 1];
const url = source?.metadata?.url;
if (url) {
return `<a href="${url}" target="_blank" className="bg-light-secondary dark:bg-dark-secondary px-1 rounded ml-1 no-underline text-xs text-black/70 dark:text-white/70 relative">${numStr}</a>`;
} else {
return `[${numStr}]`;
}
})
.join('');
return linksHtml;
},
), ),
); );
setSpeechMessage(message.content.replace(regex, ''));
return; return;
} }

View File

@ -40,8 +40,12 @@ const geminiChatModels: Record<string, string>[] = [
const geminiEmbeddingModels: Record<string, string>[] = [ const geminiEmbeddingModels: Record<string, string>[] = [
{ {
displayName: 'Gemini Embedding', displayName: 'Text Embedding 004',
key: 'gemini-embedding-exp', key: 'models/text-embedding-004',
},
{
displayName: 'Embedding 001',
key: 'models/embedding-001',
}, },
]; ];

View File

@ -72,6 +72,14 @@ const groqChatModels: Record<string, string>[] = [
displayName: 'Llama 3.2 90B Vision Preview (Preview)', displayName: 'Llama 3.2 90B Vision Preview (Preview)',
key: 'llama-3.2-90b-vision-preview', key: 'llama-3.2-90b-vision-preview',
}, },
/* {
displayName: 'Llama 4 Maverick 17B 128E Instruct (Preview)',
key: 'meta-llama/llama-4-maverick-17b-128e-instruct',
}, */
{
displayName: 'Llama 4 Scout 17B 16E Instruct (Preview)',
key: 'meta-llama/llama-4-scout-17b-16e-instruct',
},
]; ];
export const loadGroqChatModels = async () => { export const loadGroqChatModels = async () => {