code2prompt
เป็นเครื่องมือบรรทัดคำสั่ง (CLI) ที่แปลงโค้ดเบสของคุณให้เป็นพรอมต์ LLM เดียวด้วยแผนผังต้นทาง การสร้างเทมเพลตพร้อมท์ และการนับโทเค็น
คุณสามารถเรียกใช้เครื่องมือนี้บนไดเร็กทอรีทั้งหมดได้ และเครื่องมือจะสร้างพรอมต์ Markdown ที่มีการจัดรูปแบบอย่างดีซึ่งมีรายละเอียดเกี่ยวกับโครงสร้างแผนผังต้นทางและโค้ดทั้งหมด จากนั้น คุณสามารถอัปโหลดเอกสารนี้ไปยังโมเดล GPT หรือ Claude ที่มีหน้าต่างบริบทที่สูงกว่า และขอให้:
.gitignore
gitignoreคุณสามารถปรับแต่งเทมเพลตพรอมต์เพื่อให้บรรลุกรณีการใช้งานที่ต้องการได้ โดยพื้นฐานแล้วจะสำรวจโค้ดเบสและสร้างพรอมต์พร้อมไฟล์ต้นฉบับทั้งหมดรวมกัน กล่าวโดยย่อคือ ระบบจะทำการคัดลอกและวางไฟล์ต้นฉบับหลายไฟล์ลงในพรอมต์ของคุณโดยอัตโนมัติ และจัดรูปแบบไฟล์เหล่านั้นพร้อมกับแจ้งให้คุณทราบว่าโค้ดของคุณใช้โทเค็นจำนวนเท่าใด
ดาวน์โหลดไบนารีล่าสุดสำหรับระบบปฏิบัติการของคุณจาก Releases
กำหนดให้มี:
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
สร้างพรอมต์จากไดเร็กทอรี codebase:
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
ระบุ tokenizer สำหรับการนับโทเค็น:
code2prompt path/to/codebase --tokens --encoding=p50k
โทเค็นที่รองรับ: cl100k
, p50k
, p50k_edit
, r50k_bas
บันทึก
ดู Tokenizer สำหรับรายละเอียดเพิ่มเติม
บันทึกพรอมต์ที่สร้างขึ้นไปยังไฟล์เอาต์พุต:
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
ตอนแรกฉันเขียนสิ่งนี้เพื่อการใช้งานส่วนตัวเพื่อใช้หน้าต่างบริบท 200K ของ Claude 3.0 และได้รับการพิสูจน์แล้วว่ามีประโยชน์มาก ดังนั้นฉันจึงตัดสินใจเปิดซอร์สมัน!
code2prompt
มาพร้อมกับชุดเทมเพลตในตัวสำหรับกรณีการใช้งานทั่วไป คุณสามารถค้นหาได้ในไดเร็กทอรี templates
document-the-code.hbs
ใช้เทมเพลตนี้เพื่อสร้างพร้อมท์สำหรับการบันทึกโค้ด มันจะเพิ่มความคิดเห็นเกี่ยวกับเอกสารให้กับฟังก์ชันสาธารณะ วิธีการ คลาส และโมดูลทั้งหมดในโค้ดเบส
find-security-vulnerabilities.hbs
ใช้เทมเพลตนี้เพื่อสร้างพร้อมท์สำหรับการค้นหาช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้นในโค้ดเบส โดยจะค้นหาปัญหาด้านความปลอดภัยทั่วไปและให้คำแนะนำเกี่ยวกับวิธีการแก้ไขหรือบรรเทาปัญหาเหล่านั้น
clean-up-code.hbs
ใช้เทมเพลตนี้เพื่อสร้างข้อความแจ้งให้ล้างและปรับปรุงคุณภาพโค้ด โดยจะมองหาโอกาสในการปรับปรุงความสามารถในการอ่าน การยึดมั่นในแนวทางปฏิบัติที่ดีที่สุด ประสิทธิภาพ การจัดการข้อผิดพลาด และอื่นๆ
fix-bugs.hbs
ใช้เทมเพลตนี้เพื่อสร้างพร้อมท์สำหรับการแก้ไขจุดบกพร่องในโค้ดเบส ซึ่งจะช่วยวินิจฉัยปัญหา ให้คำแนะนำในการแก้ไข และอัปเดตโค้ดด้วยการแก้ไขที่เสนอ
write-github-pull-request.hbs
ใช้เทมเพลตนี้เพื่อสร้างคำอธิบายคำขอดึง GitHub ในมาร์กดาวน์โดยการเปรียบเทียบ git diff และบันทึก git ของสองสาขา
write-github-readme.hbs
ใช้เทมเพลตนี้เพื่อสร้างไฟล์ README คุณภาพสูงสำหรับโปรเจ็กต์ ซึ่งเหมาะสำหรับการโฮสต์บน GitHub จะวิเคราะห์โค้ดเบสเพื่อทำความเข้าใจวัตถุประสงค์และฟังก์ชันการทำงาน และสร้างเนื้อหา README ในรูปแบบ Markdown
write-git-commit.hbs
ใช้เทมเพลตนี้เพื่อสร้างคอมมิตคอมมิตจากไฟล์ที่จัดฉากในไดเร็กทอรีคอมไพล์ของคุณ โดยจะวิเคราะห์โค้ดเบสเพื่อทำความเข้าใจวัตถุประสงค์และฟังก์ชันการทำงาน และสร้างเนื้อหาข้อความคอมมิตคอมมิตในรูปแบบ Markdown
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
คุณลักษณะนี้ช่วยให้สามารถสร้างเทมเพลตที่ใช้ซ้ำได้ซึ่งสามารถปรับให้เข้ากับสถานการณ์ที่แตกต่างกันตามข้อมูลที่ผู้ใช้ให้ไว้
Tokenization ถูกนำมาใช้โดยใช้ 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 จากโค้ดเบสของคุณเป็นเรื่องง่าย โดยจะสำรวจไดเร็กทอรี สร้างโครงสร้างแบบต้นไม้ และรวบรวมข้อมูลเกี่ยวกับแต่ละไฟล์ คุณสามารถปรับแต่งการสร้างพรอมต์ได้โดยใช้เทมเพลตแฮนด์บาร์ พรอมต์ที่สร้างขึ้นจะถูกคัดลอกไปยังคลิปบอร์ดของคุณโดยอัตโนมัติและยังสามารถบันทึกลงในไฟล์เอาท์พุตได้อีกด้วย code2prompt
ช่วยปรับปรุงกระบวนการสร้างพร้อมท์ LLM สำหรับการวิเคราะห์โค้ด การสร้าง และงานอื่นๆ
วิธีการมีส่วนร่วม:
ได้รับอนุญาตภายใต้ใบอนุญาต MIT ดูใบอนุญาตสำหรับข้อมูลเพิ่มเติม
หากคุณชอบโครงการนี้และพบว่ามีประโยชน์ โปรดให้การสนับสนุนและพิจารณาสนับสนุนผู้เขียน!