Cette application est un serveur HTTP au standard WSGI. Il est statique (restfull) : pour réaliser une conversation, ceci impose de gérer l’historique des échanges au niveau de l’application appelante. Loin d’être une contrainte, c’est au contraire une facilité permettant de gérer finement le contexte dans lequel sera analysée la question.
Tester WsgiChatBot (retour JSON)
Tester WsgiChatBot (réponse textuelle)
Routes
WsgiChatBot est un web service au standard WSGI (Web Server Gateway Interface) répondant en JSON à chaque question qui lui est posée par HTTP.
Les routes comprennent principalement :
| GET /api/ | Message d’accueil |
| GET /api/version/ | Version du service |
| GET /api/ping | Test fonctionnel. Retourne le temps d’exécution (ms) ou 0 en cas d’erreur |
| GET /api/themes/ | Liste les thèmes (ensemble de données d’une entité) disponibles. |
| GET /api/details/ | Liste les différents niveaux d’élaboration de la réponse. |
| GET /api/history/ | Retourne l’historique de la conversation comprimé. |
| POST /api/post/ | Exécute la requête passée par POST. paramètres du post : voir ci-dessous. |
| POST /api/stream/ | Exécute la requête passée par POST avec les mêmes paramètres que api/post. Permet un affichage progressif. |
POST, action = ’query’
Tous les paramètres du post sont du type String.
| Paramètre | Description | |
| action | obligatoire | ’query’ : La seule action dans l’état actuel du développement. |
| theme | obligatoire | Espace de données (un répertoire sur le serveur). |
| prompt | obligatoire | La requête de l’utilisateur |
| detail | option | Niveau de détail de la réponse (voir la route ’details’). |
| history | option | Contexte (ou historique) dans lequel la question est analysée. |
| language | option | Langage imposé pour la réponse. |
La réponse au format JSON est un tableau de trois éléments :
– response : une chaîne au format MarkDown,
– ws_error : une simple chaîne décrivant une éventuelle erreur.
En l’absence d’un proxy inverse, WsgiChatBot ne répond qu’à l’hôte (localhost ou 127.0.0.1) sur le port 5002.
Exemple d’appel (PHP)
- 'action' => 'query',
- 'theme' => $theme, // Theme du chat
- 'prompt' => $prompt, // Qu'est-ce que OAuthSD ?
- 'detail' => 'Normal',
- 'history' => $history,
- 'language' => "Français"
- );
STREAM, action = ’query’
Variante de streaming SSE de /api/post, appelée avec les mêmes paramètres.
La réponse est de type text/event-stream et comprend trois types d’événements :
- event : token -> data : "delta" : "..." (jetons LLM bruts, un ou plusieurs par événement)
- event : final -> data : "response" : "...", "history" :[] (texte enrichi issu de rework() + historique mis à jour)
- event : end -> data : {} (marqueur de fin)
En cas d’échec : event : error -> data : "message" : "..."