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.

OneFileLLM:整合多种数据源为单一文本文件

 

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 :

  1. 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
    
  2. 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
    
  3. Installation des dépendances
    montage requirements.txt Les dépendances énumérées dans le

    pip 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.

  4. 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é) ou public_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>
      
  5. 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:5000Saisissez 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 exemple https://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-être 29203127), 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 exemple C:\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 de github_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 exemple tests) Modification onefilellm.py a fait mouche excluded_patterns répondre en chantant EXCLUDED_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
    utiliser tiktoken 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 modifier preprocess_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
    modifications allowed_extensions en ajoutant ou en supprimant les types de fichiers pris en charge :

    allowed_extensions = ['.py', '.txt', '.md', '.ipynb', '.csv']
    
  • Profondeur du crawl
    modifications max_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 champ onefilellm.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

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. 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ément allowed_extensions Personnalisation.
  2. Comment accéder aux dépôts privés GitHub ?
    Définir le jeton d'accès personnel GitHub en tant que variable d'environnement GITHUB_TOKENexiger repo Permissions.
  3. Comment réduire la taille du texte de sortie ?
    modifications excluded_patterns répondre en chantant EXCLUDED_DIRS Exclusion des fichiers superflus, ajustement max_depth Limiter la profondeur d'exploration du web.
  4. 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.
  5. 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 le onefilellm.py Le nom de domaine Sci-Hub dans le
© déclaration de droits d'auteur
AiPPT

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...