code2prompt
소스 트리, 프롬프트 템플릿 및 토큰 계산을 사용하여 코드베이스를 단일 LLM 프롬프트로 변환하는 명령줄 도구(CLI)입니다.
전체 디렉터리에서 이 도구를 실행할 수 있으며 소스 트리 구조와 모든 코드를 자세히 설명하는 올바른 형식의 Markdown 프롬프트가 생성됩니다. 그런 다음 이 문서를 더 높은 컨텍스트 창을 사용하여 GPT 또는 Claude 모델에 업로드하고 다음을 요청할 수 있습니다.
.gitignore
존중합니다.원하는 사용 사례를 달성하기 위해 프롬프트 템플릿을 사용자 정의할 수 있습니다. 기본적으로 코드베이스를 탐색하고 모든 소스 파일이 결합된 프롬프트를 생성합니다. 즉, 여러 소스 파일을 프롬프트에 복사하여 붙여넣고 형식을 지정하는 동시에 코드에서 소비하는 토큰 수를 알려주는 작업을 자동화합니다.
릴리스에서 해당 OS에 대한 최신 바이너리를 다운로드하세요.
요구사항:
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release
crates.io
레지스트리에서 설치합니다.
cargo install code2prompt
게시되지 않은 빌드의 경우:
cargo install --git https://github.com/mufeedvh/code2prompt
code2prompt
AUR
에서 사용할 수 있습니다. AUR 도우미를 통해 설치하세요.
paru/yay -S code2prompt
nix를 사용하는 경우 nix-env
또는 profile
사용하여 설치할 수 있습니다.
# without flakes:
nix-env -iA nixpkgs.code2prompt
# with flakes:
nix profile install nixpkgs#code2prompt
코드베이스 디렉터리에서 프롬프트를 생성합니다.
code2prompt path/to/codebase
사용자 정의 핸들바 템플릿 파일을 사용하십시오.
code2prompt path/to/codebase -t path/to/template.hbs
Glob 패턴을 사용하여 파일을 필터링합니다.
code2prompt path/to/codebase --include= " *.rs,*.toml "
glob 패턴을 사용하여 파일을 제외합니다.
code2prompt path/to/codebase --exclude= " *.txt,*.md "
제외 패턴을 기반으로 소스 트리에서 파일/폴더를 제외합니다.
code2prompt path/to/codebase --exclude= " *.npy,*.wav " --exclude-from-tree
생성된 프롬프트의 토큰 수를 표시합니다.
code2prompt path/to/codebase --tokens
토큰 수에 대한 토크나이저를 지정합니다.
code2prompt path/to/codebase --tokens --encoding=p50k
지원되는 토크나이저: cl100k
, p50k
, p50k_edit
, r50k_bas
.
메모
자세한 내용은 토크나이저를 참조하세요.
생성된 프롬프트를 출력 파일에 저장합니다.
code2prompt path/to/codebase --output=output.txt
출력을 JSON으로 인쇄합니다.
code2prompt path/to/codebase --json
JSON 출력의 구조는 다음과 같습니다.
{
"prompt" : " <Generated Prompt> " ,
"directory_name" : " codebase " ,
"token_count" : 1234 ,
"model_info" : " ChatGPT models, text-embedding-ada-002 " ,
"files" : []
}
Git 커밋 메시지 생성(스테이징된 파일의 경우):
code2prompt path/to/codebase --diff -t templates/write-git-commit.hbs
분기 비교를 통해 풀 요청 생성(스테이징된 파일의 경우):
code2prompt path/to/codebase --git-diff-branch ' main, development ' --git-log-branch ' main, development ' -t templates/write-github-pull-request.hbs
소스 코드 블록에 줄 번호를 추가합니다.
code2prompt path/to/codebase --line-number
마크다운 코드 블록 내에서 래핑 코드를 비활성화합니다.
code2prompt path/to/codebase --no-codeblock
처음에는 Claude 3.0의 200K 컨텍스트 창을 활용하기 위해 개인적인 용도로 이 글을 썼는데 꽤 유용한 것으로 입증되어 오픈 소스로 만들기로 결정했습니다!
code2prompt
일반적인 사용 사례를 위한 내장 템플릿 세트가 함께 제공됩니다. templates
디렉토리에서 찾을 수 있습니다.
document-the-code.hbs
이 템플릿을 사용하여 코드를 문서화하기 위한 프롬프트를 생성하세요. 코드베이스의 모든 공개 함수, 메소드, 클래스 및 모듈에 문서 주석을 추가합니다.
find-security-vulnerabilities.hbs
이 템플릿을 사용하여 코드베이스에서 잠재적인 보안 취약점을 찾기 위한 프롬프트를 생성하세요. 일반적인 보안 문제를 찾아 이를 해결하거나 완화하는 방법에 대한 권장 사항을 제공합니다.
clean-up-code.hbs
이 템플릿을 사용하여 코드 품질을 정리하고 개선하기 위한 프롬프트를 생성하세요. 가독성, 모범 사례 준수, 효율성, 오류 처리 등을 개선할 수 있는 기회를 모색합니다.
fix-bugs.hbs
이 템플릿을 사용하여 코드베이스의 버그 수정을 위한 프롬프트를 생성하세요. 문제를 진단하고, 수정 제안을 제공하고, 제안된 수정으로 코드를 업데이트하는 데 도움이 됩니다.
write-github-pull-request.hbs
이 템플릿을 사용하면 두 브랜치의 git diff와 git log를 비교하여 마크다운으로 GitHub 풀 요청 설명을 만들 수 있습니다.
write-github-readme.hbs
이 템플릿을 사용하여 GitHub에서 호스팅하기에 적합한 프로젝트용 고품질 README 파일을 생성하세요. 코드베이스를 분석하여 목적과 기능을 이해하고 Markdown 형식으로 README 콘텐츠를 생성합니다.
write-git-commit.hbs
이 템플릿을 사용하여 git 디렉터리의 준비된 파일에서 git 커밋을 생성하세요. 코드베이스를 분석하여 목적과 기능을 이해하고 Markdown 형식으로 git 커밋 메시지 콘텐츠를 생성합니다.
improve-performance.hbs
이 템플릿을 사용하여 코드베이스의 성능 향상을 위한 프롬프트를 생성하세요. 최적화 기회를 찾고, 구체적인 제안을 제공하고, 변경 사항으로 코드를 업데이트합니다.
-t
플래그 뒤에 템플릿 파일 경로를 전달하여 이러한 템플릿을 사용할 수 있습니다. 예를 들어:
code2prompt path/to/codebase -t templates/document-the-code.hbs
code2prompt
핸들바 템플릿에서 사용자 정의 변수의 사용을 지원합니다. 기본 컨텍스트( absolute_code_path
, source_tree
, files
)의 일부가 아닌 템플릿의 모든 변수는 사용자 정의 변수로 처리됩니다.
프롬프트 생성 중에 code2prompt
사용자에게 이러한 사용자 정의 변수에 대한 값을 입력하라는 메시지를 표시합니다. 이를 통해 사용자 입력을 기반으로 생성된 프롬프트를 추가로 사용자 정의할 수 있습니다.
예를 들어 템플릿에 {{challenge_name}}
및 {{challenge_description}}
이 포함된 경우 code2prompt
실행할 때 이러한 변수에 대한 값을 입력하라는 메시지가 표시됩니다.
이 기능을 사용하면 사용자가 제공한 정보를 기반으로 다양한 시나리오에 적용할 수 있는 재사용 가능한 템플릿을 만들 수 있습니다.
토큰화는 tiktoken-rs
사용하여 구현됩니다. tiktoken
OpenAI 모델에서 사용되는 다음 인코딩을 지원합니다.
인코딩 이름 | OpenAI 모델 |
---|---|
cl100k_base | ChatGPT 모델, text-embedding-ada-002 |
p50k_base | 코드 모델, text-davinci-002 , text-davinci-003 |
p50k_edit | text-davinci-edit-001 , code-davinci-edit-001 과 같은 편집 모델에 사용 |
r50k_base (또는 gpt2 ) | davinci 와 같은 GPT-3 모델 |
다양한 토크나이저에 대한 자세한 내용은 OpenAI Cookbook을 참조하세요.
code2prompt
사용하면 코드베이스에서 LLM에 대한 프롬프트를 쉽게 생성할 수 있습니다. 디렉터리를 탐색하고 트리 구조를 구축하며 각 파일에 대한 정보를 수집합니다. 핸들바 템플릿을 사용하여 프롬프트 생성을 사용자 정의할 수 있습니다. 생성된 프롬프트는 자동으로 클립보드에 복사되며 출력 파일에 저장할 수도 있습니다. code2prompt
코드 분석, 생성 및 기타 작업을 위한 LLM 프롬프트 생성 프로세스를 간소화하는 데 도움이 됩니다.
기여 방법:
MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 라이선스를 참조하세요.
프로젝트가 마음에 들었고 유용하다고 생각했다면 추천해 주시고 저자 지원을 고려해 보세요!