Leçons pratiques de la construction d'une IA embarquée dans React Native

Génération de texte avec des LLM
Utilisez llama.rn pour exécuter des modèles GGUF dans React Native. Il encapsule llama.cpp et fournit des liaisons natives pour Android (JNI) et iOS (Metal). Le streaming de tokens via des callbacks fonctionne bien.
La gestion de la mémoire est cruciale : un modèle 7B Q4 nécessite environ 5,5 Go de RAM en cours d'exécution (taille du fichier × 1,5 pour le cache KV et les activations). Utilisez 60 % de la RAM de l'appareil comme budget strict, avertissez à 50 % et bloquez à 60 % pour éviter les fermetures de l'application par le système d'exploitation.
L'accélération GPU utilise OpenCL sur Android (GPU Adreno) et Metal sur iOS. L'attention flash plante avec des couches GPU > 0 sur Android, donc imposez cela dans le code. La quantification du cache KV (f16/q8_0/q4_0) est plus bénéfique que le GPU pour la plupart des appareils ; passer de f16 à q4_0 a presque triplé la vitesse d'inférence lors des tests.
Génération d'images avec Stable Diffusion
Cela est spécifique à la plateforme, sans bibliothèque unique couvrant les deux.
- Android : Utilisez MNN (framework d'Alibaba, CPU, fonctionne sur tous les appareils ARM64) et QNN (Qualcomm AI Engine, accéléré par NPU, uniquement Snapdragon 8 Gen 1+). QNN est 3× plus rapide mais ne fonctionne que sur les puces Qualcomm récentes. Implémentez une détection à l'exécution avec un repli automatique.
- iOS : Utilisez le pipeline ml-stable-diffusion d'Apple avec l'accélération Core ML et Neural Engine. Les modèles palettisés (~1 Go, 6 bits) sont excellents pour les appareils à mémoire limitée ; la pleine précision (~4 Go, fp16) est plus rapide sur ANE mais nécessite de la marge.
Benchmarks réels : 5–10 secondes sur NPU Snapdragon, 15 secondes CPU sur les modèles phares, 8–15 secondes iOS ANE pour 512×512 à 20 étapes. Affichez un aperçu en temps réel toutes les N étapes de dé-bruitage pour éviter que les utilisateurs pensent que l'application est gelée.
Transcription vocale avec Whisper
whisper.rn encapsule whisper.cpp et est simple à intégrer. Proposez plusieurs tailles de modèles (Tiny/Base/Small) et laissez les utilisateurs choisir entre vitesse et précision. La transcription partielle en temps réel (les mots apparaissant au fur et à mesure qu'ils parlent) donne une sensation native.
Mettez l'audio en mémoire tampon dans le code natif et effacez-le après transcription ; n'écrivez pas de fichiers audio sur le disque si la confidentialité est importante.
Vision avec des modèles multimodaux
Les modèles de vision nécessitent deux fichiers : le GGUF principal et un compagnon mmproj (projecteur multimodal). Gérez cela de manière transparente : détectez automatiquement les modèles de vision, téléchargez automatiquement le mmproj, suivez-les comme une seule unité, et recherchez le répertoire du modèle à l'exécution si le lien est rompu. Téléchargez les deux fichiers en parallèle pour réduire le temps de téléchargement de près de moitié pour un modèle de vision de 2B.
SmolVLM à 500M est le point idéal pour mobile, avec environ 7 secondes sur les appareils phares, capable de lire des documents et de décrire des scènes.
Appel d'outils pour les boucles d'agents sur appareil
Les modèles qui prennent en charge l'appel de fonction peuvent utiliser des outils (recherche web, calculatrice, date/heure, informations sur l'appareil) via une boucle automatique : le LLM génère, analyse les appels d'outils, les exécute, injecte les résultats dans le contexte, le LLM continue. Limitez à 3 itérations maximum, 5 appels totaux pour éviter les boucles infinies.
Prenez en charge deux chemins d'analyse : les modèles plus grands produisent des appels d'outils JSON structurés nativement via llama.rn, tandis que les modèles plus petits produisent du XML comme <tool_call>. Détectez la prise en charge des outils au chargement du modèle en inspectant le modèle de chat jinja ; si le modèle ne prend pas en charge les outils, n'injectez pas de définitions d'outils dans l'invite système pour éviter les hallucinations. La calculatrice utilise un analyseur récursif descendant—jamais eval().
Classification d'intention
Si votre application fait à la fois de la génération de texte et d'images, vous devez décider ce que l'utilisateur veut en fonction de l'analyse de l'entrée.
📖 Lisez la source complète : r/LocalLLaMA
👀 See Also

Flux de travail pratique avec Claude Code pour les équipes de développement
Un utilisateur de Reddit partage sa présentation interne sur les meilleures pratiques de Claude Code, incluant la sélection de modèle, les workflows structurés et des techniques de prompt spécifiques pour améliorer la qualité des résultats.

Récupérer les conversations supprimées de Claude Desktop depuis le cache Chromium
Quittez immédiatement Claude Desktop, puis extrayez les données de discussion du cache Chromium blockfile avec ccl_chromium_reader. Récupère les conversations supprimées et les fichiers joints.

Réduisez les coûts de Claude de 60x en déléguant les tâches mécaniques à DeepSeek V4 Flash via MCP
Un utilisateur de Reddit a réduit de 60 fois les dépenses liées à l'API Claude en déléguant la classification de fichiers, le reformatage JSON et l'extraction de champs à DeepSeek V4 Flash via un simple outil MCP et une règle de liste noire dans CLAUDE.md.

Modèles de Conception CLI pour Agents IA : Idées Reçues et Approches Pratiques
Un post sur Reddit clarifie que CLI pour les agents signifie un protocole d'interface de commande textuelle, pas nécessairement un véritable shell, et décrit les principes de conception CLI adaptés aux agents, incluant l'aide de style Unix, la réflexion sur les conseils et les mécanismes de sécurité comme les prévisualisations en mode test et l'autorisation humaine.