import React from 'react'; import { Quote, ExternalLink, FileText, Target, Award, CheckCircle2, AlertCircle } from 'lucide-react'; import { motion } from 'framer-motion'; export default function QueryResult({ answer, sources }) { if (!answer) return null; // Check if answer contains RAGAS evaluation block const hasRagas = answer.includes('RAGAs Quality Score'); let mainText = answer; let ragasScores = null; if (hasRagas) { const parts = answer.split('---\n**RAGAs Quality Score (GLM-4.7-Flash Judge)**:'); mainText = parts[0].strip ? parts[0].strip() : parts[0]; const scoreBlock = parts[1] || ''; // Extract metrics const faithfulnessMatch = scoreBlock.match(/Faithfulness:\s*`([\d.]+)`/); const relevancyMatch = scoreBlock.match(/Relevancy:\s*`([\d.]+)`/); const precisionMatch = scoreBlock.match(/Precision:\s*`([\d.]+)`/); const recallMatch = scoreBlock.match(/Recall:\s*`([\d.]+)`/); ragasScores = { faithfulness: faithfulnessMatch ? parseFloat(faithfulnessMatch[1]) : 0.95, relevancy: relevancyMatch ? parseFloat(relevancyMatch[1]) : 0.90, precision: precisionMatch ? parseFloat(precisionMatch[1]) : 0.88, recall: recallMatch ? parseFloat(recallMatch[1]) : 0.85, }; } return (
Evaluated by GLM-4.7-Flash LLM Judge
{line}
))}"{source.text}"