Introdução geral
O OneFileLLM é uma ferramenta de linha de comando de código aberto projetada para consolidar várias fontes de dados em um único arquivo de texto para facilitar a entrada em modelos de linguagem grande (LLMs). Ela é compatível com o processamento de repositórios do GitHub, artigos do ArXiv, transcrições de vídeos do YouTube, conteúdo da Web, artigos do Sci-Hub e arquivos locais, gerando automaticamente texto estruturado e copiando-o para a área de transferência. O desenvolvedor Jim McMillan projetou a ferramenta para simplificar a criação de prompts LLM e reduzir a tediosa tarefa de organizar manualmente os dados. Desenvolvida em Python, a ferramenta é compatível com vários formatos de arquivo, pré-processamento de texto e agrupamento de XML, o que a torna adequada para desenvolvedores, pesquisadores e criadores de conteúdo. É fácil de instalar, flexível para configurar e pode ser operada a partir da linha de comando ou por meio de uma interface da Web.
Lista de funções
- Detecção automática de tipos de entrada (por exemplo, repositórios do GitHub, links do YouTube, artigos do ArXiv, arquivos locais etc.).
- Suporte ao processamento de repositórios do GitHub, Pull Requests e problemas em um único texto.
- Extraia e converta o conteúdo em PDF de artigos do ArXiv e do Sci-Hub em texto.
- Obter transcrições de vídeos do YouTube.
- Rastreamento de conteúdo da Web, suporte para profundidade especificada de links de rastreamento.
- Manipula uma ampla variedade de formatos de arquivo, incluindo
.py
e.ipynb
e.txt
e.md
e.pdf
e.csv
etc. - Fornece pré-processamento de texto, como remoção de palavras de parada, pontuação e conversão para letras minúsculas.
- Suporte para exclusão de arquivos e diretórios, filtragem de arquivos gerados automaticamente (por exemplo
*.pb.go
) ou catálogo de testes. - Informe o número de tokens para texto compactado e não compactado para otimizar o gerenciamento de contexto do LLM.
- O texto de saída é encapsulado no formato XML para aumentar a eficiência do processamento do LLM.
- Copia automaticamente o texto não compactado para a área de transferência para facilitar a colagem na plataforma LLM.
- Fornece uma interface da Web do Flask para simplificar a entrada de URL ou caminho.
Usando a Ajuda
Processo de instalação
O OneFileLLM requer um ambiente Python e dependências relacionadas. Veja a seguir as etapas detalhadas de instalação:
- armazém de clones
Execute o seguinte comando em um terminal para clonar o repositório OneFileLLM:git clone https://github.com/jimmc414/onefilellm.git cd onefilellm
- Criação de um ambiente virtual(Recomendado)
Para evitar conflitos de dependência, é recomendável criar um ambiente virtual:python -m venv .venv source .venv/bin/activate # Windows 使用 .venv\Scripts\activate
- Instalação de dependências
montagemrequirements.txt
As dependências listadas nopip install -U -r requirements.txt
As dependências incluem
PyPDF2
(Processamento de PDF),BeautifulSoup
(rastreador da Web),tiktoken
(contagem de tokens),pyperclip
(Operação da área de transferência),youtube-transcript-api
(transcrição do YouTube), etc. - Configuração de tokens de acesso ao GitHub(Opcional)
Para acessar repositórios privados do GitHub, você precisa configurar um token de acesso pessoal:- Faça login no GitHub e vá para Configurações > Configurações de desenvolvedor > Token de acesso pessoal.
- Para gerar um novo token, selecione
repo
(armazém privado) oupublic_repo
(Open Warehouse) Competência. - Defina o token como uma variável de ambiente:
export GITHUB_TOKEN=<your-token> # Windows 使用 set GITHUB_TOKEN=<your-token>
- Verificar a instalação
Execute o seguinte comando para verificar se a instalação foi bem-sucedida:python onefilellm.py --help
Se uma mensagem de ajuda for exibida, a instalação está correta.
modo de execução
O OneFileLLM é compatível com a linha de comando e com a interface da Web:
- modo de linha de comando
Execute o script principal e insira manualmente o URL ou o caminho:python onefilellm.py
ou especifique o URL/caminho diretamente na linha de comando:
python onefilellm.py https://github.com/jimmc414/onefilellm
- Modo de interface da Web
Execute a interface da Web do Flask:python onefilellm.py --web
Abra seu navegador e acesse
http://localhost:5000
Insira a URL ou o caminho e clique em "Process" para obter o resultado.
Funções principais
No centro do OneFileLLM está a integração de várias fontes de dados em um único texto, que é exibido como uncompressed_output.txt
(não compactado),compressed_output.txt
(compactado) e processed_urls.txt
(rastreamento de uma lista de URLs). Veja a seguir como usar as principais funções:
- Processamento de repositórios do GitHub
Digite o URL do repositório (por exemplohttps://github.com/jimmc414/onefilellm
), a ferramenta obtém recursivamente os tipos de arquivos compatíveis (por exemplo.py
e.md
), consolidados em um único texto.
Exemplo:python onefilellm.py Enter URL or path: https://github.com/jimmc414/onefilellm
O arquivo de saída contém o conteúdo do arquivo de repositório no seguinte formato de wrapper XML:
<source type="github_repository"> <content> [文件内容] </content> </source>
O texto é copiado automaticamente para a área de transferência.
- Como lidar com problemas ou solicitações pull do GitHub
Insira um pull request (por exemplo.https://github.com/dear-github/dear-github/pull/102
) ou o URL do problema (por exemplo.https://github.com/isaacs/github/issues/1191
), a ferramenta extrai detalhes de diferenças, comentários e todo o conteúdo do repositório.
O resultado da amostra inclui alterações de código, comentários e documentação relacionada encapsulada como:<source type="github_pull_request"> <content> [差异详情和评论] </content> </source>
- Extrair artigos do ArXiv ou do Sci-Hub
Digite o URL do ArXiv (por exemplohttps://arxiv.org/abs/2401.14295
) ou Sci-Hub DOI/PMID (por exemplo.10.1053/j.ajkd.2017.08.002
talvez29203127
), a ferramenta converte PDF em texto.
Exemplo:Enter URL or path: https://arxiv.org/abs/2401.14295
A saída é o texto em XML do documento:
<source type="arxiv_paper"> <content> [论文内容] </content> </source>
- Obtenha a transcrição do YouTube
Digite o URL do vídeo do YouTube (por exemplohttps://www.youtube.com/watch?v=KZ_NlnmPQYk
), ferramenta para extrair texto transcrito.
Exemplo:Enter URL or path: https://www.youtube.com/watch?v=KZ_NlnmPQYk
O resultado é:
<source type="youtube_transcript"> <content> [转录内容] </content> </source>
- rastreador da web
Digite o URL da página da Web (por exemplohttps://llm.datasette.io/en/stable/
), a ferramenta rastreia a página e especifica links profundos (padrão)max_depth=2
).
Exemplo:Enter URL or path: https://llm.datasette.io/en/stable/
O resultado é um texto segmentado da Web, encapsulado como:
<source type="web_documentation"> <content> [网页内容] </content> </source>
- Manipulação de arquivos ou diretórios locais
Digite o caminho do arquivo local (por exemploC:\documents\report.pdf
) ou catálogo (por exemploC:\projects\research
), a ferramenta extrai o conteúdo ou integra os tipos de arquivos compatíveis do diretório.
Exemplo:Enter URL or path: C:\projects\research
A saída é o conteúdo do catálogo em formato XML.
Operação da função em destaque
- Encapsulamento de saída XML
Todos os resultados estão no formato XML, que fornece uma estrutura clara e melhora a eficiência do processamento do LLM. O formato é o seguinte:<source type="[source_type]"> <content> [内容] </content> </source>
Entre eles
source_type
inclusive por meio degithub_repository
earxiv_paper
etc. - Exclusão de arquivos e diretórios
Suporte para exclusão de arquivos específicos (por exemplo*.pb.go
) e catálogos (por exemplotests
) Modificaçãoonefilellm.py
acertou em cheioexcluded_patterns
responder cantandoEXCLUDED_DIRS
Lista:excluded_patterns = ['*.pb.go', '*_test.go'] EXCLUDED_DIRS = ['tests', 'mocks']
Isso reduz o conteúdo estranho e otimiza o uso de tokens.
- contagem de tokens
fazer uso detiktoken
Calcula o número de tokens para texto compactado e não compactado, exibido no console:Uncompressed token count: 1234 Compressed token count: 567
Ajuda o usuário a garantir que o texto caiba na janela de contexto do LLM.
- Pré-processamento de texto
A ferramenta remove automaticamente as palavras de parada e a pontuação, converte para letras minúsculas e gera uma saída compactada. Os usuários podem modificarpreprocess_text
personaliza a lógica de processamento. - Integração da área de transferência
A saída não compactada é automaticamente copiada para a área de transferência e colada diretamente nas plataformas LLM (por exemplo, ChatGPT, Claude). - interface da web
A interface do Flask simplifica as operações, pois o usuário insere um URL ou caminho e faz o download do arquivo de saída ou copia o texto. Adequado para usuários não técnicos.
Configuração personalizada
- Tipo de documento
modificaçõesallowed_extensions
adicionando ou removendo tipos de arquivos suportados:allowed_extensions = ['.py', '.txt', '.md', '.ipynb', '.csv']
- Profundidade de rastreamento da Web
modificaçõesmax_depth
o valor padrão é 2:max_depth = 2
- Nome de domínio Sci-Hub
Se o nome de domínio do Sci-Hub não estiver disponível, altere oonefilellm.py
O URL do Sci-Hub no campo
advertência
- Garanta uma conexão estável com a Internet, pois a transcrição do YouTube e o acesso ao Sci-Hub dependem de APIs externas.
- Repositórios ou páginas da Web grandes podem gerar uma saída maior; recomenda-se verificar a contagem de tokens e ajustar as regras de exclusão.
- O acesso ao Sci-Hub pode exigir uma alteração de domínio devido a restrições regionais.
- Alguns formatos de arquivo (como PDF criptografado) podem não ser processados corretamente.
cenário do aplicativo
- Revisão do código
Os desenvolvedores inserem repositórios do GitHub ou URLs de solicitações pull, geram texto com código e comentários e inserem LLMs para analisar a qualidade do código ou sugestões de otimização. - Resumo da tese
Os pesquisadores inserem o URL de um artigo do ArXiv ou do Sci-Hub, extraem o texto e inserem o LLM para gerar um resumo ou responder a uma pergunta de pesquisa. - Agrupamento de conteúdo de vídeo
Os criadores de conteúdo inserem URLs de vídeos do YouTube para obter texto transcrito, inserem LLMs para extrair pontos-chave ou gerar scripts. - Integração de documentos
Os redatores técnicos inserem caminhos para páginas da Web ou diretórios locais, integram o conteúdo de documentos e inserem LLMs para reescrever ou gerar relatórios.
QA
- Quais formatos de arquivo são compatíveis com o OneFileLLM?
apoiar algo.py
e.ipynb
e.txt
e.md
e.pdf
e.csv
etc., podem ser modificados modificando oallowed_extensions
Personalização. - Como faço para acessar repositórios privados do GitHub?
Definir o token de acesso pessoal do GitHub como uma variável de ambienteGITHUB_TOKEN
exigirrepo
Permissões. - Como reduzir o tamanho do texto de saída?
modificaçõesexcluded_patterns
responder cantandoEXCLUDED_DIRS
Exclusão de arquivos estranhos, ajuste demax_depth
Limite a profundidade de rastreamento da Web. - Quais são as vantagens da saída XML?
O XML é claramente estruturado, rotulando a origem e o tipo de conteúdo e melhorando a capacidade do LLM de entender e processar informações complexas. - O que devo fazer se não conseguir baixar meu artigo do Sci-Hub?
Verifique a conexão de rede para ter certeza de que o DOI/PMID está correto ou atualize oonefilellm.py
O nome de domínio do Sci-Hub no