code2prompt
est un outil de ligne de commande (CLI) qui convertit votre base de code en une seule invite LLM avec une arborescence source, un modèle d'invite et un comptage de jetons.
Vous pouvez exécuter cet outil sur l'ensemble du répertoire et il générerait une invite Markdown bien formatée détaillant la structure arborescente source et tout le code. Vous pouvez ensuite télécharger ce document sur des modèles GPT ou Claude avec des fenêtres de contexte plus élevées et lui demander de :
.gitignore
.Vous pouvez personnaliser le modèle d'invite pour réaliser n'importe lequel des cas d'utilisation souhaités. Il parcourt essentiellement une base de code et crée une invite avec tous les fichiers sources combinés. En bref, il automatise le copier-coller de plusieurs fichiers sources dans votre invite et leur formatage tout en vous indiquant combien de jetons votre code consomme.
Téléchargez le dernier binaire pour votre système d'exploitation à partir des versions.
Nécessite :
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release
installations à partir du registre crates.io
.
cargo install code2prompt
Pour les versions non publiées :
cargo install --git https://github.com/mufeedvh/code2prompt
code2prompt
est disponible dans l' AUR
. Installez-le via n'importe quel assistant AUR.
paru/yay -S code2prompt
Si vous êtes sous nix, vous pouvez utiliser nix-env
ou profile
pour l'installer.
# without flakes:
nix-env -iA nixpkgs.code2prompt
# with flakes:
nix profile install nixpkgs#code2prompt
Générez une invite à partir d'un répertoire de base de code :
code2prompt path/to/codebase
Utilisez un fichier modèle de guidon personnalisé :
code2prompt path/to/codebase -t path/to/template.hbs
Filtrer les fichiers à l'aide de modèles glob :
code2prompt path/to/codebase --include= " *.rs,*.toml "
Exclure des fichiers à l'aide de modèles glob :
code2prompt path/to/codebase --exclude= " *.txt,*.md "
Excluez les fichiers/dossiers de l'arborescence source en fonction des modèles d'exclusion :
code2prompt path/to/codebase --exclude= " *.npy,*.wav " --exclude-from-tree
Affichez le nombre de jetons de l'invite générée :
code2prompt path/to/codebase --tokens
Spécifiez un tokenizer pour le nombre de jetons :
code2prompt path/to/codebase --tokens --encoding=p50k
Tokeniseurs pris en charge : cl100k
, p50k
, p50k_edit
, r50k_bas
.
Note
Voir Tokenizers pour plus de détails.
Enregistrez l'invite générée dans un fichier de sortie :
code2prompt path/to/codebase --output=output.txt
Imprimer la sortie au format JSON :
code2prompt path/to/codebase --json
La sortie JSON aura la structure suivante :
{
"prompt" : " <Generated Prompt> " ,
"directory_name" : " codebase " ,
"token_count" : 1234 ,
"model_info" : " ChatGPT models, text-embedding-ada-002 " ,
"files" : []
}
Générez un message de validation Git (pour les fichiers préparés) :
code2prompt path/to/codebase --diff -t templates/write-git-commit.hbs
Générez une Pull Request avec comparaison de branches (pour les fichiers préparés) :
code2prompt path/to/codebase --git-diff-branch ' main, development ' --git-log-branch ' main, development ' -t templates/write-github-pull-request.hbs
Ajoutez des numéros de ligne aux blocs de code source :
code2prompt path/to/codebase --line-number
Désactivez l'encapsulation du code dans les blocs de code de démarque :
code2prompt path/to/codebase --no-codeblock
J'ai initialement écrit ceci pour un usage personnel afin d'utiliser la fenêtre contextuelle de 200 Ko de Claude 3.0 et cela s'est avéré très utile, j'ai donc décidé de l'ouvrir en source libre !
code2prompt
est livré avec un ensemble de modèles intégrés pour les cas d'utilisation courants. Vous pouvez les trouver dans le répertoire templates
.
document-the-code.hbs
Utilisez ce modèle pour générer des invites pour documenter le code. Il ajoutera des commentaires de documentation à toutes les fonctions, méthodes, classes et modules publics de la base de code.
find-security-vulnerabilities.hbs
Utilisez ce modèle pour générer des invites permettant de rechercher des vulnérabilités de sécurité potentielles dans la base de code. Il recherchera les problèmes de sécurité courants et fournira des recommandations sur la manière de les résoudre ou de les atténuer.
clean-up-code.hbs
Utilisez ce modèle pour générer des invites pour nettoyer et améliorer la qualité du code. Il recherchera des opportunités pour améliorer la lisibilité, le respect des meilleures pratiques, l’efficacité, la gestion des erreurs, etc.
fix-bugs.hbs
Utilisez ce modèle pour générer des invites pour corriger les bogues dans la base de code. Cela aidera à diagnostiquer les problèmes, à fournir des suggestions de correctifs et à mettre à jour le code avec les correctifs proposés.
write-github-pull-request.hbs
Utilisez ce modèle pour créer une description de demande d'extraction GitHub dans markdown en comparant le git diff et le git log de deux branches.
write-github-readme.hbs
Utilisez ce modèle pour générer un fichier README de haute qualité pour le projet, adapté à l'hébergement sur GitHub. Il analysera la base de code pour comprendre son objectif et ses fonctionnalités, et générera le contenu README au format Markdown.
write-git-commit.hbs
Utilisez ce modèle pour générer des commits git à partir des fichiers préparés dans votre répertoire git. Il analysera la base de code pour comprendre son objectif et ses fonctionnalités, et générera le contenu du message de validation git au format Markdown.
improve-performance.hbs
Utilisez ce modèle pour générer des invites permettant d'améliorer les performances de la base de code. Il recherchera des opportunités d'optimisation, fournira des suggestions spécifiques et mettra à jour le code avec les modifications.
Vous pouvez utiliser ces modèles en passant l'indicateur -t
suivi du chemin d'accès au fichier modèle. Par exemple:
code2prompt path/to/codebase -t templates/document-the-code.hbs
code2prompt
prend en charge l'utilisation de variables définies par l'utilisateur dans les modèles de guidon. Toutes les variables du modèle qui ne font pas partie du contexte par défaut ( absolute_code_path
, source_tree
, files
) seront traitées comme des variables définies par l'utilisateur.
Lors de la génération de l'invite, code2prompt
invitera l'utilisateur à saisir des valeurs pour ces variables définies par l'utilisateur. Cela permet une personnalisation plus poussée des invites générées en fonction des entrées de l'utilisateur.
Par exemple, si votre modèle inclut {{challenge_name}}
et {{challenge_description}}
, vous serez invité à saisir des valeurs pour ces variables lors de l'exécution code2prompt
.
Cette fonctionnalité permet de créer des modèles réutilisables qui peuvent être adaptés à différents scénarios en fonction des informations fournies par l'utilisateur.
La tokenisation est implémentée à l'aide de tiktoken-rs
. tiktoken
prend en charge ces encodages utilisés par les modèles OpenAI :
Nom d'encodage | Modèles OpenAI |
---|---|
cl100k_base | Modèles ChatGPT, text-embedding-ada-002 |
p50k_base | Modèles de code, text-davinci-002 , text-davinci-003 |
p50k_edit | À utiliser pour modifier des modèles comme text-davinci-edit-001 , code-davinci-edit-001 |
r50k_base (ou gpt2 ) | Modèles GPT-3 comme davinci |
Pour plus de contexte sur les différents tokenizers, consultez le OpenAI Cookbook
code2prompt
facilite la génération d'invites pour les LLM à partir de votre base de code. Il parcourt le répertoire, crée une arborescence et collecte des informations sur chaque fichier. Vous pouvez personnaliser la génération d'invites à l'aide des modèles de guidons. L'invite générée est automatiquement copiée dans votre presse-papiers et peut également être enregistrée dans un fichier de sortie. code2prompt
permet de rationaliser le processus de création d'invites LLM pour l'analyse, la génération et d'autres tâches de code.
Façons de contribuer :
Sous licence MIT, voir LICENCE pour plus d'informations.
Si vous avez aimé le projet et l'avez trouvé utile, n'hésitez pas à lui donner un et pensez à soutenir les auteurs !