API - Chat Streaming
L'API Chat Streaming permet d'intégrer NeuraChat dans vos applications avec des réponses en temps réel via Server-Sent Events (SSE).
Scopes Requis
- chat:read — Lister les sessions et messages
- chat:write — Créer des sessions et envoyer des messages
Sessions Créer une Session POST /api/v1/chat/sessions
Corps de la requête :
{ "persona_id": 15, "project_id": 1, "metadata": { "user_name": "Georges", "context": "Support commercial" } }
Paramètres :
Champ Type Requis Description persona_id integer Oui ID du persona à utiliser project_id integer Oui ID du projet (détermine l'espace RAG) metadata object Non Métadonnées additionnelles
Réponse :
{ "success": true, "data": { "session_id": "sess_abc123", "persona": "Directeur Commercial Expert", "project": "Présentation commerciale", "status": "active" } } Lister les Sessions GET /api/v1/chat/sessions?status=active&limit=20 Récupérer l'Historique d'une Session GET /api/v1/chat/sessions/{session_id}/messages Envoyer un Message (Streaming SSE) POST /api/v1/chat/messages
Corps de la requête :
{ "session_id": "sess_abc123", "message": "Quels sont nos principaux avantages concurrentiels ?", "stream": true }
Paramètres :
Champ Type Requis Description session_id string Oui ID de la session message string Oui Message de l'utilisateur stream boolean Non true pour le streaming SSE (défaut : true) Streaming SSE
Lorsque stream: true, la réponse est envoyée en Server-Sent Events :
Format des événements event: token data: {"content": "Nos", "index": 0}
event: token data: {"content": " principaux", "index": 1}
event: token data: {"content": " avantages", "index": 2}
event: sources data: {"documents": [{"title": "Offre commerciale.pdf", "score": 0.92}]}
event: done data: {"message_id": "msg_xyz789", "tokens_used": 245, "confidence": 0.89} Types d'événements Événement Description token Fragment de texte de la réponse (streaming temps réel) sources Documents RAG utilisés pour générer la réponse done Fin de la réponse avec métadonnées error Erreur durant la génération Implémentation Client JavaScript (EventSource) const response = await fetch('https://app.neurascope.ai/api/v1/chat/messages', { method: 'POST', headers: { 'Authorization': 'Bearer nsc_VOTRE_CLE_API', 'Content-Type': 'application/json' }, body: JSON.stringify({ session_id: 'sess_abc123', message: 'Votre question', stream: true }) });
const reader = response.body.getReader(); const decoder = new TextDecoder();
while (true) { const { done, value } = await reader.read(); if (done) break; const text = decoder.decode(value); // Traiter les événements SSE console.log(text); } Python import requests
response = requests.post( 'https://app.neurascope.ai/api/v1/chat/messages', headers={ 'Authorization': 'Bearer nsc_VOTRE_CLE_API', 'Content-Type': 'application/json' }, json={ 'session_id': 'sess_abc123', 'message': 'Votre question', 'stream': True }, stream=True )
for line in response.iter_lines(): if line: print(line.decode('utf-8')) Mode Non-Streaming
Si stream: false, la réponse complète est retournée en une seule fois :
{ "success": true, "data": { "message_id": "msg_xyz789", "content": "Nos principaux avantages concurrentiels sont...", "sources": [ {"title": "Offre commerciale.pdf", "score": 0.92} ], "tokens_used": 245, "confidence": 0.89 } } Confidence Scoring
Chaque réponse inclut un score de confiance (confidence) entre 0 et 1, basé sur la pertinence des documents RAG retrouvés. Un score supérieur à 0.8 indique une forte pertinence.