code2prompt
ist ein Befehlszeilentool (CLI), das Ihre Codebasis in eine einzelne LLM-Eingabeaufforderung mit Quellbaum, Eingabeaufforderungsvorlagen und Tokenzählung konvertiert.
Sie können dieses Tool für das gesamte Verzeichnis ausführen und es generiert eine gut formatierte Markdown-Eingabeaufforderung mit detaillierten Angaben zur Quellbaumstruktur und dem gesamten Code. Sie können dieses Dokument dann entweder in GPT- oder Claude-Modelle mit höheren Kontextfenstern hochladen und es auffordern:
.gitignore
.Sie können die Eingabeaufforderungsvorlage anpassen, um jeden der gewünschten Anwendungsfälle zu erreichen. Es durchläuft im Wesentlichen eine Codebasis und erstellt eine Eingabeaufforderung mit allen Quelldateien zusammen. Kurz gesagt, es automatisiert das Kopieren und Einfügen mehrerer Quelldateien in Ihre Eingabeaufforderung und deren Formatierung. Außerdem erfahren Sie, wie viele Token Ihr Code verbraucht.
Laden Sie die neueste Binärdatei für Ihr Betriebssystem von Releases herunter.
Erfordert:
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release
wird über die crates.io
Registrierung installiert.
cargo install code2prompt
Für unveröffentlichte Builds:
cargo install --git https://github.com/mufeedvh/code2prompt
code2prompt
ist im AUR
verfügbar. Installieren Sie es über einen beliebigen AUR-Helfer.
paru/yay -S code2prompt
Wenn Sie nix verwenden, können Sie zur Installation nix-env
oder profile
verwenden.
# without flakes:
nix-env -iA nixpkgs.code2prompt
# with flakes:
nix profile install nixpkgs#code2prompt
Generieren Sie eine Eingabeaufforderung aus einem Codebasisverzeichnis:
code2prompt path/to/codebase
Verwenden Sie eine benutzerdefinierte Vorlagendatei für Lenker:
code2prompt path/to/codebase -t path/to/template.hbs
Filtern Sie Dateien mithilfe von Glob-Mustern:
code2prompt path/to/codebase --include= " *.rs,*.toml "
Dateien mithilfe von Glob-Mustern ausschließen:
code2prompt path/to/codebase --exclude= " *.txt,*.md "
Schließen Sie Dateien/Ordner basierend auf Ausschlussmustern aus dem Quellbaum aus:
code2prompt path/to/codebase --exclude= " *.npy,*.wav " --exclude-from-tree
Zeigen Sie die Tokenanzahl der generierten Eingabeaufforderung an:
code2prompt path/to/codebase --tokens
Geben Sie einen Tokenizer für die Tokenanzahl an:
code2prompt path/to/codebase --tokens --encoding=p50k
Unterstützte Tokenizer: cl100k
, p50k
, p50k_edit
, r50k_bas
.
Notiz
Weitere Informationen finden Sie unter Tokenizer.
Speichern Sie die generierte Eingabeaufforderung in einer Ausgabedatei:
code2prompt path/to/codebase --output=output.txt
Druckausgabe als JSON:
code2prompt path/to/codebase --json
Die JSON-Ausgabe hat die folgende Struktur:
{
"prompt" : " <Generated Prompt> " ,
"directory_name" : " codebase " ,
"token_count" : 1234 ,
"model_info" : " ChatGPT models, text-embedding-ada-002 " ,
"files" : []
}
Generieren Sie eine Git-Commit-Nachricht (für bereitgestellte Dateien):
code2prompt path/to/codebase --diff -t templates/write-git-commit.hbs
Generieren Sie eine Pull-Anfrage mit Zweigvergleich (für bereitgestellte Dateien):
code2prompt path/to/codebase --git-diff-branch ' main, development ' --git-log-branch ' main, development ' -t templates/write-github-pull-request.hbs
Zeilennummern zu Quellcodeblöcken hinzufügen:
code2prompt path/to/codebase --line-number
Deaktivieren Sie das Umschließen von Code innerhalb von Markdown-Codeblöcken:
code2prompt path/to/codebase --no-codeblock
Ich habe dies ursprünglich für den persönlichen Gebrauch geschrieben, um das 200K-Kontextfenster von Claude 3.0 zu nutzen, und es hat sich als sehr nützlich erwiesen, also habe ich beschlossen, es als Open Source zu veröffentlichen!
code2prompt
verfügt über eine Reihe integrierter Vorlagen für gängige Anwendungsfälle. Sie finden sie im templates
.
document-the-code.hbs
Verwenden Sie diese Vorlage, um Eingabeaufforderungen zur Dokumentation des Codes zu generieren. Es fügt Dokumentationskommentare zu allen öffentlichen Funktionen, Methoden, Klassen und Modulen in der Codebasis hinzu.
find-security-vulnerabilities.hbs
Verwenden Sie diese Vorlage, um Eingabeaufforderungen zum Auffinden potenzieller Sicherheitslücken in der Codebasis zu generieren. Es wird nach häufigen Sicherheitsproblemen suchen und Empfehlungen zur Behebung oder Abschwächung dieser Probleme geben.
clean-up-code.hbs
Verwenden Sie diese Vorlage, um Eingabeaufforderungen zur Bereinigung und Verbesserung der Codequalität zu generieren. Es wird nach Möglichkeiten gesucht, die Lesbarkeit, die Einhaltung bewährter Verfahren, die Effizienz, die Fehlerbehandlung und mehr zu verbessern.
fix-bugs.hbs
Verwenden Sie diese Vorlage, um Eingabeaufforderungen zum Beheben von Fehlern in der Codebasis zu generieren. Es hilft dabei, Probleme zu diagnostizieren, Lösungsvorschläge bereitzustellen und den Code mit vorgeschlagenen Korrekturen zu aktualisieren.
write-github-pull-request.hbs
Verwenden Sie diese Vorlage, um eine GitHub-Pull-Request-Beschreibung im Markdown zu erstellen, indem Sie das Git-Diff und das Git-Protokoll zweier Zweige vergleichen.
write-github-readme.hbs
Verwenden Sie diese Vorlage, um eine hochwertige README-Datei für das Projekt zu generieren, die zum Hosten auf GitHub geeignet ist. Es analysiert die Codebasis, um ihren Zweck und ihre Funktionalität zu verstehen, und generiert den README-Inhalt im Markdown-Format.
write-git-commit.hbs
Verwenden Sie diese Vorlage, um Git-Commits aus den bereitgestellten Dateien in Ihrem Git-Verzeichnis zu generieren. Es analysiert die Codebasis, um ihren Zweck und ihre Funktionalität zu verstehen, und generiert den Inhalt der Git-Commit-Nachricht im Markdown-Format.
improve-performance.hbs
Verwenden Sie diese Vorlage, um Eingabeaufforderungen zur Verbesserung der Leistung der Codebasis zu generieren. Es sucht nach Optimierungsmöglichkeiten, liefert konkrete Vorschläge und aktualisiert den Code mit den Änderungen.
Sie können diese Vorlagen verwenden, indem Sie das Flag -t
gefolgt vom Pfad zur Vorlagendatei übergeben. Zum Beispiel:
code2prompt path/to/codebase -t templates/document-the-code.hbs
code2prompt
unterstützt die Verwendung benutzerdefinierter Variablen in den Lenkervorlagen. Alle Variablen in der Vorlage, die nicht Teil des Standardkontexts ( absolute_code_path
, source_tree
, files
) sind, werden als benutzerdefinierte Variablen behandelt.
Während der Eingabeaufforderungsgenerierung fordert code2prompt
den Benutzer auf, Werte für diese benutzerdefinierten Variablen einzugeben. Dies ermöglicht eine weitere Anpassung der generierten Eingabeaufforderungen basierend auf Benutzereingaben.
Wenn Ihre Vorlage beispielsweise {{challenge_name}}
und {{challenge_description}}
enthält, werden Sie beim Ausführen von code2prompt
aufgefordert, Werte für diese Variablen einzugeben.
Diese Funktion ermöglicht die Erstellung wiederverwendbarer Vorlagen, die basierend auf den vom Benutzer bereitgestellten Informationen an verschiedene Szenarien angepasst werden können.
Die Tokenisierung wird mit tiktoken-rs
implementiert. tiktoken
unterstützt diese von OpenAI-Modellen verwendeten Kodierungen:
Codierungsname | OpenAI-Modelle |
---|---|
cl100k_base | ChatGPT-Modelle, text-embedding-ada-002 |
p50k_base | Codemodelle, text-davinci-002 , text-davinci-003 |
p50k_edit | Für Bearbeitungsmodelle wie text-davinci-edit-001 und code-davinci-edit-001 verwenden |
r50k_base (oder gpt2 ) | GPT-3-Modelle wie davinci |
Weitere Informationen zu den verschiedenen Tokenizern finden Sie im OpenAI-Kochbuch
code2prompt
können Sie ganz einfach Eingabeaufforderungen für LLMs aus Ihrer Codebasis generieren. Es durchläuft das Verzeichnis, baut eine Baumstruktur auf und sammelt Informationen zu jeder Datei. Sie können die Eingabeaufforderungsgenerierung mithilfe von Lenkervorlagen anpassen. Die generierte Eingabeaufforderung wird automatisch in Ihre Zwischenablage kopiert und kann auch in einer Ausgabedatei gespeichert werden. code2prompt
hilft dabei, den Prozess der Erstellung von LLM-Eingabeaufforderungen für die Codeanalyse, Generierung und andere Aufgaben zu optimieren.
Möglichkeiten, einen Beitrag zu leisten:
Lizenziert unter der MIT-Lizenz, weitere Informationen finden Sie unter LIZENZ.
Wenn Ihnen das Projekt gefallen hat und Sie es nützlich fanden, geben Sie ihm bitte eine Bewertung und überlegen Sie, die Autoren zu unterstützen!