import React, { useState, useEffect } from 'react'; import './App.css'; function App() { const [file, setFile] = useState(null); const [query, setQuery] = useState(''); const [answer, setAnswer] = useState(''); const [context, setContext] = useState([]); const [loading, setLoading] = useState(false); const [uploadStatus, setUploadStatus] = useState(''); const handleFileUpload = async (e: React.ChangeEvent) => { if (e.target.files && e.target.files[0]) { setFile(e.target.files[0]); const formData = new FormData(); formData.append('file', e.target.files[0]); setLoading(true); setUploadStatus('Uploading...'); try { const response = await fetch('http://localhost:8000/upload', { method: 'POST', body: formData, }); if (!response.ok) { const errorData = await response.json(); throw new Error(errorData.detail || 'Failed to upload file'); } const data = await response.json(); setUploadStatus(`Success! Processed ${data.chunks} chunks`); } catch (error) { console.error('Error:', error); setUploadStatus(error instanceof Error ? error.message : 'Error uploading file'); } setLoading(false); } }; const handleQuery = async (e: React.FormEvent) => { e.preventDefault(); if (!query.trim()) return; setLoading(true); try { const response = await fetch('http://localhost:8000/query', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ query: query.trim() }), }); if (!response.ok) { const errorData = await response.json(); throw new Error(errorData.detail || 'Failed to get response'); } const data = await response.json(); console.log(data); setAnswer(data.response); setContext(data.context); } catch (error) { console.error('Error:', error); setAnswer(error instanceof Error ? error.message : 'Error getting response'); } setLoading(false); }; const checkStatus = async () => { try { const response = await fetch('http://localhost:8000/status'); const data = await response.json(); if (data.ready) { setUploadStatus('Session initialized. Ready for document upload.'); } } catch (error) { console.error('Error checking status:', error); } }; useEffect(() => { checkStatus(); }, []); return (
{loading &&

Processing your document...

}

Custom document Q&A System

Upload Document

{uploadStatus &&

{uploadStatus}

}

Ask a Question

setQuery(e.target.value)} placeholder="Enter your question..." disabled={loading || !uploadStatus.includes('Success')} />
{answer && (

Answer

{answer}

Relevant Context

{context.map((text, index) => (
{text}
))}
)}
); } export default App;