[CodeStudy] Une app d’apprentissage de Swift volontairement inconfortable (tuteur IA)
(apps.apple.com)Bonjour.
Je vous présente une application d’apprentissage iOS que j’ai créée comme projet personnel.
Pourquoi je l’ai créée
Quand on demande un concept Swift à ChatGPT ou Claude, on obtient tout de suite une réponse propre et nette.
Mais en revoyant le même concept quelques jours plus tard, j’ai souvent eu l’impression d’avoir l’esprit vide, ce qui m’a rappelé que « apprendre en recevant la réponse » et « apprendre en cherchant la réponse » sont deux choses différentes.
J’ai donc essayé d’implémenter avec un tuteur IA la méthode socratique, c’est-à-dire une approche qui, au lieu de donner la réponse, pose des questions pour amener l’utilisateur à comprendre par lui-même.
En réalité, c’est une app rendue volontairement inconfortable.
De quel type d’app s’agit-il
- 50 concepts Swift (du niveau débutant à avancé, y compris async/await, Actor, Associated Types, etc.)
- Même si l’utilisateur pose une question, l’IA ne donne pas la réponse. À la place, elle guide la réflexion par des contre-questions
- Un concept par jour, avec une structure où l’on atteint la « maîtrise » à travers le dialogue
- Un éditeur intégré permettant de saisir directement du code Swift pendant la conversation (coloration syntaxique + indentation automatique)
- Historique d’apprentissage (heatmap), widget, mode sombre
Stack technique
- iOS : SwiftUI + SwiftData, MVVM + @Observable, 0 dépendance externe
- Backend : Node.js sur Vercel Functions (streaming SSE)
- LLM : Claude Haiku 4.5 via OpenRouter, avec abstraction du provider pour pouvoir remplacer par Gemini/OpenAI
- Curriculum : 50 concepts basés sur JSON, avec prompt engineering côté serveur pour imposer la contrainte « des questions au lieu des réponses »
État actuel
- Pas d’inscription / connexion — pour l’instant, stockage local sur l’appareil uniquement, utilisation anonyme
- Pas de publicité — cela ne me semblait pas correspondre au ton d’une app d’apprentissage
- Pas de paiement — encore en phase de validation de base ; un modèle par abonnement est envisagé plus tard
Limites actuelles / points de réflexion
- Des retours indiquent que l’utilisation pendant le trajet du matin est éprouvante, donc je conçois un « mode 5 minutes » pour rendre la durée des sessions plus prévisible
- Le premier temps de réponse p99 est d’environ 9 secondes (mesure OpenRouter). L’objectif de la prochaine version est 3 à 4 secondes avec l’application du prompt caching
- Le coût en tokens par utilisateur est d’environ $0.005/DAU. Il faudra le réévaluer au moment du passage à l’échelle
3 commentaires
Ce qui m’a le plus surpris en le développant, c’est que j’ai passé bien plus de temps que prévu sur le prompt engineering, parce que le LLM essayait sans cesse de contourner les contraintes que j’avais mises dans le system prompt pour créer une « IA qui ne donne pas la réponse » (évaluation de la maîtrise basée sur des tokens [MASTERY]).
Gemini Flash respectait mieux cette contrainte que Claude Haiku, mais à l’inverse, Claude était meilleur sur la profondeur des questions. Pour l’instant, je suis sur la combinaison Claude + affinage précis du prompt.
Si certains d’entre vous ont déjà conçu des prompts similaires pour « brider un LLM », je serais preneur de vos retours d’expérience 🙏
Quel serait l’élément différenciant entre apprendre en assignant directement un rôle à un agent et en échangeant avec lui, et apprendre en utilisant cette application ?
J’avais moi aussi essayé avec GPT et Claude, tous les deux via des prompts personnalisés, mais au bout de quelques jours on finit par lâcher un « ah, donne-moi juste la réponse ! »... Et à force, il y a souvent des situations où la réponse est carrément donnée.
Du coup, plus qu’un apprentissage, j’avais vraiment l’impression d’être en train de faire des recherches.
L’application que j’ai créée garde le system prompt et l’évaluation de la maîtrise côté serveur, donc ça limite un peu ce problème.
Le moment où la session se termine est aussi défini à l’avance, donc je pense que c’est pratique à utiliser sur le trajet du matin pour aller au travail.
En fait, comme vous le dites, la méthode en elle-même peut tout à fait se faire avec GPT ou Claude.
Mais disons que c’est un format qui convient à des gens comme moi, qui n’arrivent pas à être réguliers tout seuls ! :)