OneFileLLM : Intégration de plusieurs sources de données dans un seul fichier texte
Introduction générale
OneFileLLM est un outil de ligne de commande open source conçu pour consolider plusieurs sources de données en un seul fichier texte afin de faciliter l'entrée dans les grands modèles de langage (LLM). Il prend en charge le traitement des dépôts GitHub, des articles ArXiv, des transcriptions de vidéos YouTube, du contenu web, des articles Sci-Hub et des fichiers locaux, en générant automatiquement un texte structuré et en le copiant dans le presse-papiers. Le développeur Jim McMillan a conçu l'outil pour simplifier la création d'invites LLM et réduire la tâche fastidieuse de l'organisation manuelle des données. Développé en Python, l'outil prend en charge plusieurs formats de fichiers, le prétraitement du texte et l'habillage XML, ce qui le rend adapté aux développeurs, aux chercheurs et aux créateurs de contenu. Il est facile à installer, flexible à configurer et peut être utilisé à partir de la ligne de commande ou par le biais d'une interface web.

Liste des fonctions
- Détection automatique des types d'entrée (par exemple, dépôts GitHub, liens YouTube, articles ArXiv, fichiers locaux, etc.)
- Prise en charge du traitement des dépôts GitHub, des Pull Requests et des Issues en un seul texte.
- Extraire et convertir en texte le contenu PDF des articles ArXiv et Sci-Hub.
- Obtenir des transcriptions de vidéos YouTube.
- L'exploration du contenu web, la prise en charge de la profondeur spécifiée des liens d'exploration.
- Prise en charge d'un large éventail de formats de fichiers, notamment
.py
,.ipynb
,.txt
,.md
,.pdf
,.csv
etc. - Fournit un prétraitement du texte tel que la suppression des mots vides, de la ponctuation, la conversion en minuscules.
- Prise en charge de l'exclusion de fichiers et de répertoires, du filtrage des fichiers générés automatiquement (par ex.
*.pb.go
) ou un catalogue de tests. - Indiquer le nombre de tokens pour le texte compressé et non compressé afin d'optimiser la gestion du contexte LLM.
- Le texte de sortie est encapsulé au format XML pour améliorer l'efficacité du traitement LLM.
- Copie automatiquement le texte non compressé dans le presse-papiers pour le coller facilement dans la plate-forme LLM.
- Fournit une interface web Flask pour simplifier la saisie d'URL ou de chemins d'accès.
Utiliser l'aide
Processus d'installation
OneFileLLM nécessite un environnement Python et les dépendances associées. Voici les étapes détaillées de l'installation :
- entrepôt de clones
Exécutez la commande suivante dans un terminal pour cloner le dépôt OneFileLLM :git clone https://github.com/jimmc414/onefilellm.git cd onefilellm
- Créer un environnement virtuel(Recommandé)
Pour éviter les conflits de dépendance, il est recommandé de créer un environnement virtuel :python -m venv .venv source .venv/bin/activate # Windows 使用 .venv\Scripts\activate
- Installation des dépendances
montagerequirements.txt
Les dépendances énumérées dans lepip install -U -r requirements.txt
Les dépendances comprennent
PyPDF2
(traitement PDF),BeautifulSoup
(robot d'exploration),tiktoken
(nombre de jetons),pyperclip
(Opération presse-papiers),youtube-transcript-api
(transcription YouTube), etc. - Configuration des jetons d'accès à GitHub(optionnel)
Pour accéder aux dépôts privés de GitHub, vous devez créer un jeton d'accès personnel :- Connectez-vous à GitHub et allez dans Paramètres > Paramètres du développeur > Jeton d'accès personnel.
- Pour générer un nouveau jeton, sélectionnez
repo
(entrepôt privé) oupublic_repo
(Entrepôt ouvert) Compétence. - Définir le jeton comme une variable d'environnement :
export GITHUB_TOKEN=<your-token> # Windows 使用 set GITHUB_TOKEN=<your-token>
- Vérifier l'installation
Exécutez la commande suivante pour vérifier si l'installation a réussi :python onefilellm.py --help
Si un message d'aide s'affiche, l'installation est correcte.
mode de fonctionnement
OneFileLLM supporte à la fois la ligne de commande et l'interface web :
- mode ligne de commande
Exécutez le script principal et saisissez manuellement l'URL ou le chemin d'accès :python onefilellm.py
ou spécifier l'URL/chemin directement sur la ligne de commande :
python onefilellm.py https://github.com/jimmc414/onefilellm
- Mode interface web
Lancez l'interface web de Flask :python onefilellm.py --web
Ouvrez votre navigateur et visitez
http://localhost:5000
Saisissez l'URL ou le chemin d'accès et cliquez sur "Traiter" pour obtenir le résultat.
Principales fonctions
Au cœur de OneFileLLM se trouve l'intégration de plusieurs sources de données dans un texte unique, édité sous la forme de uncompressed_output.txt
(non compressé),compressed_output.txt
(comprimés) et processed_urls.txt
(exploration d'une liste d'URL). Voici comment utiliser les principales fonctions :
- Traitement des dépôts GitHub
Saisissez l'URL du référentiel (par ex.https://github.com/jimmc414/onefilellm
), l'outil récupère de manière récursive les types de fichiers pris en charge (par ex..py
,.md
), regroupés en un seul texte.
Exemple :python onefilellm.py Enter URL or path: https://github.com/jimmc414/onefilellm
Le fichier de sortie contient le contenu du fichier du référentiel dans le format XML suivant :
<source type="github_repository"> <content> [文件内容] </content> </source>
Le texte est automatiquement copié dans le presse-papiers.
- Gestion des demandes d'extraction ou des problèmes sur GitHub
Saisissez une demande d'extraction (par exemplehttps://github.com/dear-github/dear-github/pull/102
) ou l'URL de la question (par ex.https://github.com/isaacs/github/issues/1191
), l'outil extrait les détails des diffs, les commentaires et l'ensemble du contenu du référentiel.
L'exemple de sortie comprend les changements de code, les commentaires et la documentation connexe encapsulée sous forme de :<source type="github_pull_request"> <content> [差异详情和评论] </content> </source>
- Extraire les articles ArXiv ou Sci-Hub
Saisissez l'URL ArXiv (par ex.https://arxiv.org/abs/2401.14295
) ou Sci-Hub DOI/PMID (par ex.10.1053/j.ajkd.2017.08.002
peut-être29203127
), l'outil convertit le PDF en texte.
Exemple :Enter URL or path: https://arxiv.org/abs/2401.14295
Le résultat est un texte XML de l'article :
<source type="arxiv_paper"> <content> [论文内容] </content> </source>
- Obtenir la transcription sur YouTube
Saisissez l'URL de la vidéo YouTube (par ex.https://www.youtube.com/watch?v=KZ_NlnmPQYk
), outil d'extraction de texte transcrit.
Exemple :Enter URL or path: https://www.youtube.com/watch?v=KZ_NlnmPQYk
Le résultat est le suivant :
<source type="youtube_transcript"> <content> [转录内容] </content> </source>
- robot d'exploration
Saisissez l'URL de la page web (par ex.https://llm.datasette.io/en/stable/
), l'outil explore la page et spécifie les liens profonds (par défaut)max_depth=2
).
Exemple :Enter URL or path: https://llm.datasette.io/en/stable/
Le résultat est un texte web segmenté, encapsulé sous forme de :
<source type="web_documentation"> <content> [网页内容] </content> </source>
- Manipulation de fichiers ou de répertoires locaux
Saisissez le chemin d'accès au fichier local (par ex.C:\documents\report.pdf
) ou un catalogue (par exempleC:\projects\research
), l'outil extrait le contenu ou intègre les types de fichiers pris en charge dans le répertoire.
Exemple :Enter URL or path: C:\projects\research
La sortie est le contenu du catalogue enveloppé de XML.
Fonction en vedette Fonctionnement
- Encapsulation des sorties XML
Tous les résultats sont au format XML, qui fournit une structure claire et améliore l'efficacité du traitement LLM. Le format est le suivant :<source type="[source_type]"> <content> [内容] </content> </source>
Parmi ceux-ci
source_type
y compris par le biais degithub_repository
,arxiv_paper
etc. - Exclusion de fichiers et de répertoires
Prise en charge de l'exclusion de fichiers spécifiques (par ex.*.pb.go
) et des catalogues (par exempletests
) Modificationonefilellm.py
a fait moucheexcluded_patterns
répondre en chantantEXCLUDED_DIRS
Liste :excluded_patterns = ['*.pb.go', '*_test.go'] EXCLUDED_DIRS = ['tests', 'mocks']
Cela permet de réduire le contenu superflu et d'optimiser l'utilisation des jetons.
- nombre de jetons
utilisertiktoken
Calcule le nombre de tokens pour un texte compressé et non compressé, affiché sur la console :Uncompressed token count: 1234 Compressed token count: 567
Aide l'utilisateur à s'assurer que le texte tient dans la fenêtre contextuelle du LLM.
- Prétraitement du texte
L'outil supprime automatiquement les mots obsolètes, la ponctuation, convertit en minuscules et génère une sortie compressée. Les utilisateurs peuvent modifierpreprocess_text
personnalise la logique de traitement. - Intégration du presse-papiers
La sortie non compressée est automatiquement copiée dans le presse-papiers et collée directement dans les plates-formes LLM (par exemple ChatGPT, Claude). - interface web
L'interface Flask simplifie les opérations : l'utilisateur saisit une URL ou un chemin et télécharge le fichier de sortie ou copie le texte. Convient aux utilisateurs non techniques.
Configuration personnalisée
- Type de document
modificationsallowed_extensions
en ajoutant ou en supprimant les types de fichiers pris en charge :allowed_extensions = ['.py', '.txt', '.md', '.ipynb', '.csv']
- Profondeur du crawl
modificationsmax_depth
la valeur par défaut est 2 :max_depth = 2
- Nom de domaine Sci-Hub
Si le nom de domaine Sci-Hub n'est pas disponible, modifiez le champonefilellm.py
L'URL de Sci-Hub dans le
mise en garde
- Assurez-vous d'une connexion internet stable, la transcription de YouTube et l'accès à Sci-Hub reposent sur des API externes.
- Les grands référentiels ou les pages web peuvent générer des résultats plus importants, il est recommandé de vérifier le nombre de jetons et d'ajuster les règles d'exclusion.
- L'accès à Sci-Hub peut nécessiter un changement de domaine en raison de restrictions régionales.
- Certains formats de fichiers (tels que les PDF cryptés) peuvent ne pas être traités correctement.
scénario d'application
- Examen du code
Les développeurs saisissent des dépôts GitHub ou des URL de demandes d'extraction, génèrent du texte avec du code et des commentaires, et saisissent des LLM pour analyser la qualité du code ou des suggestions d'optimisation. - Résumé de la thèse
Les chercheurs saisissent l'URL d'un article ArXiv ou Sci-Hub, extraient le texte et saisissent le LLM pour générer un résumé ou répondre à une question de recherche. - Collation du contenu vidéo
Les créateurs de contenu saisissent les URL des vidéos YouTube pour obtenir un texte transcrit, saisissent les LLM pour extraire les points clés ou générer des scripts. - Intégration des documents
Les rédacteurs techniques saisissent des chemins d'accès à des pages web ou à des répertoires locaux, intègrent le contenu des documents et saisissent des MLD pour réécrire ou générer des rapports.
QA
- Quels sont les formats de fichiers supportés par OneFileLLM ?
adjuvant.py
,.ipynb
,.txt
,.md
,.pdf
,.csv
etc., peuvent être modifiées en modifiant l'élémentallowed_extensions
Personnalisation. - Comment accéder aux dépôts privés GitHub ?
Définir le jeton d'accès personnel GitHub en tant que variable d'environnementGITHUB_TOKEN
exigerrepo
Permissions. - Comment réduire la taille du texte de sortie ?
modificationsexcluded_patterns
répondre en chantantEXCLUDED_DIRS
Exclusion des fichiers superflus, ajustementmax_depth
Limiter la profondeur d'exploration du web. - Quels sont les avantages de la sortie XML ?
XML est clairement structuré, étiquetant la source et le type de contenu et améliorant la capacité de LLM à comprendre et à traiter des données complexes. - Que dois-je faire si je ne peux pas télécharger mon article Sci-Hub ?
Vérifiez la connexion au réseau pour vous assurer que le DOI/PMID est correct, ou mettez à jour leonefilellm.py
Le nom de domaine Sci-Hub dans le
© déclaration de droits d'auteur
L'article est protégé par le droit d'auteur et ne doit pas être reproduit sans autorisation.
Articles connexes
Pas de commentaires...