import React, { useState } from 'react'; import { Container, Typography, Button, TextField, Box, Paper } from '@mui/material'; function App() { const [file, setFile] = useState(null); const [question, setQuestion] = useState(''); const [response, setResponse] = useState(''); const [sessionId, setSessionId] = useState(''); const [error, setError] = useState(''); const [isProcessing, setIsProcessing] = useState(false); const handleFileUpload = async (event) => { event.preventDefault(); const formData = new FormData(); formData.append('file', event.target.files[0]); setError(''); setIsProcessing(true); try { const response = await fetch('http://localhost:8000/upload', { method: 'POST', body: formData, headers: { 'Accept': 'application/json' } }); const data = await response.json(); if (data.session_id) { setSessionId(data.session_id); console.log('Upload successful, session ID:', data.session_id); } else { setError('Upload failed: No session ID received'); console.error('Upload response:', data); } } catch (error) { setError('Upload failed: ' + error.message); console.error('Upload error:', error); } finally { setIsProcessing(false); } }; const handleQuestionSubmit = async () => { if (!sessionId) { setError('Please upload a document first'); return; } setError(''); setResponse(''); // Clear previous response try { console.log('Sending query with session ID:', sessionId); const response = await fetch('http://localhost:8000/query', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, body: JSON.stringify({ session_id: sessionId, query: question }), }); console.log('Response status:', response.status); const responseText = await response.text(); console.log('Raw response:', responseText); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}, body: ${responseText}`); } const data = JSON.parse(responseText); console.log('Parsed response data:', data); if (data.answer) { console.log('Setting response:', data.answer); setResponse(data.answer); console.log('Response state after setting:', data.answer); } else { setError('No answer received from the server'); console.error('Unexpected response format:', data); } } catch (error) { setError('Query failed: ' + error.message); console.error('Query error:', error); } }; return ( RAG Application Upload Document {isProcessing ? 'Processing document...' : sessionId ? 'Document uploaded and processed successfully!' : 'No document uploaded yet'} Ask a Question setQuestion(e.target.value)} sx={{ mb: 2 }} placeholder="Enter your question here..." /> Response {error && ( {error} )} {response || "No response yet. Please upload a document and ask a question."} ); } export default App;