kibali-api / README.md
lojol469-cmd
Add clean README.md for Hugging Face
fc58822
metadata
title: Kibali AI
emoji: 🧠
colorFrom: green
colorTo: blue
sdk: docker
sdk_version: 1.0.0
app_file: app.py
pinned: false

🇬🇦 Kibali AI — Intelligence Artificielle Gabonaise Souveraine

Assistant IA expert du Gabon, avec contexte géographique, RAG sur documents PDF, mémoire conversationnelle adaptative et recherche web en temps réel.

Modèle : BelikanM/kibali-final-merged (7B quantisé 4-bit) chargé sur GPU CUDA.

🚀 Fonctionnalités

  • Réponses naturelles en français, toujours factuelles et chaleureuses
  • Contexte géolocalisé (Libreville par défaut, configurable)
  • Upload et interrogation de documents PDF (RAG vectoriel avec FAISS)
  • Mémoire conversationnelle persistante et adaptative
  • Recherche web intégrée (Tavily)
  • API FastAPI complète avec streaming de génération

🔗 Endpoints API

  • POST /chat → conversation principale
  • GET /status → état du système (chunks, mémoire, GPU, etc.)
  • POST /upload → import de PDFs
  • POST /clear-memory → réinitialisation mémoire
  • /docs → documentation Swagger interactive
  • /static → fichiers statiques (logo, etc.)

🛠️ Stack technique

  • FastAPI + Uvicorn
  • Transformers + BitsAndBytes (quantisation 4-bit)
  • Sentence-Transformers + FAISS (embedding & RAG)
  • Tavily pour la recherche web
  • Docker CUDA 12.4 (GPU accéléré)

🔐 Secrets requis

Ajouter dans Settings → Secrets du Space :

  • TAVILY_API_KEY → votre clé Tavily (format tvly-...)

📂 Structure du projet

  • app.py → API FastAPI principale
  • tools/ → outils personnalisés (web, raisonnement, géo)
  • static/ → assets statiques
  • Dockerfile → build CUDA optimisé
  • requirements.txt → dépendances Python

🌍 Utilisation

L’API est prête à être consommée par n’importe quel frontend (React, Streamlit, Gradio, mobile, etc.).

Exemple de requête /chat

{
  "messages": [{"role": "user", "content": "Bonjour Kibali, quel est le climat à Libreville aujourd'hui ?"}],
  "latitude": 0.4061,
  "longitude": 9.4673,
  "city": "Libreville",
  "thinking_mode": true
}