Files
ARC/README.md
Chevallier a7d8914e25 first push
2026-06-12 18:16:58 +02:00

136 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Projet ARC
## 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 multiagents avec états, transitions conditionnelles, persistance et humanintheloop
- Python -> backend, les agents, les appels LLM, les tests, les embeddings et les intégrations + compatible avec autres tools
- Pydantic AI / Pydantic -> forcer lAgent 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 dembedding
- Redis (optionnel) -> cache de recherche ;sessions utilisateur ;état temporaire ;verrouillage dun workflow ;file dattente 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 multiagents avec états, transitions conditionnelles, persistance et humanintheloop
- Mistral ou Gemma (modèle trop généraliste/léger->tache simple) -> DeepSeek Coder/Qwen2.5
- vLLM -> meilleur choix quOllama pour une plateforme plus industrialisée. Llama.cpp modèles quantifiés sur CPU ou machines modestes + moins adapté à une plateforme multiutilisateur
- 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
## Structure du projet
```bash
backend/
├── app/
│ ├── api/
│ │ ├── routes/
│ │ │ ├── health.py
│ │ │ └── workflow.py
│ │ └── deps.py
│ │
│ ├── core/
│ │ ├── config.py
│ │ ├── logging.py
│ │ └── security.py
│ │
│ ├── graph/ # LangGraph
│ │ ├── state.py
│ │ ├── nodes.py
│ │ └── workflow.py
│ │
│ ├── agents/ # Gestion agents IA
│ │ ├── pm_agent.py
│ │ ├── dev_agent.py
│ │ └── qa_agent.py
│ │
│ ├── schemas/ # Pydantic
│ │ ├── api.py
│ │ ├── spec.py
│ │ └── project.py
│ │
│ ├── models/ # modèles métier / persistance (métadonnées dun projet/version/statut/lien Git/hash/tags)
│ │ └── project.py
│ │
│ ├── services/
│ │ ├── workflow_service.py
│ │ ├── embedding_service.py
│ │ ├── retrieval_service.py
│ │ └── delivery_service.py
│ │
│ ├── repositories/ # accès externes, Qdrant / Redis / stockage
│ │ ├── qdrant_repository.py
│ │ ├── redis_repository.py
│ │ └── project_repository.py
│ │
│ ├── llm/ # appels modèles
│ │ ├── client.py # wrapper dappel
│ │ ├── prompts.py # prompts centralisés
│ │ └── providers.py # Gemma/llama.cpp....
│ │
│ ├── sandbox/
│ │ └── docker_runner.py
│ │
│ ├── main.py
│ └── __init__.py
├── chainlit_app.py
├── tests/
│ ├── test_health.py
│ ├── test_workflow.py
│ └── test_agents.py
├── .env
├── requirements.txt
├── Dockerfile
└── README.md
```