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

Guide de lancement open-source pour les projets d'IA locale et de LLM open-source
Un guide open-source aborde les problèmes de découvrabilité pour les projets LLM et d'IA locale en fournissant des conseils structurés sur la préparation pré-lancement, l'exécution le jour du lancement et le suivi post-lancement. Il comprend des modèles et des stratégies pour la distribution communautaire, la sollicitation des créateurs et l'optimisation SEO.

Structure de Prompt Pratique pour les Agents d'Exécution Claude IA
Un développeur partage des techniques d'ingénierie de prompts qui ont réduit les hallucinations dans les agents Claude IA effectuant des appels API, l'extraction de données et des flux de travail multi-étapes. Les stratégies clés incluent la rédaction de prompts comme des contrats, la dédicace de 40% des tokens à la gestion des erreurs et la séparation des conditions d'attente et d'arrêt.

Claude Code Workflow Visual Explique la Hiérarchie de Mémoire et le Système de Compétences
Un utilisateur de Reddit a partagé un diagramme visuel montrant la structure du flux de travail de Claude Code, incluant la stratification de la mémoire avec les fichiers CLAUDE.md et les compétences réutilisables définies dans les répertoires .claude/skills/. La boucle de travail suggère d'utiliser le mode Plan, de décrire les fonctionnalités, d'accepter automatiquement et de valider fréquemment.

Opus 4.7 a cassé 40% des prompts ; la solution a été de structurer CLAUDE.md et Skills
Après la sortie d'Opus 4.7, qui a dégradé environ 40 % des prompts sur 6 configurations, un responsable IA a résolu le problème en remplaçant les prompts ad hoc par des fichiers Skill structurés, un CLAUDE.md hiérarchique et des fichiers de mémoire séparés — réduisant l'utilisation de tokens de 22 % et le nombre d'itérations de 3-4 à 1-2.