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.