rdmgen
est un outil Python CLI permettant de générer automatiquement des fichiers README.md
de haute qualité pour les référentiels de code à l'aide d' Amazon Bedrock et LangGraph .
Ce projet utilise les bibliothèques Amazon Bedrock, LangGraph et LangChain AWS pour analyser la structure et le contenu d'un référentiel de code et générer un fichier README.md complet. Le README généré fournit un aperçu du projet, des instructions d'installation, des exemples d'utilisation et d'autres détails pertinents basés sur les fichiers du référentiel.
rdmgen
fait le gros du travail pour vous. Veuillez noter : vous avez besoin python >= 3.9
. Vous pouvez vérifier cela avec python --version
. Si votre environnement de base ne dispose pas de la version requise, créez un environnement virtuel avec la version requise et utilisez « Option 1 » pour l'installer.
Vous pouvez installer le package avec pip après avoir cloné le référentiel.
pip install .
Un Makefile avec quelques recettes est disponible pour Linux/MacOS. Pour créer un venv Python dédié et installer rdmgen
dans l'environnement virtuel, exécutez :
make all
L'environnement virtuel est nommé .venv
par défaut et se trouve dans le même répertoire que le référentiel.
Exécutez maintenant la commande suivante pour activer l'environnement :
source .venv/bin/activate
Pour plus de recettes make telles que le nettoyage et la suppression du venv, consultez la sortie de make help
.
Informations d'identification AWS : Avant d'exécuter les commandes cli pour générer un fichier README, les informations d'identification AWS sont requises. Si vous l'exécutez à partir d'un environnement AWS (par exemple, une instance de SageMaker Notebook), vous pouvez passer à l'étape 2 pour vous assurer que les autorisations correctes sont accordées au rôle IAM attaché.
Autorisations IAM : l'utilisateur ou le rôle IAM doit disposer d'au moins les autorisations suivantes sur le modèle sélectionné (remplacez la ressource * par le(s) identifiant(s) du modèle) :
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " VisualEditor " ,
"Effect" : " Allow " ,
"Action" : [
" bedrock:InvokeModel " ,
" bedrock:InvokeModelWithResponseStream "
],
"Resource" : " * "
}
]
}
Remarque : Le projet utilise le sonnet Claude 3 : anthropic.claude-3-sonnet-20240229-v1:0
d'Amazon Bedrock. Veuillez vous assurer que vous y avez accès. Si vous souhaitez modifier l'ID du modèle, veuillez le mettre à jour dans src/rdmgen/constants.py
et réinstaller le package.
Pour générer un fichier README.md pour votre référentiel, exécutez la commande cli :
rdmgen <REPO_PATH> --out <OUTPUT_FOLDER>
<REPO_PATH>
: peut être un clone/répertoire local ou une URL Git distante.<OUTPUT_FOLDER>
: chemin dans lequel enregistrer le fichier README.md de sortie. S'il n'est pas spécifié, le fichier est enregistré dans le même répertoire que le code source. Vous pouvez transmettre l'indicateur facultatif --diagram
pour créer l'organigramme de l'agent afin de voir les étapes qu'il a exécutées.
Les deux exemples suivants sont disponibles dans ce référentiel à des fins de test :
rdmgen test_data/hello_world
rdmgen test_data/sensor_extraction --out ./output
Exemple pour un petit dépôt distant sur GitHub :
rdmgen https://github.com/pypa/sampleproject --out output/sampleproject --diagram
L'utilitaire rdmgen
fonctionne actuellement pour les référentiels de petite et moyenne taille. Tenez compte des limitations ajustables suivantes pour les grands référentiels, qui sont définies dans src/constants.py
:
read-timeout
, qui est transmis au client d'exécution Bedrock en tant que configuration, plus de détails : https://repost.aws/knowledge-center/bedrock-large-model-read-timeoutsrecursion_limit
, qui est transmis à la configuration lors de l'appel du graphique. Plus de détails : https://langchain-ai.github.io/langgraph/how-tos/recursion-limit/?h=recursion Pour le développement et les extensions, ce projet utilise Poetry pour la gestion des dépendances. Pour installer le package et les dépendances, installez la poésie puis exécutez :
poetry lock
poetry install
Voir CONTRIBUTION pour plus d'informations.
Les contributions sont les bienvenues ! Veuillez ouvrir un problème ou soumettre une pull request si vous avez des améliorations ou des corrections de bugs.
Cette bibliothèque est sous licence MIT-0. Voir le fichier LICENCE.