Skip to content

Latest commit

 

History

History
277 lines (184 loc) · 11.1 KB

README_ES.md

File metadata and controls

277 lines (184 loc) · 11.1 KB

code2prompt

crates.io LICENSE

code2prompt

code2prompt es una herramienta de línea de comandos (CLI) que convierte tu base de código en un único prompt para LLM, incluyendo un árbol de archivos fuente, plantillas de prompts y conteo de tokens.

Tabla de Contenidos

Características

Puedes ejecutar esta herramienta en un directorio completo, y generará un prompt bien formateado en Markdown que detalla la estructura del árbol de archivos fuente y todo el código. Luego puedes cargar este documento en modelos como GPT o Claude con ventanas de contexto amplias y pedirles que:

  • Generen prompts para LLM rápidamente a partir de bases de código de cualquier tamaño.
  • Personalicen la generación de prompts usando plantillas de Handlebars (ver la plantilla predeterminada)
  • Respete los archivos .gitignore.
  • Filtren y excluyan archivos utilizando patrones glob.
  • Muestren el conteo de tokens del prompt generado (Ver Tokenizadores para más detalles).
  • Incluyan opcionalmente salidas de git diff (archivos en estado staged) en el prompt generado.
  • Copien automáticamente el prompt generado al portapapeles.
  • Guarden el prompt generado en un archivo de salida.
  • Excluyan archivos y carpetas por nombre o ruta.
  • Añadan números de línea a los bloques de código fuente.

Puedes personalizar las plantillas de prompts para lograr cualquier caso de uso deseado. Básicamente, recorre una base de código y crea un prompt con todos los archivos fuente combinados. En resumen, automatiza la tarea de copiar y formatear múltiples archivos fuente en un único prompt y te informa cuántos tokens consume.

Instalación

Lanzamiento de binarios

Descarga el binario más reciente para tu sistema operativo desde Releases.

Construcción desde código fuente

Requisitos:

git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release

cargo

Instala desde el registro crates.io.

cargo install code2prompt

Para versiones no publicadas:

cargo install --git https://github.com/mufeedvh/code2prompt

AUR

code2prompt está disponible en AUR. Instálalo usando cualquier gestor AUR.

paru/yay -S code2prompt

Nix

Si utilizas Nix, puedes instalarlo con nix-env o profile:

# Sin flakes:
nix-env -iA nixpkgs.code2prompt
# Con flakes:
nix profile install nixpkgs#code2prompt

Uso

Genera un prompt desde un directorio de código:

code2prompt path/to/codebase

Usa un archivo de plantilla Handlebars personalizado:

code2prompt path/to/codebase -t path/to/template.hbs

Filtrar archivos usando patrones glob:

code2prompt path/to/codebase --include="*.rs,*.toml"

Excluir archivos usando patrones glob:

code2prompt path/to/codebase --exclude="*.txt,*.md"

Excluir archivos/carpetas del árbol de origen basándose en patrones de exclusión:

code2prompt path/to/codebase --exclude="*.npy,*.wav" --exclude-from-tree

Mostrar el conteo de tokens del prompt generado:

code2prompt path/to/codebase --tokens

Especificar un tokenizador para el conteo de tokens:

code2prompt path/to/codebase --tokens --encoding=p50k

Tokenizadores soportados: cl100k, p50k, p50k_edit, r50k_bas.

Note

Ver Tokenizadores para más detalles.

Guardar el prompt 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": "Modelos de ChatGPT, text-embedding-ada-002",
  "files": []
}

Generar un mensaje de commit de Git (para archivos en estado staged):

code2prompt path/to/codebase --diff -t templates/write-git-commit.hbs

Generar una Pull Request comparando ramas (para archivos en estado staged):

code2prompt path/to/codebase --git-diff-branch 'main, development' --git-log-branch 'main, development' -t templates/write-github-pull-request.hbs

Añadir números de línea a los bloques de código fuente:

code2prompt path/to/codebase --line-number

Desactivar el envoltorio de código dentro de bloques de código markdown:

code2prompt path/to/codebase --no-codeblock
  • Reescribir el código a otro idioma.
  • Encontrar errores/vulnerabilidades de seguridad.
  • Documentar el código.
  • Implementar nuevas características.

Inicialmente escribí esto para uso personal para utilizar la ventana de contexto de 200K de Claude 3.0 y ha resultado ser bastante útil, ¡así que decidí hacerlo de código abierto!

Plantillas

code2prompt viene con un conjunto de plantillas integradas para casos de uso comunes. Puedes encontrarlas en el directorio templates.

Usa esta plantilla para generar prompts para documentar el código. Añadirá comentarios de documentación a todas las funciones, métodos, clases y módulos públicos en la base de código.

Usa esta plantilla para generar prompts para encontrar posibles vulnerabilidades de seguridad en la base de código. Buscará problemas de seguridad comunes y proporcionará recomendaciones sobre cómo solucionarlos o mitigarlos.

Usa esta plantilla para generar prompts para limpiar y mejorar la calidad del código. Buscará oportunidades para mejorar la legibilidad, adherencia a las mejores prácticas, eficiencia, manejo de errores, y más.

Usa esta plantilla para generar prompts para corregir errores en la base de código. Ayudará a diagnosticar problemas, proporcionar sugerencias de corrección y actualizar el código con las correcciones propuestas.

Usa esta plantilla para crear una descripción de Pull Request de GitHub en markdown comparando el git diff y el git log de dos ramas.

Usa esta plantilla para generar un archivo README de alta calidad para el proyecto, adecuado para alojar en GitHub. Analizará la base de código para entender su propósito y funcionalidad, y generará el contenido del README en formato Markdown.

Usa esta plantilla para generar commits de git a partir de los archivos en estado staged en tu directorio git. Analizará la base de código para entender su propósito y funcionalidad, y generará el contenido del mensaje de commit de git en formato Markdown.

Usa esta plantilla para generar prompts para mejorar el rendimiento de la base de código. Buscará oportunidades de optimización, proporcionará sugerencias específicas y actualizará el código con los cambios.

Puedes usar estas plantillas pasando el flag -t seguido de la ruta al archivo de plantilla. Por ejemplo:

code2prompt path/to/codebase -t templates/document-the-code.hbs

Variables Definidas por el Usuario

code2prompt soporta el uso de variables definidas por el usuario en las plantillas de Handlebars. Cualquier variable en la plantilla que no sea parte del contexto predeterminado (absolute_code_path, source_tree, files) será tratada como una variable definida por el usuario.

Durante la generación del prompt, code2prompt solicitará al usuario que ingrese valores para estas variables definidas por el usuario. Esto permite una mayor personalización de los prompts generados basados en la entrada del usuario.

Por ejemplo, si tu plantilla incluye {{challenge_name}} y {{challenge_description}}, se te pedirá que ingreses valores para estas variables al ejecutar code2prompt.

Esta característica permite crear plantillas reutilizables que pueden adaptarse a diferentes escenarios basados en la información proporcionada por el usuario.

Tokenizadores

La tokenización se implementa usando tiktoken-rs. tiktoken soporta estas codificaciones utilizadas por los modelos de OpenAI:

Nombre de codificación Modelos de OpenAI
cl100k_base Modelos de ChatGPT, text-embedding-ada-002
p50k_base Modelos de código, text-davinci-002, text-davinci-003
p50k_edit Usar para modelos de edición como text-davinci-edit-001, code-davinci-edit-001
r50k_base (o gpt2) Modelos GPT-3 como davinci
o200k_base Modelos GPT-4o

Para más contexto sobre los diferentes tokenizadores, ver el OpenAI Cookbook

¿Cómo es útil?

code2prompt facilita la generación de prompts para LLMs desde tu base de código. Recorre el directorio, construye una estructura de árbol y recopila información sobre cada archivo. Puedes personalizar la generación de prompts usando plantillas de Handlebars. El prompt generado se copia automáticamente en tu portapapeles y también se puede guardar en un archivo de salida. code2prompt ayuda a agilizar el proceso de creación de prompts para análisis de código, generación y otras tareas.

Contribución

Formas de contribuir:

  • Sugerir una característica
  • Reportar un error
  • Arreglar algo y abrir un pull request
  • Ayudarme a documentar el código
  • Difundir la palabra

Licencia

Licenciado bajo la Licencia MIT, ver LICENSE para más información.

¿Te gustó el proyecto?

Si te gustó el proyecto y lo encontraste útil, por favor dale una ⭐ y considera apoyar a los autores!