はじめに
OneFileLLMは、複数のデータソースを単一のテキストファイルに統合し、大規模言語モデル(LLM)に簡単に入力できるように設計されたオープンソースのコマンドラインツールです。GitHubリポジトリ、ArXiv論文、YouTube動画トランスクリプト、ウェブコンテンツ、Sci-Hub論文、ローカルファイルの処理をサポートし、構造化テキストを自動的に生成してクリップボードにコピーする。開発者のジム・マクミランは、LLMプロンプトの作成を簡素化し、データを手作業で整理する退屈な作業を減らすためにこのツールを設計した。Pythonで開発されたこのツールは、複数のファイル形式、テキストの前処理、XMLのラッピングをサポートしており、開発者、研究者、コンテンツ作成者に適している。インストールが簡単で、柔軟な設定ができ、コマンドラインからもウェブインターフェースからも操作できる。
機能一覧
- 入力タイプの自動検出(GitHubリポジトリ、YouTubeリンク、ArXiv論文、ローカルファイルなど)。
- GitHubリポジトリ、Pull Requests、Issuesを1つのテキストにまとめる処理をサポート。
- ArXivとSci-Hubの論文のPDFコンテンツを抽出し、テキストに変換します。
- YouTubeの動画トランスクリプトを入手
- ウェブコンテンツをクロールし、指定された深さのクロールリンクをサポートする。
- 以下のような幅広いファイル形式に対応。
.py
そして.ipynb
そして.txt
そして.md
そして.pdf
そして.csv
その他 - ストップワードの除去、句読点の除去、小文字への変換など、テキストの前処理を行います。
- ファイルとディレクトリの除外、自動生成ファイルのフィルタリング(例
*.pb.go
)またはテスト・カタログ。 - LLMのコンテキスト管理を最適化するために、圧縮テキストと非圧縮テキストのトークン数を報告する。
- LLMの処理効率を高めるため、出力テキストはXML形式でカプセル化される。
- 非圧縮テキストを自動的にクリップボードにコピーし、LLMプラットフォームに簡単にペーストできる。
- URLやパスの入力を簡略化するためのFlaskウェブインターフェースを提供します。
ヘルプの使用
設置プロセス
OneFileLLMはPython環境と関連する依存関係を必要とします。詳しいインストール手順は以下の通りです:
- クローン倉庫
ターミナルで以下のコマンドを実行し、OneFileLLM リポジトリをクローンします:git clone https://github.com/jimmc414/onefilellm.git cd onefilellm
- 仮想環境の構築(おすすめ)
依存関係の衝突を避けるために、仮想環境を作成することをお勧めします:python -m venv .venv source .venv/bin/activate # Windows 使用 .venv\Scripts\activate
- 依存関係のインストール
取り付けrequirements.txt
にリストされている依存関係はpip install -U -r requirements.txt
依存関係には以下が含まれる。
PyPDF2
(PDF処理)、BeautifulSoup
(ウェブクローラー)、tiktoken
(トークン数)、pyperclip
(クリップボード操作)、youtube-transcript-api
(YouTube書き起こし)など。 - GitHub アクセストークンの設定(オプション)
プライベートなGitHubリポジトリにアクセスするには、個人用のアクセストークンを設定する必要があります:- GitHub にログインし、[設定] > [開発者設定] > [Personal Access Token] を開きます。
- 新しいトークンを生成するには
repo
(個人倉庫)またはpublic_repo
(オープン倉庫)能力。 - トークンを環境変数に設定する:
export GITHUB_TOKEN=<your-token> # Windows 使用 set GITHUB_TOKEN=<your-token>
- インストールの確認
以下のコマンドを実行して、インストールが成功したかどうかを確認する:python onefilellm.py --help
ヘルプメッセージが表示された場合、インストールは正しく行われています。
走行モード
OneFileLLMは、コマンドラインとウェブインターフェースの両方をサポートしています:
- コマンドラインモード
メインスクリプトを実行し、URLまたはパスを手動で入力する:python onefilellm.py
またはコマンドラインでURL/パスを直接指定する:
python onefilellm.py https://github.com/jimmc414/onefilellm
- ウェブ・インターフェース・モード
FlaskのWebインターフェイスを実行します:python onefilellm.py --web
ブラウザを開き、次のサイトにアクセスする。
http://localhost:5000
URLまたはパスを入力し、"Process "をクリックすると出力される。
主な機能
OneFileLLMの核心は、複数のデータソースを1つのテキストに統合し、次のように出力することです。 uncompressed_output.txt
(非圧縮)、compressed_output.txt
(圧縮)と processed_urls.txt
(URLのリストをクロールする)。主な機能の使い方は以下の通り:
- GitHubリポジトリの処理
リポジトリのURLを入力する(例https://github.com/jimmc414/onefilellm
)、ツールはサポートされているファイルタイプを再帰的に取得する(例えば.py
そして.md
)に統合された。
例python onefilellm.py Enter URL or path: https://github.com/jimmc414/onefilellm
出力ファイルには、以下のXMLラッパー形式でリポジトリファイルの内容が含まれます:
<source type="github_repository"> <content> [文件内容] </content> </source>
テキストは自動的にクリップボードにコピーされます。
- GitHub プルリクエストや課題の処理
プルリクエストを入力する(例https://github.com/dear-github/dear-github/pull/102
)、またはissue URL (例えばhttps://github.com/isaacs/github/issues/1191
)、差分の詳細、コメント、リポジトリのコンテンツ全体を抽出します。
サンプル出力には、コードの変更点、コメント、関連ドキュメントが含まれています:<source type="github_pull_request"> <content> [差异详情和评论] </content> </source>
- ArXivまたはSci-Hubの論文を抽出する
ArXivのURLを入力する(例https://arxiv.org/abs/2401.14295
またはSci-Hub DOI/PMID(例.10.1053/j.ajkd.2017.08.002
もしかしたら29203127
)、PDFをテキストに変換するツールです。
例Enter URL or path: https://arxiv.org/abs/2401.14295
出力はXMLでラップされた論文のテキストである:
<source type="arxiv_paper"> <content> [论文内容] </content> </source>
- YouTubeの記録を入手する
YouTube動画のURLを入力する(例https://www.youtube.com/watch?v=KZ_NlnmPQYk
)、転写されたテキストを抽出するツール。
例Enter URL or path: https://www.youtube.com/watch?v=KZ_NlnmPQYk
出力はこうだ:
<source type="youtube_transcript"> <content> [转录内容] </content> </source>
- ウェブクローラー
ウェブページのURLを入力する(例https://llm.datasette.io/en/stable/
)、ツールはページをクロールし、ディープリンクを指定する(デフォルト)max_depth=2
).
例Enter URL or path: https://llm.datasette.io/en/stable/
出力は分割されたウェブテキストで、次のようにカプセル化される:
<source type="web_documentation"> <content> [网页内容] </content> </source>
- ローカルのファイルやディレクトリを扱う
ローカルファイルのパスを入力する(例C:\documents\report.pdf
)またはカタログ(例えばC:\projects\research
)、ツールはディレクトリからコンテンツを抽出したり、サポートされているファイルタイプを統合します。
例Enter URL or path: C:\projects\research
出力はXMLでラップされたカタログの内容である。
注目の機能操作
- XML出力カプセル化
すべての出力はXML形式であり、明確な構造を提供し、LLMの処理効率を向上させる。フォーマットは以下の通り:<source type="[source_type]"> <content> [内容] </content> </source>
この中には
source_type
を通してgithub_repository
そしてarxiv_paper
その他 - ファイルとディレクトリの除外
特定のファイルの除外をサポート(例*.pb.go
)やカタログ(例えばtests
)修正onefilellm.py
正鵠を得るexcluded_patterns
歌で応えるEXCLUDED_DIRS
リストexcluded_patterns = ['*.pb.go', '*_test.go'] EXCLUDED_DIRS = ['tests', 'mocks']
これにより、余計なコンテンツが減り、トークンの使用量が最適化される。
- トークン数
利用するtiktoken
圧縮テキストと非圧縮テキストのトークン数を計算し、コンソールに表示する:Uncompressed token count: 1234 Compressed token count: 567
LLMのコンテキストウィンドウにテキストが収まるようにします。
- テキスト前処理
このツールは、ストップワード、句読点を自動的に削除し、小文字に変換し、圧縮された出力を生成します。ユーザーはpreprocess_text
関数は処理ロジックをカスタマイズする。 - クリップボードの統合
非圧縮出力は自動的にクリップボードにコピーされ、LLMプラットフォーム(ChatGPT、Claudeなど)に直接ペーストされます。 - ウェブインタフェース
Flaskのインターフェイスは、ユーザーがURLやパスを入力し、出力ファイルをダウンロードしたり、テキストをコピーしたりする操作を簡素化します。技術者でないユーザーにも適しています。
カスタム設定
- 文書タイプ
修正allowed_extensions
リストで、サポートされているファイルタイプを追加または削除します:allowed_extensions = ['.py', '.txt', '.md', '.ipynb', '.csv']
- ウェブ・クロールの深さ
修正max_depth
パラメータのデフォルト値は2である:max_depth = 2
- Sci-Hubドメイン名
Sci-Hubドメイン名が利用できない場合は、次のように変更してください。onefilellm.py
のSci-Hub URLは
ほら
- 安定したインターネット接続を確保すること。YouTubeの書き起こしやSci-Hubへのアクセスは外部APIに依存しています。
- 大規模なリポジトリやウェブページは、より大きな出力を生成する可能性があります。トークン数を確認し、除外ルールを調整することをお勧めします。
- Sci-Hubへのアクセスは、地域の制限によりドメインの変更が必要になる場合があります。
- ファイル形式によっては(暗号化されたPDFなど)正しく処理されない場合があります。
アプリケーションシナリオ
- コード・レビュー
開発者は、GitHubリポジトリやプルリクエストのURLを入力し、コードとコメントを含むテキストを生成し、コードの品質や最適化の提案を分析するためにLLMを入力する。 - 論文の概要
研究者はArXivやSci-Hubの論文のURLを入力し、テキストを抽出し、LLMを入力してアブストラクトを作成したり、研究質問に答えたりする。 - ビデオ・コンテンツの照合
コンテンツ制作者は、YouTube動画のURLを入力して書き起こしテキストを取得したり、LLMを入力してキーポイントを抽出したり、スクリプトを生成したりする。 - ドキュメントの統合
テクニカルライターは、ウェブページやローカルディレクトリへのパスを入力し、文書コンテンツを統合し、LLMを入力してリライトしたりレポートを作成したりする。
品質保証
- OneFileLLMはどのようなファイル形式に対応していますか?
アジュバント.py
そして.ipynb
そして.txt
そして.md
そして.pdf
そして.csv
などを変更することができる。allowed_extensions
カスタマイズ。 - プライベート GitHub リポジトリにアクセスするにはどうすればよいですか?
GitHubパーソナルアクセストークンを環境変数に設定するGITHUB_TOKEN
必要repo
許可。 - 出力テキストサイズを小さくするには?
修正excluded_patterns
歌で応えるEXCLUDED_DIRS
余計なファイルを除外し、調整するmax_depth
ウェブクローリングの深さを制限する。 - XML出力の利点は何ですか?
XMLは明確に構造化されており、コンテンツのソースとタイプを表示し、複雑な入力を理解し処理するLLMの能力を向上させる。 - Sci-Hubで論文をダウンロードできない場合はどうすればよいですか?
ネットワーク接続をチェックし、DOI/PMIDが正しいことを確認する。onefilellm.py
のSci-Hubドメイン名は