Quel est l'objectif principal de vérifier le `stop_reason` dans une réponse de l'assistant ?	Déterminer si le traitement des requêtes d'utilisation d'outils est nécessaire.
Quelle modification a été apportée à la fonction `chat` pour améliorer la gestion des outils ?	Elle doit maintenant retourner le `stop_reason` en plus des `parts` et du `text`.
Comment le texte est-il extrait des `parts` d'un message dans la fonction `chat` ?	En parcourant la liste des `parts` et en joignant tous les éléments qui sont de type texte.
Quel est le rôle de la fonction `run_conversation` ?	Gérer une conversation multi-tours impliquant l'utilisation d'outils.
Dans la boucle `while true` de `run_conversation`, quand la boucle s'arrête-t-elle ?	Lorsque le `stop_reason` de la réponse n'est pas égal à `tool_use`.
Si le `stop_reason` indique qu'un outil doit être utilisé, quelle est la prochaine étape dans `run_conversation` ?	Exécuter les outils (`run_tools`) et ajouter le résultat comme message utilisateur.
Comment la réponse de l'assistant (incluant les requêtes d'outils) est-elle ajoutée à l'historique de messages ?	Elle est ajoutée comme un message de l'assistant (`assistant message`).
Quel était le problème avec l'implémentation initiale lorsque l'assistant ne demandait pas d'outil ?	Un message vide était ajouté par erreur, car le `stop_reason` n'était pas vérifié.
Que doit contenir la structure de retour modifiée de la fonction `chat` ?	Une liste de `parts`, le `stop_reason`, et le `text` agrégé.
