Nanny7's picture
Initial commit: BanglaSumQA - Bangla AI Summarizer & QA System
d6722a2
Raw
History Blame Contribute Delete
2.45 kB
import axios from 'axios'
const api = axios.create({
baseURL: '/api',
timeout: 180000, // 3 min โ€” model inference can be slow on CPU
})
// โ”€โ”€ Helper: extract readable error message โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
function extractError(err) {
const detail = err?.response?.data?.detail
if (detail) return detail
if (err?.message) return `เฆจเง‡เฆŸเฆ“เฆฏเฆผเฆพเฆฐเงเฆ• เฆธเฆฎเฆธเงเฆฏเฆพ: ${err.message}`
return 'เฆเฆ•เฆŸเฆฟ เฆ…เฆœเฆพเฆจเฆพ เฆธเฆฎเฆธเงเฆฏเฆพ เฆนเฆฏเฆผเง‡เฆ›เง‡เฅค'
}
// โ”€โ”€ Health Check โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
export async function checkHealth() {
const res = await api.get('/health')
return res.data
}
// โ”€โ”€ Summarize: PDF file or raw text โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
export async function summarizeDocument({ file, text, onProgress }) {
const formData = new FormData()
if (file) formData.append('file', file)
if (text) formData.append('text', text)
try {
const res = await api.post('/summarize', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
onUploadProgress: (e) => {
if (onProgress && e.total) {
onProgress(Math.round((e.loaded / e.total) * 100))
}
},
})
return res.data
} catch (err) {
throw new Error(extractError(err))
}
}
// โ”€โ”€ Chat / QA โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
export async function sendChatMessage({ question, context, summary, history }) {
try {
const res = await api.post('/chat', {
question,
context: context || '',
summary: summary || '',
history: history || [],
})
return res.data
} catch (err) {
throw new Error(extractError(err))
}
}
// โ”€โ”€ Transcribe audio blob โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
export async function transcribeAudio(audioBlob) {
const formData = new FormData()
formData.append('audio', audioBlob, 'recording.webm')
try {
const res = await api.post('/transcribe', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
})
return res.data
} catch (err) {
throw new Error(extractError(err))
}
}