code2prompt
es una herramienta de línea de comandos (CLI) que convierte su código base en un único mensaje LLM con un árbol de fuentes, plantillas de mensajes y recuento de tokens.
Puede ejecutar esta herramienta en todo el directorio y generará un mensaje de Markdown bien formateado que detalla la estructura del árbol fuente y todo el código. Luego puede cargar este documento en modelos GPT o Claude con ventanas de contexto superior y pedirle que:
.gitignore
.Puede personalizar la plantilla de aviso para lograr cualquiera de los casos de uso deseados. Básicamente, atraviesa una base de código y crea un mensaje con todos los archivos fuente combinados. En resumen, automatiza copiar y pegar múltiples archivos fuente en su mensaje y formatearlos, además de permitirle saber cuántos tokens consume su código.
Descargue el binario más reciente para su sistema operativo desde Versiones.
Requiere:
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release
Se instala desde el registro crates.io
.
cargo install code2prompt
Para compilaciones no publicadas:
cargo install --git https://github.com/mufeedvh/code2prompt
code2prompt
está disponible en AUR
. Instálelo a través de cualquier ayudante de AUR.
paru/yay -S code2prompt
Si está en nix, puede usar nix-env
o profile
para instalar.
# without flakes:
nix-env -iA nixpkgs.code2prompt
# with flakes:
nix profile install nixpkgs#code2prompt
Genere un mensaje desde un directorio de base de código:
code2prompt path/to/codebase
Utilice un archivo de plantilla de manillar personalizado:
code2prompt path/to/codebase -t path/to/template.hbs
Filtrar archivos usando patrones globales:
code2prompt path/to/codebase --include= " *.rs,*.toml "
Excluir archivos usando patrones globales:
code2prompt path/to/codebase --exclude= " *.txt,*.md "
Excluir archivos/carpetas del árbol de origen según los patrones de exclusión:
code2prompt path/to/codebase --exclude= " *.npy,*.wav " --exclude-from-tree
Muestre el recuento de tokens del mensaje generado:
code2prompt path/to/codebase --tokens
Especifique un tokenizador para el recuento de tokens:
code2prompt path/to/codebase --tokens --encoding=p50k
Tokenizadores compatibles: cl100k
, p50k
, p50k_edit
, r50k_bas
.
Nota
Consulte Tokenizadores para obtener más detalles.
Guarde el mensaje generado en un archivo de salida:
code2prompt path/to/codebase --output=output.txt
Imprimir salida como JSON:
code2prompt path/to/codebase --json
La salida JSON tendrá la siguiente estructura:
{
"prompt" : " <Generated Prompt> " ,
"directory_name" : " codebase " ,
"token_count" : 1234 ,
"model_info" : " ChatGPT models, text-embedding-ada-002 " ,
"files" : []
}
Genere un mensaje de confirmación de Git (para archivos preparados):
code2prompt path/to/codebase --diff -t templates/write-git-commit.hbs
Genere una solicitud de extracción con comparación de ramas (para archivos preparados):
code2prompt path/to/codebase --git-diff-branch ' main, development ' --git-log-branch ' main, development ' -t templates/write-github-pull-request.hbs
Agregue números de línea a los bloques de código fuente:
code2prompt path/to/codebase --line-number
Deshabilite el código de ajuste dentro de los bloques de código de rebajas:
code2prompt path/to/codebase --no-codeblock
Inicialmente escribí esto para uso personal para utilizar la ventana de contexto de 200K de Claude 3.0 y ha demostrado ser bastante útil, así que decidí abrirlo.
code2prompt
viene con un conjunto de plantillas integradas para casos de uso comunes. Puede encontrarlos en el directorio templates
.
document-the-code.hbs
Utilice esta plantilla para generar indicaciones para documentar el código. Agregará comentarios de documentación a todas las funciones, métodos, clases y módulos públicos en el código base.
find-security-vulnerabilities.hbs
Utilice esta plantilla para generar indicaciones para encontrar posibles vulnerabilidades de seguridad en el código base. Buscará problemas de seguridad comunes y brindará recomendaciones sobre cómo solucionarlos o mitigarlos.
clean-up-code.hbs
Utilice esta plantilla para generar indicaciones para limpiar y mejorar la calidad del código. Buscará oportunidades para mejorar la legibilidad, el cumplimiento de las mejores prácticas, la eficiencia, el manejo de errores y más.
fix-bugs.hbs
Utilice esta plantilla para generar indicaciones para corregir errores en el código base. Ayudará a diagnosticar problemas, proporcionará sugerencias de solución y actualizará el código con las soluciones propuestas.
write-github-pull-request.hbs
Utilice esta plantilla para crear una descripción de solicitud de extracción de GitHub en Markdown comparando git diff y git log de dos ramas.
write-github-readme.hbs
Utilice esta plantilla para generar un archivo README de alta calidad para el proyecto, adecuado para alojar en GitHub. Analizará el código base para comprender su propósito y funcionalidad, y generará el contenido README en formato Markdown.
write-git-commit.hbs
Utilice esta plantilla para generar confirmaciones de git a partir de los archivos preparados en su directorio de git. Analizará el código base para comprender su propósito y funcionalidad, y generará el contenido del mensaje de confirmación de git en formato Markdown.
improve-performance.hbs
Utilice esta plantilla para generar indicaciones para mejorar el rendimiento del código base. Buscará oportunidades de optimización, proporcionará sugerencias específicas y actualizará el código con los cambios.
Puede utilizar estas plantillas pasando el indicador -t
seguido de la ruta al archivo de plantilla. Por ejemplo:
code2prompt path/to/codebase -t templates/document-the-code.hbs
code2prompt
admite el uso de variables definidas por el usuario en las plantillas de manillar. Cualquier variable en la plantilla que no forme parte del contexto predeterminado ( absolute_code_path
, source_tree
, files
) se tratará como variable definida por el usuario.
Durante la generación de mensajes, code2prompt
solicitará al usuario que ingrese valores para estas variables definidas por el usuario. Esto permite una mayor personalización de las indicaciones generadas en función de la entrada del usuario.
Por ejemplo, si su plantilla incluye {{challenge_name}}
y {{challenge_description}}
, se le pedirá que ingrese valores para estas variables cuando ejecute code2prompt
.
Esta característica permite crear plantillas reutilizables que se pueden adaptar a diferentes escenarios según la información proporcionada por el usuario.
La tokenización se implementa mediante tiktoken-rs
. tiktoken
admite estas codificaciones utilizadas por los modelos OpenAI:
Nombre de codificación | Modelos abiertos AI |
---|---|
cl100k_base | Modelos ChatGPT, text-embedding-ada-002 |
p50k_base | Modelos de código, text-davinci-002 , text-davinci-003 |
p50k_edit | Úselo para editar modelos como text-davinci-edit-001 , code-davinci-edit-001 |
r50k_base (o gpt2 ) | Modelos GPT-3 como davinci |
Para obtener más contexto sobre los diferentes tokenizadores, consulte el libro de cocina de OpenAI.
code2prompt
facilita la generación de solicitudes para LLM desde su base de código. Recorre el directorio, crea una estructura de árbol y recopila información sobre cada archivo. Puede personalizar la generación de mensajes utilizando plantillas de manillares. El mensaje generado se copia automáticamente en su portapapeles y también se puede guardar en un archivo de salida. code2prompt
ayuda a agilizar el proceso de creación de indicaciones de LLM para el análisis, la generación y otras tareas de código.
Formas de contribuir:
Licenciado bajo la Licencia MIT, consulte LICENCIA para obtener más información.
Si te gustó el proyecto y lo encontraste útil, ¡dale un visto bueno y considera apoyar a los autores!