Que fait dagent ?
Dagent est un framework d'agents DAG dynamique qui transforme des objectifs en flux de travail modifiables et exécutables.
Vue d'ensemble
Dagent permet de définir un objectif, qu'il décompose automatiquement en un graphe orienté acyclique (DAG) d'étapes. Chaque étape peut être une commande, un appel d'API, un script ou une décision logique. Le DAG résultant est entièrement éditable : vous pouvez ajouter, supprimer ou réorganiser des nœuds, modifier leurs paramètres, ou les marquer comme réussis/échoués. Cela permet une approche itérative et transparente pour la résolution de problèmes complexes.
Fonctionnalités principales
- Conversion d'objectifs en workflows : Décrivez votre objectif en langage naturel, et Dagent construit le DAG correspondant.
- Édition interactive : Visualisez le graphe et modifiez les étapes avant, pendant ou après l'exécution.
- Exécution séquentielle ou parallèle : Les nœuds sans dépendances peuvent être exécutés en parallèle pour optimiser la performance.
- Réexécution sélective : Vous pouvez relancer uniquement les nœuds échoués ou modifiés, sans refaire tout le workflow.
- Intégration avec des outils externes : Supporte les appels à des API REST, des bases de données, des fichiers, etc.
Installation
pip install dagent
Utilisation rapide
from dagent import Dagent
# Créer une instance de Dagent
agent = Dagent()
# Définir un objectif
objectif = "Récupérer les données météo de Paris et les stocker dans un fichier JSON"
# Générer le workflow
workflow = agent.generate_workflow(objectif)
# Afficher le DAG
print(workflow.graph)
# Exécuter le workflow
result = workflow.execute()
print(result)
Édition du workflow
Après la génération, vous pouvez modifier le workflow directement :
# Ajouter un nouveau nœud
workflow.add_node('envoyer_email', depends_on=['stocker_donnees'])
# Modifier un nœud existant
workflow.update_node('recuperer_donnees', params={'city': 'Lyon'})
# Supprimer un nœud
workflow.remove_node('generer_graphique')
# Exécuter uniquement les nœuds modifiés
workflow.execute_changed()
Structure du DAG
Le DAG est représenté comme un dictionnaire Python avec des nœuds et des arêtes :
{
"nodes": {
"recuperer_donnees": {
"type": "api_call",
"params": {
"url": "https://api.meteo.com/paris"
},
"status": "pending"
},
"stocker_donnees": {
"type": "file_write",
"params": {
"path": "/tmp/meteo.json"
},
"dependencies": ["recuperer_donnees"]
}
},
"edges": [
("recuperer_donnees", "stocker_donnees")
]
}
Commandes CLI
Dagent fournit également une interface en ligne de commande :
# Initialiser un projet Dagent
dagent init
# Générer un workflow à partir d'un objectif
dagent generate "Analyser les logs du serveur"
# Lister les workflows disponibles
dagent list
# Exécuter un workflow
dagent run <workflow_id>
Variables d'environnement
DAGENT_API_KEY: Clé API pour les services externes.DAGENT_WORKSPACE: Répertoire de travail pour les fichiers temporaires.DAGENT_LOG_LEVEL: Niveau de journalisation (DEBUG, INFO, WARNING, ERROR).
Contribution
Les contributions sont les bienvenues ! Veuillez consulter le fichier CONTRIBUTING.md pour plus de détails.
Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus d'informations.
Pour toute question, ouvrez une issue sur le dépôt GitHub RobotSe7en/dagent.