Refactorisation du code, correction des quelques bugs, Clear de Readme principal, Ajout de l'entrée utilisateur pour la modification du nom de projet
This commit is contained in:
118
README.md
118
README.md
@@ -2,78 +2,45 @@
|
||||
|
||||
## Contexte du Projet
|
||||
ARC est une plateforme d'automatisation du développement logiciel basée sur un workflow multi-agents (IA). Le système orchestre plusieurs modèles d'IA spécialisés pour transformer un besoin utilisateur en un code source validé, testé et stocké.
|
||||
___
|
||||
### Étape 0 : Préparation de l'environnement du projet
|
||||
Tâches :
|
||||
- Créer backend minimal
|
||||
- Créer modèle de données simple
|
||||
- langGraph
|
||||
___
|
||||
### Étape 1 : Analyse du Besoin & Qualification (Agent PM / Business Analyst)
|
||||
- L'utilisateur entre une demande en langage naturel.
|
||||
- **Agent 1 (PM)** analyse la demande. Si des informations manquent pour coder, il pose des questions clarificatrices à l'utilisateur jusqu'à obtenir un cahier des charges complet.
|
||||
- **Vérification BDD :** Avant de coder, le système cherche dans une base de données vectorielle si un projet similaire existe déjà.
|
||||
- *Si oui :* On propose le lien à l'utilisateur. Si l'utilisateur valide, le workflow s'arrête ici.
|
||||
- *Si non (ou si l'utilisateur rejette l'existant) :* On passe à l'étape 2.
|
||||
|
||||
Outils :
|
||||
- LangGraph -> LangGraph est adapté aux workflows multi‑agents avec états, transitions conditionnelles, persistance et human‑in‑the‑loop
|
||||
- Python -> backend, les agents, les appels LLM, les tests, les embeddings et les intégrations + compatible avec autres tools
|
||||
- Pydantic AI / Pydantic -> forcer l’Agent PM à produire un cahier des charges structuré
|
||||
- Chainlit -> adapté aux interfaces conversationnelles
|
||||
BDD :
|
||||
- Qdrant -> adapté à la recherche sémantique + stocker les embeddings de projets/scripts
|
||||
- Snowflake Arctic Embed 2.0 -> modèle d’embedding
|
||||
- Redis (optionnel) -> cache de recherche ;sessions utilisateur ;état temporaire ;verrouillage d’un workflow ;file d’attente simple
|
||||
___
|
||||
### Étape 2 : Génération de Code (Agent Développeur)
|
||||
- **Agent 2 (Dev)** reçoit le cahier des charges validé et génère l'arborescence et le code source du projet.
|
||||
|
||||
Outils :
|
||||
- LangGraph -> LangGraph est adapté aux workflows multi‑agents avec états, transitions conditionnelles, persistance et human‑in‑the‑loop
|
||||
- Mistral ou Gemma (modèle trop généraliste/léger->tache simple) -> DeepSeek Coder/Qwen2.5
|
||||
- vLLM -> meilleur choix qu’Ollama pour une plateforme plus industrialisée. Llama.cpp modèles quantifiés sur CPU ou machines modestes + moins adapté à une plateforme multi‑utilisateur
|
||||
- Pydantic
|
||||
___
|
||||
### Étape 3 : Tests et Assurance Qualité (Agent QA / Testeur)
|
||||
- **Agent 3 (QA)** récupère le code de l'Agent 2. Il doit exécuter le code (via une sandbox sécurisée) ou générer/exécuter des tests unitaires pour vérifier la qualité, la sécurité et le fonctionnement.
|
||||
- **Boucle de correction automatique (Loop 1) :** Si les tests échouent, l'Agent 3 renvoie les erreurs à l'Agent 2 avec les logs. L'Agent 2 corrige et renvoie à l'Agent 3. Cette boucle tourne au maximum 3 fois jusqu'à ce que le code soit "vert".
|
||||
- **EXTENSION FUTURE** si les tests échouent 3 fois, envoyé à une IA plus puissante.
|
||||
|
||||
Outils :
|
||||
- Docker
|
||||
- Ruff -> qualité de code
|
||||
- Bandit -> sécurité
|
||||
- Semgrep (optionnel) -> règles de sécurité et qualité plus larges
|
||||
Boucle correction :
|
||||
- LangGraph
|
||||
- Pydantic
|
||||
___
|
||||
### Étape 4 : Livraison & Feedback Utilisateur (Boucle Humaine)
|
||||
- Une fois le code validé par l'Agent 3, il est présenté à l'utilisateur.
|
||||
- L'utilisateur teste et valide.
|
||||
- *Si Validé :* Le projet est sauvegardé dans la base de données (pour la recherche de l'Étape 1) et livré (ex: zip ou dépôt GitHub).
|
||||
- *Si Refusé :* L'utilisateur indique ce qui ne va pas. Tout le contexte (code actuel + retours) est renvoyé à l'**Étape 1** pour réanalyse, et le cycle recommence.
|
||||
|
||||
Outils :
|
||||
- Chainlit
|
||||
- Git
|
||||
___
|
||||
### Étape finale :
|
||||
|
||||
Tâches :
|
||||
- Tests fonctionnels de bout en bout
|
||||
- Sécurité minimale
|
||||
- Documentation finale
|
||||
- Présentation
|
||||
|
||||
## Lancer le projet
|
||||
|
||||
Avant de lancer le projet, il est important de créer le fichier .env dans le dossier */backend* et de remplir les éléments suivant :
|
||||
```bash
|
||||
chmod +x run_project.sh
|
||||
./run_project.sh
|
||||
LLM_BASE_URL=
|
||||
LLM_API_KEY=
|
||||
LLM_MODEL=
|
||||
LLM_MODEL_DEV=
|
||||
LLM_MODEL_QA=
|
||||
EMBEDDING_BASE_URL=
|
||||
EMBEDDING_MODEL=
|
||||
GITEA_ADMIN_USER=
|
||||
GITEA_ADMIN_PASSWORD=
|
||||
```
|
||||
|
||||
Une fois les informations fournies, éxectuer la commande suivante pour lancer le projet
|
||||
```bash
|
||||
python .\orchestrator.py
|
||||
```
|
||||
|
||||
* L'interface utilisateur conversationnelle se trouve sur l'adresse suivant : http://localhost:8001/
|
||||
* Le Gitea se trouve à l'adresse suivante : http://localhost:3000/
|
||||
___
|
||||
|
||||
## Arrêter le projet
|
||||
|
||||
```bash
|
||||
python .\stop_project.py
|
||||
```
|
||||
___
|
||||
|
||||
## Visualiser les logs
|
||||
|
||||
```bash
|
||||
docker compose -p arc-app logs -f
|
||||
```
|
||||
___
|
||||
|
||||
## Structure du projet
|
||||
```bash
|
||||
ARC/
|
||||
@@ -85,15 +52,13 @@ ARC/
|
||||
│ │ │ └── qa_agent.py
|
||||
│ │ │
|
||||
│ │ ├── api/
|
||||
│ │ │ ├── routes/
|
||||
│ │ │ │ ├── health.py
|
||||
│ │ │ │ └── workflow.py
|
||||
│ │ │ └── deps.py
|
||||
│ │ │ └── routes/
|
||||
│ │ │ ├── health.py
|
||||
│ │ │ └── workflow.py
|
||||
│ │ │
|
||||
│ │ ├── core/
|
||||
│ │ │ ├── config.py
|
||||
│ │ │ ├── logging.py
|
||||
│ │ │ └── security.py
|
||||
│ │ │ └── logging.py
|
||||
│ │ │
|
||||
│ │ ├── graph/ # LangGraph
|
||||
│ │ │ ├── state.py
|
||||
@@ -103,10 +68,6 @@ ARC/
|
||||
│ │ ├── llm/ # appels modèles
|
||||
│ │ │ ├── client.py # wrapper d’appel
|
||||
│ │ │ ├── prompts.py # prompts centralisés
|
||||
│ │ │ └── providers.py # Gemma/llama.cpp....
|
||||
│ │ │
|
||||
│ │ ├── models/ # modèles métier / persistance (métadonnées d’un projet/version/statut/lien Git/hash/tags)
|
||||
│ │ │ └── project.py
|
||||
│ │ │
|
||||
│ │ ├── repositories/ # accès externes, Qdrant / Redis / stockage
|
||||
│ │ │ ├── qdrant_repository.py
|
||||
@@ -122,8 +83,7 @@ ARC/
|
||||
│ │ │ ├── api.py
|
||||
│ │ │ ├── spec.py
|
||||
│ │ │ ├── code_output.py
|
||||
│ │ │ ├── qa_report.py
|
||||
│ │ │ └── project.py
|
||||
│ │ │ └── qa_report.py
|
||||
│ │ │
|
||||
│ │ ├── services/
|
||||
│ │ │ ├── workflow_service.py
|
||||
@@ -146,7 +106,7 @@ ARC/
|
||||
│ │ ├── test_qdrant.py
|
||||
│ │ └── test_snowflake.py
|
||||
│ │
|
||||
│ ├── .env
|
||||
│ ├── .env # IMPORTANT élément à remplir
|
||||
│ ├── chainlit_app.py
|
||||
│ ├── chainlit_fr_FR.md
|
||||
│ ├── docker-compose-ai.yml # Conteneurs pour les agents et l'embedding
|
||||
|
||||
Reference in New Issue
Block a user