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 messageschat: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.