Service API de discussion
L'API a trois routes principales
- /
- Route d'accueil par défaut utilisée pour lancer une session de discussion et récupérer l'identifiant de session
- /chat/{session_id}
- Route de discussion principale utilisée pour interroger le modèle GPT-3.5-turbo et recevoir une réponse SSE
- /chat_history/{session_id}
- Cet itinéraire permet de récupérer le dialogue complet d'une session donnée. Les invites du client et les réponses de l'IA sont renvoyées.
Service de lancement
Pour lancer le service
- Créez un fichier
.env
dans le répertoire par défaut du projet et ajoutez votre OPENAI_API_KEY vim .env
, OPENAI_API_KEY=<key>
- Créez l'image Docker à l'aide de la commande suivante dans le répertoire par défaut.
docker build -t chat_api_service .
- Lancez le conteneur Docker à l'aide de la commande suivante
docker run -d -p 8000:8000 chat_api_service
Utilisation de l'API
Suivez ce flux pour utiliser l'API
- Lancez une session de discussion et récupérez l'ID de session
curl http://127.0.0.1:8000?username=TR
- Envoyer des invites à l'API
curl -X PUT http://127.0.0.1:8000/chat/<session_id> -H "Content-Type: application/json" -d '{"payload": "Hello! What is your name?"}'
- Obtenez l'historique des discussions
curl http://127.0.0.1:8000/chat_history/<session_id>
Alternativement, un meilleur outil pour cingler l'API serait Postman ; C'est l'outil que j'ai utilisé pendant le développement.
Exécution de tests
Lancez le conteneur Docker en mode interactif pour exécuter la suite de tests. Le serveur Redis et les serveurs Uvicorn doivent être en cours d'exécution pour que les tests s'exécutent.
- Lancer le conteneur en mode interactif
docker run -it --rm -p 8000:8000 --entrypoint bash chat_api_service
- Exécutez
launch.sh
en arrière-plan ./launch.sh &
- Exécuter la suite de tests
python -m pytest tests
Travaux futurs
Les futures améliorations de l'API incluent
- Construire un front-end avec Streamlit, voir ce dépôt pour référence https://github.com/sftwre/Chatbot.
- Créez un itinéraire pour récupérer toutes les sessions existantes pour un nom d'utilisateur donné.
- Créez des invites pour lancer un jeu-questionnaire sur la sitcom des années 90 avec le client. Les informations sur les émissions peuvent être extraites de Fandom et utilisées par le LLM pour créer des questions triviales via RAG.