This repository contains the practical materials I designed and taught for the Conversational Agents AI Course at Université Côte d’Azur (M2 - Master in Artificial Intelligence, Dec 2024 – Jan 2025).
- Duration: 2 months, 7 workshops
- Audience: Master’s students in Artificial Intelligence
- Focus: Design and implementation of Conversational Agents using Large Language Models, FastAPI, and Langchain
- Python 3.11+
- FastAPI
- Langchain
| Workshop | Topics |
|---|---|
| 1 | Introduction to LLMs and Chatbots |
| 2 | APIs and REST principles |
| 3 | FastAPI fundamentals |
| 4 | Langchain Chains & Tools |
| 5 | Function Calling with LLMs |
| 6 | Evaluation & Prompt Engineering |
| 7 | Group Projects & Demo Day |
This course was designed and taught by Nathan Rihet, Full-Stack & AI Engineer, as part of an academic collaboration with Université Côte d’Azur.
Helping students bridge the gap between AI theory and real-world applications through hands-on LLM-based projects.
Feel free to use, adapt, and contribute.
C:.
├───api/ # Gestion des routes et endpoints de l'API
│ ├───endpoints/ # Endpoints spécifiques par fonctionnalité
│ │ └───chat.py # Endpoint pour les fonctionnalités de chat
│ └───router.py # Router principal regroupant tous les endpoints
├───core/ # Configuration et éléments centraux de l'application
├───models/ # Modèles de données Pydantic
│ └───chat.py # Modèles pour les requêtes/réponses de chat
├───services/ # Services métier
│ └───llm_service.py # Service d'interaction avec le LLM
├───utils/ # Utilitaires et helpers
└───main.py # Point d'entrée de l'application
- Python 3.11+ (ici : https://www.python.org/downloads/release/python-3110/ il faut redémarrer après installation pour avoir le $PATH sur l'OS)
- Visual Studio Code avec l'extension Python
- Une clé OpenAI que je vais vous fournir
- Cloner le projet
git clone <URL_DU_DEPOT>
cd <NOM_DU_PROJET>- Créer l'environnement virtuel
python -m venv venv- Activer l'environnement virtuel
- Windows :
.\venv\Scripts\activate- macOS/Linux :
source venv/bin/activate- Installer les dépendances
pip install -r requirements.txt- Configurer la clé API OpenAI
Créer un fichier
.envà la racine du projet :
OPENAI_API_KEY=votre-clé-api-openai
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware- Point d'entrée de l'application
- Configure FastAPI et les middlewares
- Initialise les routes
class ChatRequest(BaseModel):
message: str- Définit la structure des données entrantes/sortantes
- Utilise Pydantic pour la validation des données
- Version simple pour débuter, extensible pour le contexte
class LLMService:
def __init__(self):
self.llm = ChatOpenAI(...)- Gère l'interaction avec le modèle de langage
- Configure le client OpenAI
- Traite les messages et le contexte
@router.post("/chat")
async def chat(request: ChatRequest) -> ChatResponse:- Définit les endpoints de l'API
- Gère les requêtes HTTP
- Valide les données entrantes
curl -X 'POST' \
'http://localhost:8000/chat/simple' \
-H 'Content-Type: application/json' \
-d '{"message": "Bonjour!"}'curl -X 'POST' \
'http://localhost:8000/chat/with-context' \
-H 'Content-Type: application/json' \
-d '{
"message": "Bonjour!",
"context": [
{"role": "user", "content": "Comment vas-tu?"},
{"role": "assistant", "content": "Je vais bien, merci!"}
]
}'- Ouvrir le projet dans VS Code
- Aller dans la section "Run and Debug" (Ctrl + Shift + D)
- Sélectionner la configuration "Python: FastAPI"
- Appuyer sur F5 ou cliquer sur le bouton Play
- Démarrer Swagger : http://127.0.0.1:8000/docs
/chat/simple: Version basique sans contexte/chat/with-context: Version avancée avec gestion du contexte
- La requête arrive sur l'endpoint
- Les modèles Pydantic valident les données
- Le service LLM traite la demande
- La réponse est formatée et renvoyée
-
Démarrer avec la version simple
- Comprendre la structure de base
- Tester les appels API simples
-
Évoluer vers la version avec contexte
- Ajouter la gestion de l'historique
- Comprendre l'importance du contexte dans les LLM
-
Explorer les fonctionnalités avancées
- Implémenter des prompts personnalisés
- Gérer différents types de réponses
-
Erreur de clé API
- Vérifier le fichier
.env - S'assurer que la clé est valide
- Vérifier le fichier
-
Erreurs de dépendances
- Vérifier l'activation du venv
- Réinstaller les requirements
-
Erreurs de contexte
- Vérifier le format du contexte
- S'assurer que les rôles sont valides
-
Powershell
- Si les droits admin ne sont pas présent : ''Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force''