Créer son propre ChatGPT local avec FastAPI et un modèle open-source
Publié le 2 mai 2025 - Par l'équipe DEV-AI

De plus en plus d'organisations cherchent à intégrer un assistant IA local, indépendant des services cloud comme OpenAI. Dans cet article, nous allons vous montrer comment créer un chatbot IA en local, en utilisant un modèle open-source tel que LLaMA 3, Phi-2 ou Mistral, et le servir via une API FastAPI moderne.
Pourquoi héberger son propre chatbot IA ?
- Confidentialité : vos données ne quittent pas vos serveurs
- Maîtrise des coûts : aucun appel API externe
- Contrôle total sur les modèles, les performances et les réponses
Étape 1 - Choisir un modèle local open-source
Parmi les modèles populaires :
- Phi-2 (Microsoft) : très léger, excellent en CPU
- LLaMA 3 : plus gros, mais plus puissant
- Mistral-7B ou Mixtral : très bon rapport qualité/performance
Nous utiliserons ici transformers
de Hugging Face et un modèle GGUF pour performance optimale.
Étape 2 - Installation des dépendances
pip install fastapi uvicorn python-multipart
pip install llama-cpp-python transformers huggingface_hub
Étape 3 - Charger le modèle avec llama-cpp
from llama_cpp import Llama
llm = Llama(model_path="./models/phi-2.gguf", n_ctx=2048, n_threads=4)
response = llm("Qui est Alan Turing ?", max_tokens=300)
print(response["choices"][0]["text"])
Étape 4 - Créer une API FastAPI pour interagir avec le modèle
from fastapi import FastAPI, Request
from pydantic import BaseModel
from llama_cpp import Llama
app = FastAPI()
llm = Llama(model_path="./models/phi-2.gguf", n_ctx=2048, n_threads=4)
class Query(BaseModel):
question: str
@app.post("/ask")
async def ask(query: Query):
output = llm(query.question, max_tokens=300)
return {"response": output["choices"][0]["text"].strip() }
Étape 5 - Tester avec curl ou Postman
curl -X POST http://localhost:8000/ask \
-H "Content-Type: application/json" \
-d '{"question": "Quelle est la capitale de l'Italie ?"}'
Bonus - Ajouter une interface web simple
Vous pouvez créer un petit formulaire HTML/JS pour interroger votre API via fetch().
<form onsubmit="ask(); return false">
<input id="question" type="text">
<button type="submit">Demander</button>
</form>
<pre id="response"></pre>
<script>
function ask() {
fetch('/ask', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({question: document.getElementById('question').value})
})
.then(res => res.json())
.then(data => document.getElementById('response').textContent = data.response);
}
</script>
Conclusion
Vous venez de créer votre propre ChatGPT local, avec une API FastAPI et un modèle open-source. Cet assistant IA peut être déployé dans des outils internes, sur un intranet ou même embarqué dans une app mobile. Pour aller plus loin, vous pouvez :
- Ajouter un historique de conversation
- Supporter plusieurs modèles (GPTQ, GGUF...)
- Gérer les contextes utilisateurs avec un cache Redis
- Héberger via Docker ou Render
Retrouvez le code complet sur notre GitHub et partagez votre version personnalisée avec la communauté !
← Retour au blog