etv-gpt
API local d'une intelligence artificielle pour l'application web ETV
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (6.0%) to scientific vocabulary
Repository
API local d'une intelligence artificielle pour l'application web ETV
Basic Info
- Host: GitHub
- Owner: AlexandreFrt
- License: apache-2.0
- Language: Python
- Default Branch: main
- Size: 536 KB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
ETV-GPT
Ce projet est basé sur le repo Private-GPT.
La documentation complète de private-gpt est disponible sur ce lien.
Pré-requis
- Windows 10/11 ou Debian : Ce projet est conçu pour fonctionner sur Windows et Debian
- Python 3.10+ : Assurez-vous d'avoir Python installé
- Hugging Face Token (optionnel) : Nécessaire uniquement si vous devez télécharger des modèles depuis Hugging Face. Si les modèles sont déjà téléchargés localement, ce token n'est pas requis. Vous pouvez en obtenir un ici
- GPU (optionnel) : Si vous souhaitez utiliser un GPU pour l'accélération, installez les pilotes CUDA et cuDNN appropriés
Installation
1. Installation des dépendances
Sur Windows
Exécutez les scripts suivants dans cet ordre depuis PowerShell :
```powershell
1. Installer les dépendances système (pyenv, poetry, make, etc.)
.\install_dep.ps1
2. Configurer le projet (Python, HuggingFace, dépendances)
.\setup.ps1
3. (Optionnel) Activer le support GPU pour llama-cpp
.\setup_gpu.ps1 ```
Sur Linux (Debian/Ubuntu)
Exécutez les scripts suivants dans cet ordre depuis le terminal :
```bash
1. Installer les dépendances système (pyenv, poetry, make, etc.)
chmod +x installdep.sh ./installdep.sh
2. Configurer le projet (Python, HuggingFace, dépendances)
chmod +x setup.sh ./setup.sh
3. (Optionnel) Activer le support GPU pour llama-cpp
chmod +x setupgpu.sh ./setupgpu.sh ```
2. Configuration initiale
Après l'installation, configurez votre token Hugging Face si nécessaire :
1. Configurez votre token Hugging Face (si besoin)
Sur Windows ou Linux :
batch
huggingface-cli login
2. Vérifiez l’activation du GPU
Lancez le programme :
Sur Windows :
powershell
.\start.ps1
Sur Linux :
bash
./start.sh
Si le GPU est bien utilisé, vous verrez des messages comme :
ggml_cuda_init: found 1 CUDA devices:
Device 0: NVIDIA GeForce RTX 4090, compute capability 8.9, VMM: yes
llama_model_load_from_file_impl: using device CUDA0 (NVIDIA GeForce RTX 4090) - 22994 MiB free
Et
load_tensors: layer 0 assigned to device CUDA0, is_swa = 0
...
load_tensors: offloading 56 repeating layers to GPU
load_tensors: offloading output layer to GPU
load_tensors: offloaded 57/57 layers to GPU
load_tensors: CUDA0 model buffer size = 22340.65 MiB
Si le paramètre BLAS est à 0, cela signifie que l’accélération GPU n’est pas active :
llama_new_context_with_model: total VRAM used: 4857.93 MB (model: 4095.05 MB, context: 762.87 MB)
AVX = 1 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 0 | SSE3 = 1 | SSSE3 = 0 | VSX = 0 |
Il est possible que le paramètre BLAS ne soit pas affiché lorsque l'accélération GPU est activée.
Configuration
La configuration du projet se trouve dans le fichier settings.yaml. Voici les principales options à personnaliser :
Modèle de langage (LLM)
llm.mode: Backend utilisé (llamacpp,openai, etc.)llamacpp.llm_hf_repo_id: Dépôt Hugging Face du modèlellamacpp.llm_hf_model_file: Fichier du modèle à utiliserllm.prompt_style: Style de prompt (mistral,llama3, etc.)llm.max_new_tokens/llm.context_window: Taille des réponses et fenêtre de contexte
Embeddings
embedding.mode: Backend d'embedding (huggingface, etc.)huggingface.embedding_hf_model_name: Modèle d'embedding Hugging Face (ex:BAAI/bge-multilingual-gemma2)embedding.embed_dim: Dimension des embeddings (ex: 1024)
Base de données vectorielle
vectorstore.database: Type de base (qdrant,chroma, etc.)qdrant.path/chroma.path: Chemin de stockage local
RAG (Retrieval-Augmented Generation)
rag.similarity_top_k: Nombre de documents contextuels à récupérerrag.rerank.enabled: Activer le reranking des documents
Interface utilisateur
ui.enabled: Activer/désactiver l'interface webui.default_mode: Mode par défaut (Basic,RAG, etc.)
Authentification
server.auth.enabled: Activer l'authentification APIserver.auth.secret: Clé d'authentification
[!IMPORTANT] À chaque modification du fichier
settings.yaml, exécutez :Sur Windows :
batch poetry run python scripts\setupSur Linux :
bash poetry run python scripts/setup
Gestion des modèles
Utiliser un modèle local existant
Si vous avez déjà un modèle téléchargé localement, mettez votre fichier .gguf dans le dossier models/ et modifiez settings.yaml :
yaml
llamacpp:
llm_hf_repo_id: none
llm_hf_model_file: NomModele.gguf # Nom du fichier du modèle local
Télécharger un nouveau modèle depuis Hugging Face
Si vous souhaitez télécharger un modèle depuis Hugging Face, suivez ces étapes :
1. Assurez-vous que votre token Hugging Face est configuré :
batch
huggingface-cli login
- Modifiez
settings.yaml:yaml llamacpp: llm_hf_repo_id: Utilisateur/NomDuModele # Dépôt Hugging Face llm_hf_model_file: NomModele.gguf # Nom du fichier
Lancement du projet
Pour démarrer le projet :
Sur Windows :
batch
.\start.bat
Sur Linux :
bash
chmod +x start.sh
./start.sh
Accès à l'interface
- Interface web : Disponible à http://localhost:8001 uniquement si
ui.enabledest activé danssettings.yaml - API : Accessible même si l'interface web est désactivée
- Port : Modifiable dans
settings.yaml(8001 par défaut)
Documentation supplémentaire
Pour plus d'informations détaillées, consultez la documentation officielle de Private-GPT.
Structure du projet
Voici les dossiers et fichiers principaux du projet :
private_gpt/: Code principalmodels/: Modèles locaux (.gguf)local_data/: Données et indexscripts/: Scripts utilitairessettings.yaml: Configuration principale
Mise à jour du projet
Mettre à jour les dépendances Python :
powershell
poetry install
bash
poetry install
Exemple d'utilisation de l'API
Endpoints disponibles
1. Vérification de l'état du service
- Méthode : GET
/health - Paramètres : Aucun
- Réponse :
status: indique l'état du service (oksi l'IA est opérationnelle)
Exemple de réponse :
json
{
"status": "ok"
}
2. Envoi d'une requête à l'IA
- Méthode : POST
/v1/chat/completions - Corps de la requête (JSON) :
context_filter(object, optionnel) : filtre contextueldocs_ids(array[string]) : liste d'identifiants de documents à utiliser comme contexteinclude_sources(boolean, optionnel) : inclure les sources citées dans la réponsemessages(array[object], requis)role(string) : rôle de l'expéditeur (system,user)system: Définit le contexte ou les instructions pour l'IA (ex : "Vous êtes l'assistant ETV, un expert technique virtuel...").user: Contient la question ou la demande de l'utilisateur (ex : "Comment démonter un ordinateur portable ?").
content(string) : contenu du messagestream(boolean, optionnel) : active le streaming de la réponseuse_context(boolean, optionnel) : utilise le contexte provenant des documents ingérés pour générer la réponse
Exemple de requête :
json
{
"context_filter": {
"docs_ids": [
"c202d5e6-7b69-4869-81cc-dd574ee8ee11"
]
},
"include_sources": true,
"messages": [
{
"role": "system",
"content": "Vous êtes l'assistant ETV, un expert technique virtuel..."
},
{
"role": "user",
"content": "Comment démonter un ordinateur portable ?"
}
],
"stream": false,
"use_context": true
}
Réponse attendue :
- choices (array)
- message (object)
- role (string) : rôle de l'expéditeur (assistant)
- content (string) : texte de la réponse générée
- sources (array) : liste des sources citées dans la réponse
Exemple de réponse :
json
{
"id": "8d8e8423-de2e-4bbd-b0ee-e521afe2a9f4",
"object": "completion",
"created": 1751358113,
"model": "private-gpt",
"choices": [
{
"finish_reason": "stop",
"delta": null,
"message": {
"role": "assistant",
"content": "Pour démonter un ordinateur portable :\n\n1. Éteignez l'ordinateur et débranchez-le.\n2. Retirez la batterie si possible.\n3. Dévissez les vis du boîtier arrière.\n4. Utilisez un outil d'ouverture pour séparer le boîtier.\n5. Déconnectez les câbles internes avec précaution.\n6. Retirez les composants internes (disque dur, RAM, etc.) selon vos besoins."
},
"sources": [],
"index": 0
}
]
}
Pour interroger l'API localement sous Windows :
powershell
curl -X POST http://localhost:8001/v1/chat/completions -H "Content-Type: application/json" -d "{""messages"": [{""role"": ""user"", ""content"": ""Bonjour, que peux-tu faire ?""}]}"
Sous Linux ou dans un terminal Bash :
bash
curl -X POST http://localhost:8001/v1/chat/completions -H "Content-Type: application/json" -d '{"messages": [{"role": "user", "content": "Bonjour, que peux-tu faire ?"}]}'
FAQ / Dépannage
Q : J'ai une erreur lors de l'installation des dépendances.
A : Vérifiez la version de Python (python --version). Utilisez Python 3.10 ou 3.11. Installez les dépendances avec les scripts fournis.
Q : Le GPU n'est pas détecté.
A : Vérifiez l'installation de CUDA/cuDNN et que votre carte est compatible. Consultez la documentation de llama.cpp.
Q : Problème d'accès à l'API ou à l'interface web.
A : Vérifiez que le port 8001 n'est pas bloqué et que ui.enabled est activé dans settings.yaml.
Contribution et support
Les contributions sont les bienvenues ! Pour proposer une amélioration ou signaler un bug, ouvrez une issue sur le dépôt GitHub ou contactez le mainteneur.
Owner
- Name: Alexandre
- Login: AlexandreFrt
- Kind: user
- Repositories: 1
- Profile: https://github.com/AlexandreFrt
Junior Developper
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: PrivateGPT
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- name: Zylon by PrivateGPT
address: hello@zylon.ai
website: 'https://www.zylon.ai/'
repository-code: 'https://github.com/zylon-ai/private-gpt'
license: Apache-2.0
date-released: '2023-05-02'
GitHub Events
Total
- Push event: 8
- Create event: 1
Last Year
- Push event: 8
- Create event: 1
Dependencies
- actions/setup-python v4 composite
- snok/install-poetry v1 composite
- actions/checkout v4 composite
- actions/checkout v4 composite
- docker/build-push-action v6 composite
- docker/login-action v3 composite
- docker/metadata-action v5 composite
- docker/setup-buildx-action v3 composite
- docker/setup-qemu-action v3 composite
- jlumbroso/free-disk-space main composite
- actions/checkout v4 composite
- actions/github-script v7 composite
- actions/setup-node v4 composite
- actions/checkout v4 composite
- actions/setup-node v3 composite
- google-github-actions/release-please-action v4 composite
- actions/stale v8 composite
- ./.github/workflows/actions/install_dependencies * composite
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- 255 dependencies
- black ^24 develop
- mypy ^1.11 develop
- pre-commit ^3 develop
- pytest ^8 develop
- pytest-asyncio ^0.24.0 develop
- pytest-cov ^5 develop
- ruff ^0 develop
- types-pyyaml ^6.0.12.20240917 develop
- asyncpg ^0.29.0
- boto3 ^1.35.26
- clickhouse-connect ^0.7.19
- cryptography ^3.1
- docx2txt ^0.8
- einops ^0.8.0
- fastapi ^0.115.0
- ffmpy ^0.4.0
- gradio ^4.44.0
- injector ^0.22.0
- llama-index-core >=0.11.2,<0.12.0
- llama-index-embeddings-azure-openai *
- llama-index-embeddings-gemini *
- llama-index-embeddings-huggingface *
- llama-index-embeddings-mistralai *
- llama-index-embeddings-ollama *
- llama-index-embeddings-openai *
- llama-index-llms-azure-openai *
- llama-index-llms-gemini *
- llama-index-llms-llama-cpp *
- llama-index-llms-ollama *
- llama-index-llms-openai *
- llama-index-llms-openai-like *
- llama-index-readers-file *
- llama-index-storage-docstore-postgres *
- llama-index-storage-index-store-postgres *
- llama-index-vector-stores-chroma *
- llama-index-vector-stores-clickhouse *
- llama-index-vector-stores-milvus *
- llama-index-vector-stores-postgres *
- llama-index-vector-stores-qdrant *
- psycopg2-binary ^2.9.9
- python >=3.11,<3.12
- python-multipart ^0.0.10
- pyyaml ^6.0.2
- retry-async ^0.1.4
- sentence-transformers ^3.1.1
- torch ^2.4.1
- transformers ^4.44.2
- watchdog ^4.0.1