code2prompt
是一個命令列工具 (CLI),可將您的程式碼庫轉換為具有原始程式碼樹、提示範本和標記計數的單一 LLM 提示。
您可以在整個目錄上執行此工具,它將產生格式良好的 Markdown 提示,詳細說明來源樹結構和所有程式碼。然後,您可以將此文件上傳到具有更高上下文視窗的 GPT 或 Claude 模型,並要求其:
.gitignore
。您可以自訂提示範本以實現任何所需的用例。它本質上是遍歷程式碼庫並創建包含所有原始檔案的提示。簡而言之,它會自動將多個原始檔案複製並貼上到提示中並對其進行格式化,同時讓您知道程式碼消耗了多少個令牌。
從發行版下載適用於您的作業系統的最新二進位。
要求:
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
停用在 Markdown 程式碼區塊內包裝程式碼:
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,在 markdown 中建立 GitHub pull request 描述。
write-github-readme.hbs
使用此範本為專案產生高品質的 README 文件,適合在 GitHub 上託管。它將分析程式碼庫以了解其目的和功能,並產生 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
支援在 Handlebars 範本中使用使用者定義的變數。任何在模板中不屬於預設上下文的變數( 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 ) | GPT-3 模型如davinci |
有關不同標記器的更多背景信息,請參閱 OpenAI Cookbook
code2prompt
可以輕鬆地從您的程式碼庫產生 LLM 提示。它遍歷目錄,建立樹結構,並收集每個檔案的資訊。您可以使用 Handlebars 範本自訂提示產生。產生的提示會自動複製到剪貼簿,也可以儲存到輸出檔。 code2prompt
有助於簡化為程式碼分析、產生和其他任務建立 LLM 提示的過程。
貢獻方式:
根據 MIT 許可證獲得許可,請參閱許可證以了解更多資訊。
如果您喜歡該專案並發現它有用,請給它一個並考慮支持作者!