git clone https://github.com/LOGIC-10/RepoAgent.git
cd RepoAgentConfiguración con PDM
Inicializa el entorno virtual de Python. Asegúrese de ejecutar el siguiente directorio CMD In /RepoAgent :
pdm venv create --name repoagentActivar el entorno virtual
Instalar dependencias utilizando PDM
pdm installAntes de configurar parámetros específicos para Repoagent, asegúrese de que la API de OpenAI esté configurada como una variable de entorno en la línea de comando:
export OPENAI_API_KEY=YOUR_API_KEY # on Linux/Mac
set OPENAI_API_KEY=YOUR_API_KEY # on Windows
$Env :OPENAI_API_KEY = " YOUR_API_KEY " # on Windows (PowerShell) Ingrese el directorio raíz de Repoagent e intente el siguiente comando en el terminal:
repoagent run # this command will generate doc, or update docs(pre-commit-hook will automatically call this)
repoagent run --print-hierarchy # Print how repo-agent parse the target repoEl comando Ejecutar admite los siguientes indicadores opcionales (si se establece, anulará los valores predeterminados de configuración):
-m , -Texto --model : Especifica el modelo a usar para su finalización. Valor predeterminado: gpt-3.5-turbo-t , --temperature flotante: establece la temperatura de generación para el modelo. Los valores más bajos hacen que el modelo sea más determinista. Valor predeterminado: 0.2-r , --request-timeout Integer: Define el tiempo de espera en segundos para la solicitud API. Valor predeterminado: 60-b ,-Texto --base-url : la URL base para las llamadas API. Valor predeterminado: https://api.openai.com/v1-tp , --target-repo-path Path: la ruta del sistema de archivos al repositorio de destino. Utilizado como raíz para la generación de documentación. Valor predeterminado: path/to/your/target/repository-hp ,-Texto --hierarchy-path : el nombre o ruta para el archivo de jerarquía del proyecto, utilizado para organizar la estructura de documentación. Predeterminado: .project_doc_record-mdp , --markdown-docs-path Text: la ruta de la carpeta donde la documentación de Markdown se almacenará o generará. Valor predeterminado: markdown_docs-i , --ignore-list Text: una lista de archivos o directorios para ignorar durante la generación de documentación, separados por comas.-l , -Texto --language : el código ISO 639 o el nombre del idioma para la documentación. Valor predeterminado: Chinese-ll , --log-level [depuración | información | advertencia | error | crítico]: establece el nivel de registro para la aplicación. Valor predeterminado: INFOTambién puede probar la siguiente función
repoagent clean # Remove repoagent-related cache
repoagent diff # Check what docs will be updated/generated based on current code changeSi es su primera vez generando documentación para el repositorio de destino, Repoagent creará automáticamente un archivo JSON que mantiene la información de la estructura global y una carpeta llamada Markdown_Docs en el directorio raíz del repositorio de destino para almacenar documentos.
Una vez que haya generado inicialmente la documentación global para el repositorio de destino, o si el proyecto que clonó ya contiene información de documentación global, ¡puede mantener una documentación interna de proyecto interna con su equipo de manera continua al configurar el gancho previo a la gancho en el repositorio de destino!
pre-commitRepoagent actualmente admite la generación de documentación para proyectos, lo que requiere cierta configuración en el repositorio de destino.
Primero, asegúrese de que el repositorio de destino sea un repositorio GIT y se haya inicializado.
git initInstale el pre-compromiso en el repositorio de destino para detectar cambios en el repositorio de GIT.
pip install pre-commit Cree un archivo llamado .pre-commit-config.yaml en el directorio raíz del repositorio de destino. Un ejemplo es el siguiente:
repos :
- repo : local
hooks :
- id : repo-agent
name : RepoAgent
entry : repoagent
language : system
pass_filenames : false # prevent from passing filenames to the hook
# You can specify the file types that trigger the hook, but currently only python is supported.
types : [python]Para obtener métodos de configuración específicos de ganchos, consulte Pre-Commit. Después de configurar el archivo YAML, ejecute el siguiente comando para instalar el gancho.
pre-commit installDe esta manera, cada confirmación de GIT activará el gancho del repoagente, detectar automáticamente los cambios en el repositorio de destino y generar documentos correspondientes. A continuación, puede hacer algunas modificaciones en el repositorio de destino, como agregar un nuevo archivo al repositorio de destino o modificar un archivo existente. Solo necesita seguir el flujo de trabajo Git normal: Git Add, Git Commit -M "Su mensaje de confirmación", Git Push El Repoagent Hook activará automáticamente a Git Commit, detectará los archivos que agregó en el paso anterior y generará los documentos correspondientes.
Después de la ejecución, Repoagent modificará automáticamente los archivos escenificados en el repositorio de destino y enviará formalmente el Conjunto. Una vez completada la ejecución, se mostrará el "aprobado" verde, como se muestra en la figura a continuación:
El documento generado se almacenará en la carpeta especificada en el directorio raíz del almacén de destino. La representación del documento generado es como se muestra a continuación:
Utilizamos el modelo predeterminado GPT-3.5-TURBO para generar documentación para el proyecto Xagent , que comprende aproximadamente 270,000 líneas de código. Puede ver los resultados de esta generación en el directorio Markdown_Docs del proyecto Xagent en GitHub. Para una calidad de documentación mejorada, sugerimos considerar modelos más avanzados como GPT-4-1106 o GPT-4-0125-previa .
Al final, puede ajustar de manera flexible el formato de salida, la plantilla y otros aspectos del documento personalizando el mensaje. Estamos entusiasmados con su exploración de un enfoque más científico para la escritura técnica automatizada y sus contribuciones a la comunidad.
Conceptualizamos el chat con el repositorio como una puerta de enlace unificada para estas aplicaciones aguas abajo, actuando como un conector que vincula repoagente con los usuarios humanos y otros agentes de IA. Nuestra investigación futura se centrará en adaptar la interfaz a varias aplicaciones aguas abajo y personalizarla para cumplir con sus características y requisitos de implementación únicos.
Aquí demostramos un prototipo preliminar de una de nuestras tareas aguas abajo: preguntas y respuestas automáticas para problemas y explicación del código. Puede iniciar el servidor ejecutando el siguiente código.
pip install repoagent[chat-with-repo]
repoagent chat-with-repoAquí hay casos destacados que han adoptado Repoagent.
@misc { luo2024repoagent ,
title = { RepoAgent: An LLM-Powered Open-Source Framework for Repository-level Code Documentation Generation } ,
author = { Qinyu Luo and Yining Ye and Shihao Liang and Zhong Zhang and Yujia Qin and Yaxi Lu and Yesai Wu and Xin Cong and Yankai Lin and Yingli Zhang and Xiaoyin Che and Zhiyuan Liu and Maosong Sun } ,
year = { 2024 } ,
eprint = { 2402.16667 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CL }
}