etv-gpt

API local d'une intelligence artificielle pour l'application web ETV

https://github.com/alexandrefrt/etv-gpt

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
Last synced: 6 months ago · JSON representation ·

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
Created 8 months ago · Last pushed 7 months ago
Metadata Files
Readme Changelog License Citation

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èle
  • llamacpp.llm_hf_model_file : Fichier du modèle à utiliser
  • llm.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érer
  • rag.rerank.enabled : Activer le reranking des documents

Interface utilisateur

  • ui.enabled : Activer/désactiver l'interface web
  • ui.default_mode : Mode par défaut (Basic, RAG, etc.)

Authentification

  • server.auth.enabled : Activer l'authentification API
  • server.auth.secret : Clé d'authentification

[!IMPORTANT] À chaque modification du fichier settings.yaml, exécutez :

Sur Windows : batch poetry run python scripts\setup

Sur 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

  1. 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.enabled est activé dans settings.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 principal
  • models/ : Modèles locaux (.gguf)
  • local_data/ : Données et index
  • scripts/ : Scripts utilitaires
  • settings.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 (ok si 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 contextuel
    • docs_ids (array[string]) : liste d'identifiants de documents à utiliser comme contexte
    • include_sources (boolean, optionnel) : inclure les sources citées dans la réponse
    • messages (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 message
    • stream (boolean, optionnel) : active le streaming de la réponse
    • use_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

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

.github/workflows/actions/install_dependencies/action.yml actions
  • actions/setup-python v4 composite
  • snok/install-poetry v1 composite
.github/workflows/fern-check.yml actions
  • actions/checkout v4 composite
.github/workflows/generate-release.yml actions
  • 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
.github/workflows/preview-docs.yml actions
  • actions/checkout v4 composite
  • actions/github-script v7 composite
  • actions/setup-node v4 composite
.github/workflows/publish-docs.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
.github/workflows/release-please.yml actions
  • google-github-actions/release-please-action v4 composite
.github/workflows/stale.yml actions
  • actions/stale v8 composite
.github/workflows/tests.yml actions
  • ./.github/workflows/actions/install_dependencies * composite
  • actions/checkout v4 composite
  • actions/upload-artifact v4 composite
poetry.lock pypi
  • 255 dependencies
pyproject.toml pypi
  • 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