ML-Learner / frontend /src /services /pythonApi.ts
VashuTheGreat2's picture
Upload folder using huggingface_hub
0e17177 verified
import axios from 'axios';
const PYTHON_BASE_URL = import.meta.env.VITE_PYTHON_BASE_URL || 'http://localhost:8000';
const pythonApiInstance = axios.create({
baseURL: PYTHON_BASE_URL,
headers: {
'Content-Type': 'application/json',
},
});
class PythonApi {
// ── User ──────────────────────────────────────────────────────────────
/** Generate an interview-ready schema from plain-text user details */
async createSchema(userDetails: string) {
const response = await pythonApiInstance.post('/api/user/generate_schema', {
userDetails,
});
return response.data;
}
/** Upload a resume PDF and get back a parsed "about user" text blob */
async uploadResume(file: File) {
const formData = new FormData();
formData.append('file', file);
const response = await pythonApiInstance.post('/api/user/aboutUserByResume', formData, {
headers: { 'Content-Type': 'multipart/form-data' },
});
return response.data;
}
// ── Interview ─────────────────────────────────────────────────────────
/** Generate N interview schemas for given fields / companies */
async generateInterviewSchemas(
noOfInterviews: number = 3,
fields: string[] = ['AI/ML', 'Backend', 'Data Science'],
companiesName: string[] = ['Google', 'Amazon', 'Microsoft'],
updated: boolean = false,
) {
const params = new URLSearchParams();
params.append('no_of_interviews', noOfInterviews.toString());
params.append('updated', updated.toString());
fields.forEach((f) => params.append('fields', f));
companiesName.forEach((c) => params.append('companiesName', c));
const response = await pythonApiInstance.post(
`/api/interview/generate_interview_schemas?${params.toString()}`,
);
return response.data;
}
/** Send a single chat turn to the AI interviewer */
async chatInterviewer(
threadId: string,
timeRemain: number,
topic: string,
userInput: string,
) {
const response = await pythonApiInstance.post('/api/interview/chat_interviewer', null, {
params: {
thread_id: threadId,
time_remain: timeRemain,
topic,
user_input: userInput,
},
});
return response.data;
}
// ── Performance ───────────────────────────────────────────────────────
/** Fetch AI-evaluated performance report for a given thread */
async getPerformance(threadId: string) {
const response = await pythonApiInstance.get(`/api/performance/performance/${threadId}`);
return response.data;
}
// ── Thread ────────────────────────────────────────────────────────────
/** Delete a thread conversation from the SQLite checkpointer */
async deleteThread(threadId: string) {
const response = await pythonApiInstance.delete(`/api/thread/${threadId}`);
return response.data;
}
// ── Health ────────────────────────────────────────────────────────────
async health() {
const response = await pythonApiInstance.get('/api/health/health');
return response.data;
}
// ── Live Job Fetcher ──────────────────────────────────────────────────
/** Fetch real-time jobs from indeed / internet */
async fetchJobs(jobtile: string = "machine learning intern", updated: boolean = false) {
const response = await pythonApiInstance.post(`/api/jobFetcher/fetchJobs?jobtile=${encodeURIComponent(jobtile)}&updated=${updated}`);
return response.data;
}
async similarJobPredictor(jobDiscription:string,userDetails:string){
const response = await pythonApiInstance.post(`/api/similarJobPredictor/similarJobPredictor?jobDiscription=${encodeURIComponent(jobDiscription)}&userDetails=${encodeURIComponent(userDetails)}`);
console.log("Similar Job Predictor",response.data);
return response.data;
}
}
export default new PythonApi();