rdmgen
es una herramienta CLI de Python para generar automáticamente archivos README.md
de alta calidad para repositorios de código que utilizan Amazon Bedrock y LangGraph .
Este proyecto utiliza las bibliotecas de Amazon Bedrock, LangGraph y LangChain AWS para analizar la estructura y el contenido de un repositorio de código y generar un archivo README.md completo. El archivo README generado proporciona una descripción general del proyecto, instrucciones de instalación, ejemplos de uso y otros detalles relevantes basados en los archivos del repositorio.
rdmgen
hace el trabajo duro por usted. Tenga en cuenta: necesita python >= 3.9
. Puedes comprobar esto con python --version
. Si su entorno base no tiene la versión requerida, cree un entorno virtual con la versión requerida y use la "Opción 1" para instalar.
Puede instalar el paquete con pip después de clonar el repositorio.
pip install .
Hay disponible un Makefile con algunas recetas para Linux/MacOS. Para crear un venv de Python dedicado e instalar rdmgen
en el entorno virtual, ejecute:
make all
El entorno virtual se denomina .venv
de forma predeterminada y está ubicado en el mismo directorio que el repositorio.
Ahora ejecute el siguiente comando para activar el entorno:
source .venv/bin/activate
Para obtener más recetas, como limpiar y quitar el venv, consulte el resultado de make help
.
Credenciales de AWS : antes de ejecutar los comandos cli para generar un archivo README, se requieren credenciales de AWS. Si está ejecutando esto desde un entorno de AWS (por ejemplo, una instancia de SageMaker Notebook), puede continuar con el paso 2 para asegurarse de que se otorguen los permisos correctos a la función de IAM adjunta.
Permisos de IAM : el usuario o rol de IAM debe tener al menos los siguientes permisos en el modelo seleccionado (reemplace el recurso * con los ID del modelo):
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " VisualEditor " ,
"Effect" : " Allow " ,
"Action" : [
" bedrock:InvokeModel " ,
" bedrock:InvokeModelWithResponseStream "
],
"Resource" : " * "
}
]
}
Nota: El proyecto utiliza el soneto de Claude 3: anthropic.claude-3-sonnet-20240229-v1:0
de Amazon Bedrock. Por favor asegúrese de tener acceso a él. Si desea cambiar la ID del modelo, actualícela en src/rdmgen/constants.py
y vuelva a instalar el paquete.
Para generar un archivo README.md para su repositorio, ejecute el comando cli:
rdmgen <REPO_PATH> --out <OUTPUT_FOLDER>
<REPO_PATH>
: puede ser un clon/directorio local o una URL de Git remota.<OUTPUT_FOLDER>
: ruta para guardar el archivo README.md de salida. Si no se especifica, el archivo se guarda en el mismo directorio del código fuente. Puede pasar el indicador opcional --diagram
para crear el diagrama de flujo del agente y ver los pasos que ejecutó.
Los siguientes dos ejemplos están disponibles en este repositorio para realizar pruebas:
rdmgen test_data/hello_world
rdmgen test_data/sensor_extraction --out ./output
Ejemplo de un pequeño repositorio remoto en GitHub:
rdmgen https://github.com/pypa/sampleproject --out output/sampleproject --diagram
La utilidad rdmgen
funciona actualmente para repositorios pequeños y medianos; considere las siguientes limitaciones ajustables para repositorios grandes, que se definen en src/constants.py
:
read-timeout
de Amazon Bedrock, que se pasa al cliente de tiempo de ejecución de Bedrock como una configuración, más detalles: https://repost.aws/knowledge-center/bedrock-large-model-read-timeoutsrecursion_limit
, que se pasa a la configuración al invocar el gráfico. Más detalles: https://langchain-ai.github.io/langgraph/how-tos/recursion-limit/?h=recursion Para el desarrollo y las extensiones, este proyecto utiliza Poetry para la gestión de dependencias. Para instalar el paquete y las dependencias, instale poesía y luego ejecute:
poetry lock
poetry install
Consulte CONTRIBUCIÓN para obtener más información.
¡Las contribuciones son bienvenidas! Abra un problema o envíe una solicitud de extracción si tiene alguna mejora o corrección de errores.
Esta biblioteca tiene la licencia MIT-0. Ver el archivo de LICENCIA.