Spaces:
Sleeping
Sleeping
File size: 3,681 Bytes
90d6a84 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | # Interview Simulation API Documentation
Cette documentation détaille l'utilisation de l'API de simulation d'entretiens, motorisée par LangGraph et FastAPI.
## Introduction
L'**Interview Simulation API** permet de mener des simulations d'entretiens d'embauche réalistes. Elle utilise un système d'agents spécialisés (Icebreaker, Auditeur, Enquêteur, Stratège, Projecteur) pour évaluer un candidat par rapport à une offre d'emploi spécifique.
**Base URL:** `http://localhost:7860` (ou URL de déploiement)
**Version:** `1.0.0`
## Configuration & Authentification
L'API utilise des variables d'environnement pour la configuration :
- `OPENAI_API_KEY`: Requis pour les agents LLM.
- `LANGTRACE_API_KEY`: Pour l'observabilité (Langtrace).
- `CORS_ORIGINS`: Liste des origines autorisées (défaut: `*`).
## Endpoints
### 1. Health Check
Vérifie que l'API est opérationnelle.
- **URL:** `/`
- **Method:** `GET`
- **Success Response (200 OK):**
```json
{
"status": "ok"
}
```
### 2. Simulate Interview
Déclenche ou poursuit une simulation d'entretien.
- **URL:** `/simulate-interview/`
- **Method:** `POST`
- **Request Body:**
```json
{
"user_id": "string", // ID unique de l'utilisateur
"job_offer_id": "string", // ID de l'offre d'emploi
"cv_document": { // Données extraites du CV
"candidat": { ... } // Voir section "Data Models"
},
"job_offer": { // Détails de l'offre
"poste": "string",
"entreprise": "string",
"mission": "string",
...
},
"messages": [ // Historique de la conversation (optionnel)
{
"role": "user",
"content": "Bonjour"
},
...
],
"cheat_metrics": { ... } // Métriques anti-triche (optionnel)
}
```
- **Success Response (200 OK):**
```json
{
"response": "Texte généré par l'agent IA",
"status": "interviewing" | "interview_finished"
}
```
- **Error Responses:**
- `400 Bad Request`: Payload incomplet ou données invalides.
- `500 Internal Server Error`: Erreur lors de l'exécution du graph LangGraph.
## Data Models (Schemas)
### Feedback Output (Output final de l'analyse)
Une fois l'entretien terminé, un rapport complet est généré (via Celery) suivant cette structure :
- **CandidatFeedback**: Points forts, axes d'amélioration, conseils, score global.
- **EntrepriseInsights**:
- **Dashboard**: Technique, Cognitive, Comportementale (0-100).
- **Decision**: RECRUTER, APPROFONDIR ou REJETER.
- **Fraud Detection**: Score global d'usage d'IA, mots-clés détectés, alertes (red flags).
## Exemples d'Usage
### Exemple cURL
```bash
curl -X POST http://localhost:7860/simulate-interview/ \
-H "Content-Type: application/json" \
-d '{
"user_id": "user_123",
"job_offer_id": "job_456",
"cv_document": { "candidat": { "first_name": "Jean", "expériences": [] } },
"job_offer": { "poste": "Développeur Python", "entreprise": "TechCorp" },
"messages": []
}'
```
### Exemple Python (Requests)
```python
import requests
url = "http://localhost:7860/simulate-interview/"
payload = {
"user_id": "user_123",
"job_offer_id": "job_456",
"cv_document": { "candidat": { "first_name": "Jean", "expériences": [] } },
"job_offer": { "poste": "Développeur Python", "entreprise": "TechCorp" },
"messages": [{"role": "user", "content": "Je suis prêt."}]
}
response = requests.post(url, json=payload)
print(response.json())
```
## Error Handling
Toutes les erreurs renvoient un format JSON standardisé :
```json
{
"error": "Description de l'erreur"
}
```
|