Allgemeine Einführung
OneFileLLM ist ein Open-Source-Befehlszeilen-Tool zur Konsolidierung mehrerer Datenquellen in einer einzigen Textdatei zur einfachen Eingabe in Large Language Models (LLMs). Es unterstützt die Verarbeitung von GitHub-Repositories, ArXiv-Papieren, YouTube-Videotranskriptionen, Webinhalten, Sci-Hub-Papieren und lokalen Dateien, wobei automatisch strukturierter Text erzeugt und in die Zwischenablage kopiert wird. Der Entwickler Jim McMillan hat das Tool entwickelt, um die Erstellung von LLM-Prompts zu vereinfachen und die mühsame Aufgabe der manuellen Organisation von Daten zu reduzieren. Das in Python entwickelte Tool unterstützt mehrere Dateiformate, Textvorverarbeitung und XML-Wrapping, so dass es sich für Entwickler, Forscher und Inhaltsersteller eignet. Es ist einfach zu installieren, flexibel zu konfigurieren und kann von der Kommandozeile oder über eine Webschnittstelle bedient werden.
Funktionsliste
- Automatische Erkennung von Eingabearten (z. B. GitHub-Repositories, YouTube-Links, ArXiv-Papers, lokale Dateien usw.).
- Unterstützung für die Verarbeitung von GitHub-Repositories, Pull Requests und Issues in einem einzigen Text.
- Extrahieren und Konvertieren von PDF-Inhalten aus ArXiv- und Sci-Hub-Papers in Text.
- Erhalten Sie YouTube-Videotranskripte.
- Crawlen von Webinhalten, Unterstützung für eine bestimmte Tiefe der Crawling-Links.
- Verarbeitet eine breite Palette von Dateiformaten, darunter
.py
und.ipynb
und.txt
und.md
und.pdf
und.csv
usw. - Ermöglicht die Vorverarbeitung von Text, z. B. das Entfernen von Stoppwörtern, Interpunktion und die Umwandlung in Kleinbuchstaben.
- Unterstützung für den Ausschluss von Dateien und Verzeichnissen, Filterung von automatisch erzeugten Dateien (z. B.
*.pb.go
) oder Testkatalog. - Geben Sie die Anzahl der Token für komprimierten und unkomprimierten Text an, um die LLM-Kontextverwaltung zu optimieren.
- Der Ausgabetext ist im XML-Format gekapselt, um die Effizienz der LLM-Verarbeitung zu verbessern.
- Kopiert unkomprimierten Text automatisch in die Zwischenablage, um ihn einfach in die LLM-Plattform einzufügen.
- Stellt eine Flask-Webschnittstelle zur Verfügung, um die Eingabe von URLs oder Pfaden zu vereinfachen.
Hilfe verwenden
Einbauverfahren
OneFileLLM erfordert eine Python-Umgebung und entsprechende Abhängigkeiten. Hier sind die detaillierten Installationsschritte:
- Klon-Lager
Führen Sie den folgenden Befehl in einem Terminal aus, um das OneFileLLM-Repository zu klonen:git clone https://github.com/jimmc414/onefilellm.git cd onefilellm
- Erstellen einer virtuellen Umgebung(Empfohlen)
Um Abhängigkeitskonflikte zu vermeiden, empfiehlt es sich, eine virtuelle Umgebung zu erstellen:python -m venv .venv source .venv/bin/activate # Windows 使用 .venv\Scripts\activate
- Installation von Abhängigkeiten
Montagerequirements.txt
Die Abhängigkeiten, die in der Dateipip install -U -r requirements.txt
Zu den Abhängigkeiten gehören
PyPDF2
(PDF-Verarbeitung),BeautifulSoup
(Web-Crawler),tiktoken
(Anzahl der Token),pyperclip
(Operation Zwischenablage),youtube-transcript-api
(YouTube-Transkription), usw. - Konfigurieren von GitHub-Zugangs-Tokens(fakultativ)
Um auf private GitHub-Repositories zuzugreifen, müssen Sie ein persönliches Zugriffstoken einrichten:- Melden Sie sich bei GitHub an und gehen Sie zu Einstellungen > Entwicklereinstellungen > Persönliches Zugriffstoken.
- Um ein neues Token zu erzeugen, wählen Sie
repo
(privates Lager) oderpublic_repo
(Open Warehouse) Kompetenz. - Setzen Sie das Token als Umgebungsvariable:
export GITHUB_TOKEN=<your-token> # Windows 使用 set GITHUB_TOKEN=<your-token>
- Überprüfen der Installation
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Installation erfolgreich war:python onefilellm.py --help
Wenn eine Hilfemeldung angezeigt wird, ist die Installation korrekt.
Betriebsmodus
OneFileLLM unterstützt sowohl die Befehlszeile als auch die Webschnittstelle:
- Kommandozeilenmodus
Führen Sie das Hauptskript aus und geben Sie die URL oder den Pfad manuell ein:python onefilellm.py
oder geben Sie die URL/den Pfad direkt in der Befehlszeile an:
python onefilellm.py https://github.com/jimmc414/onefilellm
- Webinterface-Modus
Starten Sie die Flask-Weboberfläche:python onefilellm.py --web
Öffnen Sie Ihren Browser und besuchen Sie
http://localhost:5000
Geben Sie die URL oder den Pfad ein und klicken Sie auf "Verarbeiten", um die Ausgabe zu erhalten.
Hauptfunktionen
Das Herzstück von OneFileLLM ist die Integration mehrerer Datenquellen in einen einzigen Text, der als uncompressed_output.txt
(unkomprimiert),compressed_output.txt
(komprimiert) und processed_urls.txt
(Crawling einer Liste von URLs). Im Folgenden wird beschrieben, wie die wichtigsten Funktionen verwendet werden:
- Verarbeitung von GitHub-Repositories
Geben Sie die Repository-URL ein (z. B.https://github.com/jimmc414/onefilellm
), ermittelt das Tool rekursiv die unterstützten Dateitypen (z. B..py
und.md
), zusammengefasst in einem einzigen Text.
Beispiel:python onefilellm.py Enter URL or path: https://github.com/jimmc414/onefilellm
Die Ausgabedatei enthält den Inhalt der Repository-Datei im folgenden XML-Wrapper-Format:
<source type="github_repository"> <content> [文件内容] </content> </source>
Der Text wird automatisch in die Zwischenablage kopiert.
- Umgang mit GitHub Pull Requests oder Issues
Geben Sie einen Pull-Request ein (z.B.https://github.com/dear-github/dear-github/pull/102
) oder die URL der Ausgabe (z. B.https://github.com/isaacs/github/issues/1191
), extrahiert das Tool Diff-Details, Kommentare und den gesamten Repository-Inhalt.
Die Beispielausgabe enthält Code-Änderungen, Kommentare und die zugehörige Dokumentation in Form von Kapseln:<source type="github_pull_request"> <content> [差异详情和评论] </content> </source>
- ArXiv- oder Sci-Hub-Veröffentlichungen extrahieren
Geben Sie die ArXiv-URL ein (z. B.https://arxiv.org/abs/2401.14295
) oder Sci-Hub DOI/PMID (z.B.10.1053/j.ajkd.2017.08.002
vielleicht29203127
), konvertiert das Tool PDF in Text.
Beispiel:Enter URL or path: https://arxiv.org/abs/2401.14295
Die Ausgabe ist der in XML verpackte Text des Papiers:
<source type="arxiv_paper"> <content> [论文内容] </content> </source>
- Die YouTube-Mitschrift abrufen
Geben Sie die URL des YouTube-Videos ein (z. B.https://www.youtube.com/watch?v=KZ_NlnmPQYk
), Werkzeug zum Extrahieren von transkribiertem Text.
Beispiel:Enter URL or path: https://www.youtube.com/watch?v=KZ_NlnmPQYk
Die Ausgabe ist:
<source type="youtube_transcript"> <content> [转录内容] </content> </source>
- Web-Crawler
Geben Sie die URL der Webseite ein (z. B.https://llm.datasette.io/en/stable/
), crawlt das Tool die Seite und gibt Deep Links an (Standard)max_depth=2
).
Beispiel:Enter URL or path: https://llm.datasette.io/en/stable/
Die Ausgabe ist segmentierter Webtext, gekapselt als:
<source type="web_documentation"> <content> [网页内容] </content> </source>
- Umgang mit lokalen Dateien oder Verzeichnissen
Geben Sie den lokalen Dateipfad ein (z. B.C:\documents\report.pdf
) oder Katalog (z.B.C:\projects\research
), extrahiert das Tool Inhalte oder integriert unterstützte Dateitypen aus dem Verzeichnis.
Beispiel:Enter URL or path: C:\projects\research
Die Ausgabe ist der in XML verpackte Inhalt des Katalogs.
Featured Function Bedienung
- XML-Ausgabekapselung
Alle Ausgaben liegen im XML-Format vor, das eine klare Struktur bietet und die Effizienz der LLM-Verarbeitung verbessert. Das Format ist wie folgt:<source type="[source_type]"> <content> [内容] </content> </source>
darunter auch
source_type
auch durchgithub_repository
undarxiv_paper
usw. - Ausschluss von Dateien und Verzeichnissen
Unterstützung für den Ausschluss bestimmter Dateien (z.B.*.pb.go
) und Kataloge (z. B.tests
) Änderungonefilellm.py
den Nagel auf den Kopf treffenexcluded_patterns
im Gesang antwortenEXCLUDED_DIRS
Liste:excluded_patterns = ['*.pb.go', '*_test.go'] EXCLUDED_DIRS = ['tests', 'mocks']
Dies reduziert überflüssige Inhalte und optimiert die Verwendung von Token.
- Token-Anzahl
ausnutzentiktoken
Berechnet die Anzahl der Token für komprimierten und unkomprimierten Text und zeigt sie auf der Konsole an:Uncompressed token count: 1234 Compressed token count: 567
Hilft dem Benutzer sicherzustellen, dass der Text in das LLM-Kontextfenster passt.
- Vorverarbeitung von Text
Das Tool entfernt automatisch Stoppwörter und Interpunktion, konvertiert in Kleinbuchstaben und erzeugt eine komprimierte Ausgabe. Benutzer können ändernpreprocess_text
Funktion passt die Verarbeitungslogik an. - Integration der Zwischenablage
Die unkomprimierte Ausgabe wird automatisch in die Zwischenablage kopiert und direkt in LLM-Plattformen (z. B. ChatGPT, Claude) eingefügt. - Webschnittstelle
Die Flask-Schnittstelle vereinfacht die Arbeit, da der Benutzer eine URL oder einen Pfad eingibt und die Ausgabedatei herunterlädt oder den Text kopiert. Geeignet für nicht-technische Benutzer.
Benutzerdefinierte Konfiguration
- Art des Dokuments
Änderungenallowed_extensions
Liste, indem Sie unterstützte Dateitypen hinzufügen oder entfernen:allowed_extensions = ['.py', '.txt', '.md', '.ipynb', '.csv']
- Web Crawl-Tiefe
Änderungenmax_depth
ist der Standardwert 2:max_depth = 2
- Sci-Hub Domänenname
Wenn der Sci-Hub-Domänenname nicht verfügbar ist, ändern Sie dieonefilellm.py
Die Sci-Hub-URL in der
caveat
- Sorgen Sie für eine stabile Internetverbindung, denn die YouTube-Transkription und der Sci-Hub-Zugang basieren auf externen APIs.
- Große Repositories oder Webseiten können eine größere Ausgabe erzeugen. Es wird empfohlen, die Anzahl der Token zu überprüfen und die Ausschlussregeln anzupassen.
- Der Zugang zu Sci-Hub kann aufgrund regionaler Beschränkungen einen Domänenwechsel erfordern.
- Einige Dateiformate (z. B. verschlüsselte PDF-Dateien) werden möglicherweise nicht korrekt verarbeitet.
Anwendungsszenario
- Code-Überprüfung
Entwickler geben GitHub-Repositories oder Pull-Request-URLs ein, generieren Text mit Code und Kommentaren und geben LLMs ein, um die Codequalität oder Optimierungsvorschläge zu analysieren. - Zusammenfassung der Dissertation
Forscher geben die URL einer ArXiv- oder Sci-Hub-Veröffentlichung ein, extrahieren den Text und geben den LLM ein, um eine Zusammenfassung zu erstellen oder eine Forschungsfrage zu beantworten. - Zusammenstellung von Videoinhalten
Inhaltsersteller geben YouTube-Video-URLs ein, um transkribierten Text zu erhalten, geben LLMs ein, um Schlüsselpunkte zu extrahieren oder Skripte zu erstellen. - Integration von Dokumenten
Technische Redakteure geben Pfade zu Webseiten oder lokalen Verzeichnissen ein, integrieren Dokumentinhalte und geben LLMs ein, um Berichte umzuschreiben oder zu erstellen.
QA
- Welche Dateiformate werden von OneFileLLM unterstützt?
etw. unterstützen.py
und.ipynb
und.txt
und.md
und.pdf
und.csv
usw., können durch Änderung derallowed_extensions
Personalisierung. - Wie kann ich auf private GitHub-Repositories zugreifen?
Festlegen des persönlichen GitHub-Zugangs-Tokens als UmgebungsvariableGITHUB_TOKEN
erfordernrepo
Erlaubt. - Wie lässt sich die Größe des Ausgabetextes verringern?
Änderungenexcluded_patterns
im Gesang antwortenEXCLUDED_DIRS
Ausschluss fremder Dateien, Anpassungmax_depth
Begrenzen Sie die Crawling-Tiefe des Webs. - Was sind die Vorteile der XML-Ausgabe?
XML ist klar strukturiert, kennzeichnet die Quelle und den Typ des Inhalts und verbessert die Fähigkeit des LLM, komplexe Eingaben zu verstehen und zu verarbeiten. - Was soll ich tun, wenn ich mein Sci-Hub-Paper nicht herunterladen kann?
Überprüfen Sie die Netzwerkverbindung, um sicherzustellen, dass die DOI/PMID korrekt ist, oder aktualisieren Sie dieonefilellm.py
Der Sci-Hub-Domänenname in der