171 lines
7.0 KiB
Markdown
171 lines
7.0 KiB
Markdown
---
|
|
title: LocalAI
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, artificial-intelligence, llm, inference, openai-compatible, go, gpu, cpu, auto-hebergement]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Artificial+Intelligence, https://github.com/mudler/LocalAI]
|
|
---
|
|
|
|
# ⚡ LocalAI
|
|
|
|
> **Drop-in replacement OpenAI, self-hosted, en Go** — faites tourner **n'importe quel modèle** (LLM, vision, voix, image, vidéo) sur **n'importe quel hardware** (CPU, GPU, Apple Silicon, AMD) en exposant une **API 100% compatible OpenAI** (et Anthropic). Pas de GPU requis.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [localai.io](https://localai.io/) |
|
|
| **GitHub** | [mudler/LocalAI](https://github.com/mudler/LocalAI) |
|
|
| **License** | MIT |
|
|
| **Langage** | Go |
|
|
| **Étoiles** | 4 138 ⭐ |
|
|
| **Dernière MAJ** | 2026-06-04 |
|
|
| **Catégorie** | [[cat-artificial-intelligence]] |
|
|
|
|
## Description
|
|
|
|
**LocalAI** est l'un des projets les plus ambitieux de l'écosystème IA self-hosted. Sa promesse : **remplacer l'API OpenAI** dans n'importe quelle application existante, **sans changer une ligne de code**, en faisant tourner les modèles **localement** ou sur votre propre infrastructure.
|
|
|
|
Le projet supporte un **écosystème massif de modèles** via des *backends* pluggables (basés sur llama.cpp, BERT, whisper.cpp, stable-diffusion.cpp, etc.) : **LLMs** (Llama, Mistral, Qwen, Phi, Gemma, DeepSeek, et des centaines d'autres au format GGUF), **vision** (LLaVA, Moondream, Florence-2), **TTS** (Piper, Coqui), **STT** (whisper), **embeddings** (BERT, nomic-embed, BGE), **génération d'images** (Stable Diffusion), et même **vidéo**. Le tout avec une **architecture modulaire** : on n'installe que ce qu'on utilise.
|
|
|
|
L'**API exposée** est **strictement compatible OpenAI** : `/v1/chat/completions`, `/v1/embeddings`, `/v1/images/generations`, `/v1/audio/speech`, `/v1/audio/transcriptions`, etc. Cela signifie que n'importe quel client OpenAI ([[app-open-webui]], [[app-librechat]], langchain, autogen, Continue.dev) **fonctionne out-of-the-box** en pointant simplement sur `http://localhost:8080/v1` au lieu de `https://api.openai.com/v1`. Une **compatibilité Anthropic** est aussi disponible pour les clients Claude.
|
|
|
|
Le **positionnement vs Ollama** est complémentaire : Ollama est plus simple et orienté "une commande pour télécharger et lancer un modèle", LocalAI est plus **modulaire**, plus **léger** (un seul binaire Go, ~50 Mo), et plus **proche d'une API server** classique (parfait pour microservices et production).
|
|
|
|
## Installation
|
|
|
|
### Option 1 : Docker Compose (recommandé)
|
|
|
|
```yaml
|
|
# docker-compose.yml
|
|
version: '3.8'
|
|
|
|
services:
|
|
localai:
|
|
image: localai/localai:latest
|
|
container_name: localai
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8080:8080"
|
|
volumes:
|
|
- localai_models:/build/models
|
|
- localai_config:/build/configurations
|
|
environment:
|
|
- DEBUG=false
|
|
- MODELS_PATH=/build/models
|
|
- THREADS=4
|
|
- CONTEXT_SIZE=4096
|
|
# Décommenter pour GPU NVIDIA :
|
|
# deploy:
|
|
# resources:
|
|
# reservations:
|
|
# devices:
|
|
# - capabilities: [gpu]
|
|
|
|
# Frontend recommandé pour tester
|
|
open-webui:
|
|
image: ghcr.io/open-webui/open-webui:main
|
|
container_name: open-webui
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3000:8080"
|
|
environment:
|
|
- OPENAI_API_BASE_URL=http://localai:8080/v1
|
|
- OPENAI_API_KEY=localai-not-required
|
|
depends_on:
|
|
- localai
|
|
|
|
volumes:
|
|
localai_models:
|
|
localai_config:
|
|
```
|
|
|
|
### Option 2 : Installation manuelle (binaire Go)
|
|
|
|
```bash
|
|
# Linux/macOS
|
|
curl -L https://github.com/mudler/LocalAI/releases/latest/download/local-ai-Linux-x86_64 -o local-ai
|
|
chmod +x local-ai
|
|
./local-ai
|
|
|
|
# macOS Apple Silicon
|
|
curl -L https://github.com/mudler/LocalAI/releases/latest/download/local-ai-Darwin-arm64 -o local-ai
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Configuration via fichier YAML ou flags CLI. Le fichier `configurations/llama-cpp.yaml` est créé par défaut :
|
|
|
|
```yaml
|
|
name: "llama-cpp"
|
|
parameters:
|
|
model: "llama-3.2-3b-instruct-q4_k_m.gguf"
|
|
context_size: 4096
|
|
threads: 4
|
|
# backend: "llama-cpp" # ou "bert", "whisper", "stablediffusion", etc.
|
|
```
|
|
|
|
Pour télécharger un modèle :
|
|
|
|
```bash
|
|
# Via CLI
|
|
local-ai models install llama-3.2-3b-instruct
|
|
|
|
# Ou manuellement : déposer un .gguf dans /build/models/
|
|
```
|
|
|
|
Variables d'environnement clés :
|
|
|
|
- `MODELS_PATH` : répertoire des modèles (défaut `/build/models`)
|
|
- `THREADS` : nombre de threads CPU
|
|
- `CONTEXT_SIZE` : taille du contexte (4096 par défaut)
|
|
- `DEBUG=true` : logs verbeux
|
|
- `API_KEY=***` : active l'authentification par Bearer token
|
|
|
|
## Alternatives
|
|
|
|
### Open Source
|
|
|
|
- [[app-ollama]] — concurrent principal, plus simple d'usage, plus orienté "télécharger-lancer"
|
|
- **llama.cpp** (projet parent) — moteur C++ sous-jacent, sans l'API server
|
|
- **vLLM** — plus rapide sur gros GPU, support OpenAI API, mais GPU NVIDIA uniquement
|
|
- **llamafile** — binaire unique portable, sans Docker
|
|
- **koboldcpp** — UI Windows-friendly, plus hobbyiste
|
|
- **LM Studio** — GUI desktop, gratuit pour usage perso mais pas self-hostable
|
|
|
|
### Propriétaires (ce que cette app remplace)
|
|
|
|
- **OpenAI API** — Cloud, facturé au token, données envoyées aux USA
|
|
- **Anthropic API** — Idem pour Claude
|
|
- **Google Gemini API** — Cloud, vendor lock-in
|
|
- **Together AI / Fireworks / Groq** — Cloud "low-cost", données hors de chez vous
|
|
- **Azure OpenAI** — Enterprise mais vendor lock-in Microsoft
|
|
|
|
## Sécurité
|
|
|
|
- **Pas d'auth par défaut** : LocalAI n'exige pas de token API par défaut — **toujours** activer `API_KEY` si exposé via reverse proxy
|
|
- **Exposition réseau** : ne JAMAIS exposer le port 8080 directement sur Internet — passer par [[app-caddy]] ou [[app-traefik]] avec HTTPS et rate limiting
|
|
- **Téléchargement de modèles** : les modèles viennent de Hugging Face — vérifier le sha256 et la source, des modèles backdoorisés circulent
|
|
- **Code interpreter / tools** : LocalAI peut exécuter des fonctions arbitraires (Function Calling) — auditer les prompts et les outputs
|
|
- **Logs** : désactiver `DEBUG` en production, les logs peuvent contenir des extraits de prompts utilisateur
|
|
- **Modèles** : un modèle fine-tuné malveillant peut exfiltrer des données d'entraînement — ne fine-tunez jamais sur des secrets en clair
|
|
- **Docker socket** : ne pas monter `/var/run/docker.sock` sauf besoin avéré
|
|
|
|
## Ressources
|
|
|
|
- [Site officiel](https://localai.io/)
|
|
- [Documentation](https://localai.io/basics/getting_started/)
|
|
- [GitHub](https://github.com/mudler/LocalAI)
|
|
- [Discord LocalAI](https://discord.gg/localai)
|
|
- [Galerie de modèles](https://localai.io/models/)
|
|
|
|
## Pages Liées
|
|
|
|
- [[cat-artificial-intelligence]] — Catégorie parente
|
|
- [[recettes-docker-compose]] — Templates Docker Compose
|
|
- **Ollama** — Concurrent principal (le plus simple) _(fiche à créer)_
|
|
- [[app-open-webui]] — Frontend web pour consommer LocalAI
|
|
- [[app-librechat]] — Frontend alternatif
|
|
- [[app-unsloth-studio]] — Pour fine-tuner les modèles servis par LocalAI
|