code2prompt
é uma ferramenta de linha de comando (CLI) que converte sua base de código em um único prompt LLM com uma árvore de origem, modelos de prompt e contagem de tokens.
Você pode executar esta ferramenta em todo o diretório e ela geraria um prompt Markdown bem formatado detalhando a estrutura da árvore de origem e todo o código. Você pode então fazer upload deste documento para modelos GPT ou Claude com janelas de contexto mais altas e solicitar:
.gitignore
.Você pode personalizar o modelo de prompt para atingir qualquer um dos casos de uso desejados. Essencialmente, ele percorre uma base de código e cria um prompt com todos os arquivos de origem combinados. Resumindo, ele automatiza a cópia e colagem de vários arquivos de origem em seu prompt e a formatação deles, além de informar quantos tokens seu código consome.
Baixe o binário mais recente para o seu sistema operacional em Releases.
Requer:
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release
instala a partir do registro crates.io
.
cargo install code2prompt
Para compilações não publicadas:
cargo install --git https://github.com/mufeedvh/code2prompt
code2prompt
está disponível no AUR
. Instale-o através de qualquer ajudante AUR.
paru/yay -S code2prompt
Se você estiver no nix, poderá usar nix-env
ou profile
para instalar.
# without flakes:
nix-env -iA nixpkgs.code2prompt
# with flakes:
nix profile install nixpkgs#code2prompt
Gere um prompt de um diretório codebase:
code2prompt path/to/codebase
Use um arquivo de modelo personalizado do Handlebars:
code2prompt path/to/codebase -t path/to/template.hbs
Filtre arquivos usando padrões glob:
code2prompt path/to/codebase --include= " *.rs,*.toml "
Exclua arquivos usando padrões glob:
code2prompt path/to/codebase --exclude= " *.txt,*.md "
Exclua arquivos/pastas da árvore de origem com base em padrões de exclusão:
code2prompt path/to/codebase --exclude= " *.npy,*.wav " --exclude-from-tree
Exiba a contagem de tokens do prompt gerado:
code2prompt path/to/codebase --tokens
Especifique um tokenizer para contagem de tokens:
code2prompt path/to/codebase --tokens --encoding=p50k
Tokenizadores suportados: cl100k
, p50k
, p50k_edit
, r50k_bas
.
Observação
Consulte Tokenizadores para obter mais detalhes.
Salve o prompt gerado em um arquivo de saída:
code2prompt path/to/codebase --output=output.txt
Imprima a saída como JSON:
code2prompt path/to/codebase --json
A saída JSON terá a seguinte estrutura:
{
"prompt" : " <Generated Prompt> " ,
"directory_name" : " codebase " ,
"token_count" : 1234 ,
"model_info" : " ChatGPT models, text-embedding-ada-002 " ,
"files" : []
}
Gere uma mensagem de commit do Git (para arquivos preparados):
code2prompt path/to/codebase --diff -t templates/write-git-commit.hbs
Gere uma solicitação pull com comparação de ramificação (para arquivos preparados):
code2prompt path/to/codebase --git-diff-branch ' main, development ' --git-log-branch ' main, development ' -t templates/write-github-pull-request.hbs
Adicione números de linha aos blocos de código-fonte:
code2prompt path/to/codebase --line-number
Desative o empacotamento de código dentro de blocos de código de remarcação:
code2prompt path/to/codebase --no-codeblock
Inicialmente escrevi isso para uso pessoal para utilizar a janela de contexto de 200K do Claude 3.0 e provou ser bastante útil, então decidi abri-lo!
code2prompt
vem com um conjunto de modelos integrados para casos de uso comuns. Você pode encontrá-los no diretório templates
.
document-the-code.hbs
Use este modelo para gerar prompts para documentar o código. Ele adicionará comentários de documentação a todas as funções, métodos, classes e módulos públicos na base de código.
find-security-vulnerabilities.hbs
Use este modelo para gerar prompts para encontrar possíveis vulnerabilidades de segurança na base de código. Ele procurará problemas comuns de segurança e fornecerá recomendações sobre como corrigi-los ou mitigá-los.
clean-up-code.hbs
Use este modelo para gerar prompts para limpar e melhorar a qualidade do código. Procurará oportunidades para melhorar a legibilidade, a adesão às melhores práticas, a eficiência, o tratamento de erros e muito mais.
fix-bugs.hbs
Use este modelo para gerar prompts para correção de bugs na base de código. Isso ajudará a diagnosticar problemas, fornecer sugestões de correções e atualizar o código com as correções propostas.
write-github-pull-request.hbs
Use este modelo para criar uma descrição de solicitação pull do GitHub em markdown comparando o git diff e o git log de duas ramificações.
write-github-readme.hbs
Use este modelo para gerar um arquivo README de alta qualidade para o projeto, adequado para hospedagem no GitHub. Ele analisará a base de código para entender sua finalidade e funcionalidade e gerará o conteúdo README no formato Markdown.
write-git-commit.hbs
Use este modelo para gerar commits git a partir dos arquivos preparados em seu diretório git. Ele analisará a base de código para entender seu propósito e funcionalidade e gerará o conteúdo da mensagem de commit do git no formato Markdown.
improve-performance.hbs
Use este modelo para gerar prompts para melhorar o desempenho da base de código. Ele procurará oportunidades de otimização, fornecerá sugestões específicas e atualizará o código com as alterações.
Você pode usar esses modelos passando o sinalizador -t
seguido do caminho para o arquivo de modelo. Por exemplo:
code2prompt path/to/codebase -t templates/document-the-code.hbs
code2prompt
suporta o uso de variáveis definidas pelo usuário nos modelos do Handlebars. Quaisquer variáveis no modelo que não façam parte do contexto padrão ( absolute_code_path
, source_tree
, files
) serão tratadas como variáveis definidas pelo usuário.
Durante a geração do prompt, code2prompt
solicitará que o usuário insira valores para essas variáveis definidas pelo usuário. Isso permite maior personalização dos prompts gerados com base na entrada do usuário.
Por exemplo, se o seu modelo incluir {{challenge_name}}
e {{challenge_description}}
, você será solicitado a inserir valores para essas variáveis ao executar code2prompt
.
Este recurso permite a criação de modelos reutilizáveis que podem ser adaptados a diferentes cenários com base nas informações fornecidas pelo usuário.
A tokenização é implementada usando tiktoken-rs
. tiktoken
suporta estas codificações usadas pelos modelos OpenAI:
Nome de codificação | Modelos OpenAI |
---|---|
cl100k_base | Modelos ChatGPT, text-embedding-ada-002 |
p50k_base | Modelos de código, text-davinci-002 , text-davinci-003 |
p50k_edit | Use para modelos de edição como text-davinci-edit-001 , code-davinci-edit-001 |
r50k_base (ou gpt2 ) | Modelos GPT-3 como davinci |
Para obter mais contexto sobre os diferentes tokenizadores, consulte o OpenAI Cookbook
code2prompt
facilita a geração de prompts para LLMs a partir de sua base de código. Ele percorre o diretório, constrói uma estrutura em árvore e coleta informações sobre cada arquivo. Você pode personalizar a geração de prompts usando modelos do Handlebars. O prompt gerado é copiado automaticamente para a área de transferência e também pode ser salvo em um arquivo de saída. code2prompt
ajuda a agilizar o processo de criação de prompts LLM para análise, geração de código e outras tarefas.
Formas de contribuir:
Licenciado sob a licença MIT, consulte LICENÇA para obter mais informações.
Se você gostou do projeto e o achou útil, por favor dê um e considere apoiar os autores!