# đŸŽ™ïž Studio IA Multimodal — Architecture & SpĂ©cifications ## Contexte du projet Studio IA accessible Ă  des utilisateurs novices via navigateur web. Interface unifiĂ©e pour la gĂ©nĂ©ration audio, image, et code, pilotĂ©e par un chatbot Mistral. --- ## 1. Architecture gĂ©nĂ©rale ``` [Utilisateur navigateur] ↓ [Open WebUI — port 3000] ↓ [Ollama — Mistral Medium] ↓ (Tools/Functions) ┌────┮────┬──────────┐ [AudioCraft] [ComfyUI] [Code] port 7860 port 8188 ``` --- ## 2. Pile logicielle | Couche | Technologie | RĂŽle | Port | |---|---|---|---| | Interface | Open WebUI | Chat unifiĂ©, gestion users | 3000 | | LLM | Ollama + Mistral | Chat + orchestration outils | 11434 | | Audio | AudioCraft (Meta) | MusicGen + AudioGen | 7860 | | Image | ComfyUI | Stable Diffusion / Flux.1 | 8188 | | Code | Ollama + CodeLlama | GĂ©nĂ©ration de code | 11434 | | Reverse proxy | Caddy | Routage + HTTPS | 80/443 | --- ## 3. Image Docker de base **Nom cible :** `nicoboy/studio-ai:latest` ### Contenu de l'image (sans les modĂšles) ```dockerfile FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04 # Python 3.11 RUN add-apt-repository ppa:deadsnakes/ppa && \ apt-get install -y python3.11 python3.11-venv python3.11-distutils # DĂ©pendances systĂšme RUN apt-get install -y \ ffmpeg libsndfile1 sox \ git wget curl nano screen \ nodejs npm # pip pour Python 3.11 RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11 # Frameworks IA RUN python3.11 -m pip install \ torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # AudioCraft RUN python3.11 -m pip install \ git+https://github.com/facebookresearch/audiocraft.git \ gradio scipy soundfile # Open WebUI RUN python3.11 -m pip install open-webui # Ollama RUN curl -fsSL https://ollama.ai/install.sh | sh ``` ### Ce qui N'est PAS dans l'image (tĂ©lĂ©chargĂ© au 1er lancement) - ModĂšles Ollama (Mistral, CodeLlama) → ~8 Go - ModĂšles AudioCraft (MusicGen, AudioGen) → ~4 Go - ModĂšles ComfyUI (SDXL, Flux.1) → ~7 Go - **Total modĂšles : ~20 Go** --- ## 4. Taille estimĂ©e | ÉlĂ©ment | Taille | |---|---| | Image Docker (frameworks seuls) | ~15-20 Go | | ModĂšles (tĂ©lĂ©chargĂ©s au lancement) | ~20 Go | | DonnĂ©es utilisateurs | ~5 Go | | **Total disque recommandĂ©** | **50-60 Go minimum** | > ⚠ 130 Go de disque = confortable pour tout faire tourner. --- ## 5. Template Vast.ai cible | ParamĂštre | Valeur | |---|---| | Image | `nicoboy/studio-ai:latest` | | GPU | RTX A4000 / RTX 4060 Ti (16 Go VRAM) | | Disk | 130 Go | | Ports | 3000, 7860, 8188, 11434 | | Launch mode | `Jupyter + SSH` | | PROVISIONING_SCRIPT | URL Gitea → tĂ©lĂ©charge les modĂšles | | PORTAL_CONFIG | OpenWebUI:3000, AudioCraft:7860, ComfyUI:8188 | --- ## 6. Provisioning Script (logique au 1er lancement) ```bash # 1. TĂ©lĂ©charger les modĂšles Ollama ollama pull mistral ollama pull codellama # 2. TĂ©lĂ©charger les modĂšles AudioCraft # (fait automatiquement au 1er appel Python) # 3. Installer ComfyUI + modĂšles SD/Flux git clone https://github.com/comfyanonymous/ComfyUI /root/ComfyUI cd /root/ComfyUI && pip install -r requirements.txt wget -P /root/ComfyUI/models/checkpoints/ [URL_MODELE_SDXL] # 4. Lancer les services screen -dmS ollama ollama serve screen -dmS openwebui open-webui serve --port 3000 screen -dmS audiocraft python /root/audiocraft-api/server.py screen -dmS comfyui python /root/ComfyUI/main.py --listen 0.0.0.0 --port 8188 ``` --- ## 7. Configuration Open WebUI (partie dĂ©licate — Ă  faire ensemble) > ⚠ Cette section sera configurĂ©e manuellement aprĂšs dĂ©ploiement. ### 7.1 Connexion Ollama - URL : `http://localhost:11434` - ModĂšles : Mistral (chat), CodeLlama (code) ### 7.2 Tools Ă  crĂ©er (Functions Open WebUI) - `generate_audio(prompt, duration, type)` → appelle AudioCraft port 7860 - `generate_image(prompt, steps, width, height)` → appelle ComfyUI port 8188 - `generate_code(prompt, language)` → appelle CodeLlama via Ollama ### 7.3 System Prompt de l'assistant ``` Tu es un assistant crĂ©atif expert. Tu as accĂšs aux outils suivants : - generate_audio : pour crĂ©er musique et bruitages - generate_image : pour crĂ©er des images - generate_code : pour Ă©crire du code Quand un utilisateur fait une demande crĂ©ative, tu l'aides Ă  prĂ©ciser sa demande puis tu utilises l'outil appropriĂ©. ``` ### 7.4 ModĂšle JSON Open WebUI (Ă  importer) > À gĂ©nĂ©rer une fois l'instance stable. --- ## 8. Étapes de construction (ordre) - [x] DĂ©finir l'architecture - [ ] **Construire l'image Docker** ← Gemini - [ ] Pousser sur DockerHub (`nicoboy/studio-ai`) - [ ] Mettre Ă  jour le template Vast.ai avec la nouvelle image - [ ] Écrire le provisioning script final - [ ] **Configurer Open WebUI** ← Claude - [ ] **CrĂ©er les Tools AudioCraft + ComfyUI** ← Claude - [ ] **RĂ©diger les System Prompts** ← Claude - [ ] Tests utilisateur --- ## 9. Commandes utiles ```bash # VĂ©rifier les services qui tournent screen -ls # Voir les logs d'un service screen -r openwebui screen -r audiocraft screen -r comfyui # VĂ©rifier GPU nvidia-smi # VĂ©rifier les modĂšles Ollama ollama list # Tester AudioCraft API curl http://localhost:7860 ``` --- ## 10. Points d'attention pour Gemini 1. **Python 3.11 obligatoire** — Open WebUI refuse Python 3.10 2. **Ne pas inclure les modĂšles dans l'image** — trop lourds, dans le provisioning script 3. **L'image doit ĂȘtre sur DockerHub public** pour que Vast.ai puisse la tĂ©lĂ©charger 4. **CUDA 12.1** — compatible A4000 et RTX 4060 Ti 5. **Tester le build** avec `docker build -t nicoboy/studio-ai .` avant de pusher